Merge branch 'master' into core-updates

This commit is contained in:
Leo Famulari 2017-02-02 10:52:24 -05:00
commit e8c83d04e1
No known key found for this signature in database
GPG Key ID: 2646FA30BACA7F08
114 changed files with 3961 additions and 887 deletions

View File

@ -52,6 +52,8 @@
(eval . (put 'with-derivation-narinfo 'scheme-indent-function 1)) (eval . (put 'with-derivation-narinfo 'scheme-indent-function 1))
(eval . (put 'with-derivation-substitute 'scheme-indent-function 2)) (eval . (put 'with-derivation-substitute 'scheme-indent-function 2))
(eval . (put 'mlambda 'scheme-indent-function 1))
(eval . (put 'mlambdaq 'scheme-indent-function 1))
(eval . (put 'syntax-parameterize 'scheme-indent-function 1)) (eval . (put 'syntax-parameterize 'scheme-indent-function 1))
(eval . (put 'with-monad 'scheme-indent-function 1)) (eval . (put 'with-monad 'scheme-indent-function 1))
(eval . (put 'mbegin 'scheme-indent-function 1)) (eval . (put 'mbegin 'scheme-indent-function 1))

View File

@ -40,11 +40,12 @@ Marius Bakke <mbakke@fastmail.com> <m.bakke@warwick.ac.uk>
Mathieu Lirzin <mthl@gnu.org> <mthl@openmailbox.org> Mathieu Lirzin <mthl@gnu.org> <mthl@openmailbox.org>
Mathieu Lirzin <mthl@gnu.org> <mathieu.lirzin@openmailbox.org> Mathieu Lirzin <mthl@gnu.org> <mathieu.lirzin@openmailbox.org>
Nikita Karetnikov <nikita@karetnikov.org> <nikita.karetnikov@gmail.com> Nikita Karetnikov <nikita@karetnikov.org> <nikita.karetnikov@gmail.com>
ng0 <ng0@libertad.pw> <ng0@we.make.ritual.n0.is> ng0 <contact.ng0@cryptolab.net>
ng0 <ng0@libertad.pw> <ngillmann@runbox.com> ng0 <contact.ng0@cryptolab.net> <ng0@we.make.ritual.n0.is>
ng0 <ng0@libertad.pw> <niasterisk@grrlz.net> ng0 <contact.ng0@cryptolab.net> <ngillmann@runbox.com>
ng0 <ng0@libertad.pw> <ng@niasterisk.space> ng0 <contact.ng0@cryptolab.net> <niasterisk@grrlz.net>
ng0 <ng0@libertad.pw> ng0 <contact.ng0@cryptolab.net> <ng@niasterisk.space>
ng0 <contact.ng0@cryptolab.net> <ng0@libertad.pw>
Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public01@thebird.nl> Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public01@thebird.nl>
Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public12@thebird.nl> Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public12@thebird.nl>
Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public12@email> Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public12@email>

View File

@ -3,7 +3,7 @@
#+TITLE: Hacking GNU Guix and Its Incredible Distro #+TITLE: Hacking GNU Guix and Its Incredible Distro
Copyright © 2012, 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org> Copyright © 2012, 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> Copyright © 2015, 2017 Mathieu Lirzin <mthl@gnu.org>
Copyright © 2017 Leo Famulari <leo@famulari.name> Copyright © 2017 Leo Famulari <leo@famulari.name>
Copying and distribution of this file, with or without modification, Copying and distribution of this file, with or without modification,
@ -14,7 +14,7 @@ Copyright © 2017 Leo Famulari <leo@famulari.name>
See the manual for useful hacking informations, either by running See the manual for useful hacking informations, either by running
info -f doc/guix.info "(guix) Contributing" info -f doc/guix.info "Contributing"
or by checking the [[http://www.gnu.org/software/guix/manual/guix.html#Contributing][web copy of the manual]]. or by checking the [[http://www.gnu.org/software/guix/manual/guix.html#Contributing][web copy of the manual]].

View File

@ -39,6 +39,7 @@ MODULES = \
guix/pk-crypto.scm \ guix/pk-crypto.scm \
guix/pki.scm \ guix/pki.scm \
guix/combinators.scm \ guix/combinators.scm \
guix/memoization.scm \
guix/utils.scm \ guix/utils.scm \
guix/sets.scm \ guix/sets.scm \
guix/modules.scm \ guix/modules.scm \

2
README
View File

@ -42,7 +42,7 @@ When `--disable-daemon' was passed, you instead need the following:
See the manual for the installation instructions, either by running See the manual for the installation instructions, either by running
info -f doc/guix.info "(guix) Installation" info -f doc/guix.info "Installation"
or by checking the [[http://www.gnu.org/software/guix/manual/guix.html#Installation][web copy of the manual]]. or by checking the [[http://www.gnu.org/software/guix/manual/guix.html#Installation][web copy of the manual]].

View File

@ -452,6 +452,7 @@ If your host distro uses the Upstart init system:
@example @example
# ln -s ~root/.guix-profile/lib/upstart/system/guix-daemon.conf /etc/init/ # ln -s ~root/.guix-profile/lib/upstart/system/guix-daemon.conf /etc/init/
# initctl reload-configuration
# start guix-daemon # start guix-daemon
@end example @end example
@ -2336,7 +2337,9 @@ instance, when user @code{root} runs @command{guix pull}, this has no
effect on the version of Guix that user @code{alice} sees, and vice effect on the version of Guix that user @code{alice} sees, and vice
versa@footnote{Under the hood, @command{guix pull} updates the versa@footnote{Under the hood, @command{guix pull} updates the
@file{~/.config/guix/latest} symbolic link to point to the latest Guix, @file{~/.config/guix/latest} symbolic link to point to the latest Guix,
and the @command{guix} command loads code from there.}. and the @command{guix} command loads code from there. Currently, the
only way to roll back an invocation of @command{guix pull} is to
manually update this symlink to point to the previous Guix.}.
The @command{guix pull} command is usually invoked with no arguments, The @command{guix pull} command is usually invoked with no arguments,
but it supports the following options: but it supports the following options:
@ -3290,6 +3293,49 @@ specified with the @code{#:glib} parameter.
Both phases are executed after the @code{install} phase. Both phases are executed after the @code{install} phase.
@end defvr @end defvr
@defvr {Scheme Variable} ocaml-build-system
This variable is exported by @code{(guix build-sytem ocaml)}. It implements
a build procedure for @uref{https://ocaml.org, OCaml} packages, which consists
of choosing the correct set of commands to run for each package. OCaml
packages can expect many different commands to be run. This build system will
try some of them.
When the package has a @file{setup.ml} file present at the top-level, it will
run @code{ocaml setup.ml -configure}, @code{ocaml setup.ml -build} and
@code{ocaml setup.ml -install}. The build system will assume that this file
was generated by @uref{http://oasis.forge.ocamlcore.org/, OASIS} and will take
care of setting the prefix and enabling tests if they are not disabled. You
can pass configure and build flags with the @code{#:configure-flags} and
@code{#:build-flags}. The @code{#:test-flags} key can be passed to change the
set of flags used to enable tests. The @code{#:use-make?} key can be used to
bypass this system in the build and install phases.
When the package has a @file{configure} file, it is assumed that it is a
hand-made configure script that requires a different argument format than
in the @code{gnu-build-system}. You can add more flags with the
@code{#:configure-flags} key.
When the package has a @file{Makefile} file (or @code{#:use-make?} is
@code{#t}), it will be used and more flags can be passed to the build and
install phases with the @code{#:make-flags} key.
Finally, some packages do not have these files and use a somewhat standard
location for its build system. In that case, the build system will run
@code{ocaml pkg/pkg.ml} or @code{ocaml pkg/build.ml} and take care of
providing the path to the required findlib module. Additional flags can
be passed via the @code{#:build-flags} key. Install is taken care of by
@command{opam-installer}. In this case, the @code{opam} package must
be added to the @code{native-inputs} field of the package definition.
Note that most OCaml packages assume they will be installed in the same
directory as OCaml, which is not what we want in guix. In particular, they
will install @file{.so} files in their module's directory, which is usually
fine because it is in the OCaml compiler directory. In guix though, these
libraries cannot be found and we use @code{CAML_LD_LIBRARY_PATH}. This
variable points to @file{lib/ocaml/site-lib/stubslibs} and this is where
@file{.so} libraries should be installed.
@end defvr
@defvr {Scheme Variable} python-build-system @defvr {Scheme Variable} python-build-system
This variable is exported by @code{(guix build-system python)}. It This variable is exported by @code{(guix build-system python)}. It
implements the more or less standard build procedure used by Python implements the more or less standard build procedure used by Python
@ -4510,7 +4556,7 @@ guix build --quiet --keep-going \
@var{package-or-derivation} may be either the name of a package found in @var{package-or-derivation} may be either the name of a package found in
the software distribution such as @code{coreutils} or the software distribution such as @code{coreutils} or
@code{coreutils-8.20}, or a derivation such as @code{coreutils@@8.20}, or a derivation such as
@file{/gnu/store/@dots{}-coreutils-8.19.drv}. In the former case, a @file{/gnu/store/@dots{}-coreutils-8.19.drv}. In the former case, a
package with the corresponding name (and optionally version) is searched package with the corresponding name (and optionally version) is searched
for among the GNU distribution modules (@pxref{Package Modules}). for among the GNU distribution modules (@pxref{Package Modules}).
@ -5670,7 +5716,7 @@ single output for a package that could easily be split (@pxref{Packages
with Multiple Outputs}). Such are the typical issues that with Multiple Outputs}). Such are the typical issues that
@command{guix size} can highlight. @command{guix size} can highlight.
The command can be passed a package specification such as @code{gcc-4.8} The command can be passed a package specification such as @code{gcc@@4.8}
or @code{guile:debug}, or a file name in the store. Consider this or @code{guile:debug}, or a file name in the store. Consider this
example: example:
@ -7017,6 +7063,26 @@ mkswap /dev/sda2
swapon /dev/sda2 swapon /dev/sda2
@end example @end example
Alternatively, you may use a swap file. For example, assuming that in
the new system you want to use the file @file{/swapfile} as a swap file,
you would run@footnote{This example will work for many types of file
systems (e.g., ext4). However, for copy-on-write file systems (e.g.,
btrfs), the required steps may be different. For details, see the
manual pages for @command{mkswap} and @command{swapon}.}:
@example
# This is 10 GiB of swap space. Adjust "count" to change the size.
dd if=/dev/zero of=/mnt/swapfile bs=1MiB count=10240
# For security, make the file readable and writable only by root.
chmod 600 /mnt/swapfile
mkswap /mnt/swapfile
swapon /mnt/swapfile
@end example
Note that if you have encrypted the root partition and created a swap
file in its file system as described above, then the encryption also
protects the swap file, just like any other file in that file system.
@node Proceeding with the Installation @node Proceeding with the Installation
@subsection Proceeding with the Installation @subsection Proceeding with the Installation
@ -7119,8 +7185,8 @@ disk image, follow these steps:
@enumerate @enumerate
@item @item
First, retrieve the GuixSD installation image as described previously First, retrieve and decompress the GuixSD installation image as
(@pxref{USB Stick Installation}). described previously (@pxref{USB Stick Installation}).
@item @item
Create a disk image that will hold the installed system. To make a Create a disk image that will hold the installed system. To make a
@ -7137,7 +7203,7 @@ Boot the USB installation image in an VM:
@example @example
qemu-system-x86_64 -m 1024 -smp 1 \ qemu-system-x86_64 -m 1024 -smp 1 \
-net default -net nic,model=virtio -boot menu=on \ -net user -net nic,model=virtio -boot menu=on \
-drive file=guixsd.img \ -drive file=guixsd.img \
-drive file=guixsd-usb-install-@value{VERSION}.@var{system} -drive file=guixsd-usb-install-@value{VERSION}.@var{system}
@end example @end example
@ -7470,9 +7536,12 @@ A list of file systems. @xref{File Systems}.
@item @code{swap-devices} (default: @code{'()}) @item @code{swap-devices} (default: @code{'()})
@cindex swap devices @cindex swap devices
A list of strings identifying devices to be used for ``swap space'' A list of strings identifying devices or files to be used for ``swap
(@pxref{Memory Concepts,,, libc, The GNU C Library Reference Manual}). space'' (@pxref{Memory Concepts,,, libc, The GNU C Library Reference
For example, @code{'("/dev/sda3")}. Manual}). For example, @code{'("/dev/sda3")} or @code{'("/swapfile")}.
It is possible to specify a swap file in a file system on a mapped
device, provided that the necessary device mapping and file system are
also specified. @xref{Mapped Devices} and @ref{File Systems}.
@item @code{users} (default: @code{%base-user-accounts}) @item @code{users} (default: @code{%base-user-accounts})
@itemx @code{groups} (default: @var{%base-groups}) @itemx @code{groups} (default: @var{%base-groups})
@ -7815,6 +7884,13 @@ and use it as follows:
(type luks-device-mapping)) (type luks-device-mapping))
@end example @end example
@cindex swap encryption
It is also desirable to encrypt swap space, since swap space may contain
sensitive data. One way to accomplish that is to use a swap file in a
file system on a device mapped via LUKS encryption. In this way, the
swap file is encrypted because the entire device is encrypted.
@xref{Preparing for Installation,,Disk Partitioning}, for an example.
A RAID device formed of the partitions @file{/dev/sda1} and @file{/dev/sdb1} A RAID device formed of the partitions @file{/dev/sda1} and @file{/dev/sdb1}
may be declared as follows: may be declared as follows:
@ -8742,11 +8818,21 @@ Return a service that runs @var{dhcp}, a Dynamic Host Configuration
Protocol (DHCP) client, on all the non-loopback network interfaces. Protocol (DHCP) client, on all the non-loopback network interfaces.
@end deffn @end deffn
@defvr {Scheme Variable} static-networking-service-type
This is the type for statically-configured network interfaces.
@c TODO Document <static-networking> data structures.
@end defvr
@deffn {Scheme Procedure} static-networking-service @var{interface} @var{ip} @ @deffn {Scheme Procedure} static-networking-service @var{interface} @var{ip} @
[#:netmask #f] [#:gateway #f] [#:name-servers @code{'()}] [#:netmask #f] [#:gateway #f] [#:name-servers @code{'()}]
Return a service that starts @var{interface} with address @var{ip}. If Return a service that starts @var{interface} with address @var{ip}. If
@var{netmask} is true, use it as the network mask. If @var{gateway} is true, @var{netmask} is true, use it as the network mask. If @var{gateway} is true,
it must be a string specifying the default network gateway. it must be a string specifying the default network gateway.
This procedure can be called several times, one for each network
interface of interest. Behind the scenes what it does is extend
@code{static-networking-service-type} with additional network interfaces
to handle.
@end deffn @end deffn
@cindex wicd @cindex wicd
@ -9288,6 +9374,7 @@ makes the good ol' XlockMore usable.
@node Printing Services @node Printing Services
@subsubsection Printing Services @subsubsection Printing Services
@cindex printer support with CUPS
The @code{(gnu services cups)} module provides a Guix service definition The @code{(gnu services cups)} module provides a Guix service definition
for the CUPS printing service. To add printer support to a GuixSD for the CUPS printing service. To add printer support to a GuixSD
system, add a @code{cups-service} to the operating system definition: system, add a @code{cups-service} to the operating system definition:
@ -9308,13 +9395,17 @@ as GNOME's printer configuration services. By default, configuring a
CUPS service will generate a self-signed certificate if needed, for CUPS service will generate a self-signed certificate if needed, for
secure connections to the print server. secure connections to the print server.
One way you might want to customize CUPS is to enable or disable the web Suppose you want to enable the Web interface of CUPS and also add
interface. You can do that directly, like this: support for HP printers @i{via} the @code{hplip} package. You can do
that directly, like this (you need to use the @code{(gnu packages cups)}
module):
@example @example
(service cups-service-type (service cups-service-type
(cups-configuration (cups-configuration
(web-interface? #f))) (web-interface? #t)
(extensions
(list cups-filters hplip))))
@end example @end example
The available configuration parameters follow. Each parameter The available configuration parameters follow. Each parameter
@ -13055,6 +13146,10 @@ from source.
@item @code{one-shot?} (default: @code{#f}) @item @code{one-shot?} (default: @code{#f})
Only evaluate specifications and build derivations once. Only evaluate specifications and build derivations once.
@item @code{load-path} (default: @code{'()})
This allows users to define their own packages and make them visible to
cuirass as in @command{guix build} command.
@item @code{cuirass} (default: @code{cuirass}) @item @code{cuirass} (default: @code{cuirass})
The Cuirass package to use. The Cuirass package to use.
@end table @end table

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -25,6 +25,7 @@
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:export (activate-users+groups #:export (activate-users+groups
activate-user-home
activate-etc activate-etc
activate-setuid-programs activate-setuid-programs
activate-/bin/sh activate-/bin/sh
@ -215,7 +216,7 @@ numeric gid or #f."
#:supplementary-groups supplementary-groups #:supplementary-groups supplementary-groups
#:comment comment #:comment comment
#:home home #:home home
#:create-home? create-home? #:create-home? (and create-home? system?)
#:shell shell #:shell shell
#:password password) #:password password)
@ -263,6 +264,20 @@ numeric gid or #f."
(((names . _) ...) (((names . _) ...)
names))))) names)))))
(define (activate-user-home users)
"Create and populate the home directory of USERS, a list of tuples, unless
they already exist."
(define ensure-user-home
(match-lambda
((name uid group supplementary-groups comment home create-home?
shell password system?)
(unless (or (not home) (directory-exists? home))
(mkdir-p home)
(unless system?
(copy-account-skeletons home))))))
(for-each ensure-user-home users))
(define (activate-etc etc) (define (activate-etc etc)
"Install ETC, a directory in the store, as the source of static files for "Install ETC, a directory in the store, as the source of static files for
/etc." /etc."

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017 David Craven <david@craven.ch> ;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -72,22 +72,33 @@
"Bind-mount SOURCE at TARGET." "Bind-mount SOURCE at TARGET."
(mount source target "" MS_BIND)) (mount source target "" MS_BIND))
(define (seek* fd/port offset whence)
"Like 'seek' but return -1 instead of throwing to 'system-error' upon
EINVAL. This makes it easier to catch cases like OFFSET being too large for
FD/PORT."
(catch 'system-error
(lambda ()
(seek fd/port offset whence))
(lambda args
(if (= EINVAL (system-error-errno args))
-1
(apply throw args)))))
(define (read-superblock device offset size magic?) (define (read-superblock device offset size magic?)
"Read a superblock of SIZE from OFFSET and DEVICE. Return the raw "Read a superblock of SIZE from OFFSET and DEVICE. Return the raw
superblock on success, and #f if no valid superblock was found. MAGIC? superblock on success, and #f if no valid superblock was found. MAGIC?
takes a bytevector and returns #t when it's a valid superblock." takes a bytevector and returns #t when it's a valid superblock."
(call-with-input-file device (call-with-input-file device
(lambda (port) (lambda (port)
(seek port offset SEEK_SET) (and (= offset (seek* port offset SEEK_SET))
(let ((block (make-bytevector size)))
(let ((block (make-bytevector size))) (match (get-bytevector-n! port block 0 (bytevector-length block))
(match (get-bytevector-n! port block 0 (bytevector-length block)) ((? eof-object?)
((? eof-object?) #f)
#f) ((? number? len)
((? number? len) (and (= len (bytevector-length block))
(and (= len (bytevector-length block)) (and (magic? block)
(and (magic? block) block)))))))))
block))))))))
(define (sub-bytevector bv start size) (define (sub-bytevector bv start size)
"Return a copy of the SIZE bytes of BV starting from offset START." "Return a copy of the SIZE bytes of BV starting from offset START."

View File

@ -576,6 +576,7 @@ dist_patch_DATA = \
%D%/packages/patches/gd-fix-truecolor-format-correction.patch \ %D%/packages/patches/gd-fix-truecolor-format-correction.patch \
%D%/packages/patches/gegl-CVE-2012-4433.patch \ %D%/packages/patches/gegl-CVE-2012-4433.patch \
%D%/packages/patches/geoclue-config.patch \ %D%/packages/patches/geoclue-config.patch \
%D%/packages/patches/ghc-dont-pass-linker-flags-via-response-files.patch \
%D%/packages/patches/ghostscript-CVE-2013-5653.patch \ %D%/packages/patches/ghostscript-CVE-2013-5653.patch \
%D%/packages/patches/ghostscript-CVE-2015-3228.patch \ %D%/packages/patches/ghostscript-CVE-2015-3228.patch \
%D%/packages/patches/ghostscript-CVE-2016-7976.patch \ %D%/packages/patches/ghostscript-CVE-2016-7976.patch \
@ -630,7 +631,6 @@ dist_patch_DATA = \
%D%/packages/patches/hdf-eos5-fortrantests.patch \ %D%/packages/patches/hdf-eos5-fortrantests.patch \
%D%/packages/patches/higan-remove-march-native-flag.patch \ %D%/packages/patches/higan-remove-march-native-flag.patch \
%D%/packages/patches/hop-linker-flags.patch \ %D%/packages/patches/hop-linker-flags.patch \
%D%/packages/patches/httpd-CVE-2016-8740.patch \
%D%/packages/patches/hydra-disable-darcs-test.patch \ %D%/packages/patches/hydra-disable-darcs-test.patch \
%D%/packages/patches/hypre-doc-tables.patch \ %D%/packages/patches/hypre-doc-tables.patch \
%D%/packages/patches/hypre-ldflags.patch \ %D%/packages/patches/hypre-ldflags.patch \
@ -656,6 +656,8 @@ dist_patch_DATA = \
%D%/packages/patches/laby-make-install.patch \ %D%/packages/patches/laby-make-install.patch \
%D%/packages/patches/lcms-fix-out-of-bounds-read.patch \ %D%/packages/patches/lcms-fix-out-of-bounds-read.patch \
%D%/packages/patches/ldc-disable-tests.patch \ %D%/packages/patches/ldc-disable-tests.patch \
%D%/packages/patches/ldc-1.1.0-disable-dmd-tests.patch \
%D%/packages/patches/ldc-1.1.0-disable-phobos-tests.patch \
%D%/packages/patches/liba52-enable-pic.patch \ %D%/packages/patches/liba52-enable-pic.patch \
%D%/packages/patches/liba52-link-with-libm.patch \ %D%/packages/patches/liba52-link-with-libm.patch \
%D%/packages/patches/liba52-set-soname.patch \ %D%/packages/patches/liba52-set-soname.patch \
@ -666,6 +668,11 @@ dist_patch_DATA = \
%D%/packages/patches/libdrm-symbol-check.patch \ %D%/packages/patches/libdrm-symbol-check.patch \
%D%/packages/patches/libepoxy-gl-null-checks.patch \ %D%/packages/patches/libepoxy-gl-null-checks.patch \
%D%/packages/patches/libevent-dns-tests.patch \ %D%/packages/patches/libevent-dns-tests.patch \
%D%/packages/patches/libevent-2.0-evdns-fix-remote-stack-overread.patch \
%D%/packages/patches/libevent-2.0-evdns-fix-searching-empty-hostnames.patch \
%D%/packages/patches/libevent-2.0-evutil-fix-buffer-overflow.patch \
%D%/packages/patches/libevent-2.1-dns-tests.patch \
%D%/packages/patches/libevent-2.1-skip-failing-test.patch \
%D%/packages/patches/libextractor-ffmpeg-3.patch \ %D%/packages/patches/libextractor-ffmpeg-3.patch \
%D%/packages/patches/libjxr-fix-function-signature.patch \ %D%/packages/patches/libjxr-fix-function-signature.patch \
%D%/packages/patches/libjxr-fix-typos.patch \ %D%/packages/patches/libjxr-fix-typos.patch \
@ -772,6 +779,7 @@ dist_patch_DATA = \
%D%/packages/patches/ocaml-CVE-2015-8869.patch \ %D%/packages/patches/ocaml-CVE-2015-8869.patch \
%D%/packages/patches/ocaml-Add-a-.file-directive.patch \ %D%/packages/patches/ocaml-Add-a-.file-directive.patch \
%D%/packages/patches/ocaml-findlib-make-install.patch \ %D%/packages/patches/ocaml-findlib-make-install.patch \
%D%/packages/patches/omake-fix-non-determinism.patch \
%D%/packages/patches/ola-readdir-r.patch \ %D%/packages/patches/ola-readdir-r.patch \
%D%/packages/patches/openexr-missing-samples.patch \ %D%/packages/patches/openexr-missing-samples.patch \
%D%/packages/patches/openjpeg-CVE-2016-5157.patch \ %D%/packages/patches/openjpeg-CVE-2016-5157.patch \
@ -949,6 +957,8 @@ dist_patch_DATA = \
%D%/packages/patches/xfce4-panel-plugins.patch \ %D%/packages/patches/xfce4-panel-plugins.patch \
%D%/packages/patches/xfce4-session-fix-xflock4.patch \ %D%/packages/patches/xfce4-session-fix-xflock4.patch \
%D%/packages/patches/xfce4-settings-defaults.patch \ %D%/packages/patches/xfce4-settings-defaults.patch \
%D%/packages/patches/xinetd-fix-fd-leak.patch \
%D%/packages/patches/xinetd-CVE-2013-4342.patch \
%D%/packages/patches/xmodmap-asprintf.patch \ %D%/packages/patches/xmodmap-asprintf.patch \
%D%/packages/patches/libyaml-CVE-2014-9130.patch \ %D%/packages/patches/libyaml-CVE-2014-9130.patch \
%D%/packages/patches/zathura-plugindir-environment-variable.patch %D%/packages/patches/zathura-plugindir-environment-variable.patch

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
@ -24,6 +24,7 @@
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix ui) #:use-module (guix ui)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix memoization)
#:use-module (guix combinators) #:use-module (guix combinators)
#:use-module ((guix build utils) #:use-module ((guix build utils)
#:select ((package-name->name+version #:select ((package-name->name+version
@ -234,28 +235,27 @@ decreasing version order."
matching))))) matching)))))
(define find-newest-available-packages (define find-newest-available-packages
(memoize (mlambda ()
(lambda () "Return a vhash keyed by package names, and with
"Return a vhash keyed by package names, and with
associated values of the form associated values of the form
(newest-version newest-package ...) (newest-version newest-package ...)
where the preferred package is listed first." where the preferred package is listed first."
;; FIXME: Currently, the preferred package is whichever one ;; FIXME: Currently, the preferred package is whichever one
;; was found last by 'fold-packages'. Find a better solution. ;; was found last by 'fold-packages'. Find a better solution.
(fold-packages (lambda (p r) (fold-packages (lambda (p r)
(let ((name (package-name p)) (let ((name (package-name p))
(version (package-version p))) (version (package-version p)))
(match (vhash-assoc name r) (match (vhash-assoc name r)
((_ newest-so-far . pkgs) ((_ newest-so-far . pkgs)
(case (version-compare version newest-so-far) (case (version-compare version newest-so-far)
((>) (vhash-cons name `(,version ,p) r)) ((>) (vhash-cons name `(,version ,p) r))
((=) (vhash-cons name `(,version ,p ,@pkgs) r)) ((=) (vhash-cons name `(,version ,p ,@pkgs) r))
((<) r))) ((<) r)))
(#f (vhash-cons name `(,version ,p) r))))) (#f (vhash-cons name `(,version ,p) r)))))
vlist-null)))) vlist-null)))
(define (find-best-packages-by-name name version) (define (find-best-packages-by-name name version)
"If version is #f, return the list of packages named NAME with the highest "If version is #f, return the list of packages named NAME with the highest

View File

@ -611,14 +611,14 @@ tools: server, client, and relay agent.")
(define-public libpcap (define-public libpcap
(package (package
(name "libpcap") (name "libpcap")
(version "1.7.4") (version "1.8.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://www.tcpdump.org/release/libpcap-" (uri (string-append "http://www.tcpdump.org/release/libpcap-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1c28ykkizd7jqgzrfkg7ivqjlqs9p6lygp26bsw2i0z8hwhi3lvs")))) "07jlhc66z76dipj4j5v3dig8x6h3k6cb36kmnmpsixf3zmlvqgb7"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("bison" ,bison) ("flex" ,flex))) (native-inputs `(("bison" ,bison) ("flex" ,flex)))
(arguments '(#:configure-flags '("--with-pcap=linux") (arguments '(#:configure-flags '("--with-pcap=linux")
@ -636,14 +636,24 @@ network statistics collection, security monitoring, network debugging, etc.")
(define-public tcpdump (define-public tcpdump
(package (package
(name "tcpdump") (name "tcpdump")
(version "4.7.4") (version "4.9.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://www.tcpdump.org/release/tcpdump-" ;; We use this Debian URL while the upstream URL is still
version ".tar.gz")) ;; officially private. This is the result of a botched
;; coordinated release of tcpdump 4.9.0. I verified with
;; the tcpdump maintainers that the upstream URL provides
;; the same data as this Debian URL.
(uri
(list
(string-append "http://http.debian.net/debian/pool/main/t/"
name "/" name "_" version ".orig.tar.gz")
(string-append "http://www.tcpdump.org/release/tcpdump-"
version ".tar.gz")))
(file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1byr8w6grk08fsq0444jmcz9ar89lq9nf4mjq2cny0w9k8k21rbb")))) "0pjsxsy8l71i813sa934cwf1ryp9xbr7nxwsvnzavjdirchq3sga"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("libpcap" ,libpcap) (inputs `(("libpcap" ,libpcap)
("openssl" ,openssl))) ("openssl" ,openssl)))

View File

@ -202,7 +202,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
(define-public giac-xcas (define-public giac-xcas
(package (package
(name "giac-xcas") (name "giac-xcas")
(version "1.2.2-103") (version "1.2.3-19")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
;; "~parisse/giac" is not used because the maintainer regularly ;; "~parisse/giac" is not used because the maintainer regularly
@ -214,7 +214,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
"source/giac_" version ".tar.gz")) "source/giac_" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1qrhjw2sdvyv2x8fqs9isqv8rgldn448gfxbi7zbva8m5va5b3z1")))) "0asynsj0xcfdjn0vkyxdgdy3hfpr6gc9f92xxa1rmn7clbqmlk1y"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:phases `(#:phases

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -22,12 +22,14 @@
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages linux)) #:use-module (gnu packages linux)
#:use-module (gnu packages maths)
#:use-module (gnu packages python))
(define-public fio (define-public fio
(package (package
(name "fio") (name "fio")
(version "2.16") (version "2.17")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -35,22 +37,47 @@
"fio-" version ".tar.bz2")) "fio-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1v5n5hq500aidwfzmbm3k5d3mhh6ffwbgzq7nys838azga4xd3bx")))) "1kxgad5k2m7y637g3kq8jmhwzlg3c64w9ky7066c5l09bwb6l58h"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:tests? #f ; No tests. '(#:tests? #f ; No tests.
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after
'unpack 'patch-paths
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(gnuplot (string-append (assoc-ref inputs "gnuplot")
"/bin/gnuplot")))
(substitute* "tools/plot/fio2gnuplot"
(("/usr/share/fio") (string-append out "/share/fio"))
;; FIXME (upstream): The 'gnuplot' executable is used inline
;; in various os.system() calls mixed with *.gnuplot filenames.
(("; do gnuplot") (string-append "; do " gnuplot))
(("gnuplot mymath") (string-append gnuplot " mymath"))
(("gnuplot mygraph") (string-append gnuplot " mygraph")))
#t)))
(replace 'configure (replace 'configure
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
;; The configure script doesn't understand some of the ;; The configure script doesn't understand some of the
;; GNU options, so we can't use #:configure-flags. ;; GNU options, so we can't use #:configure-flags.
(let ((out (assoc-ref outputs "out"))) (let ((out (assoc-ref outputs "out")))
(zero? (system* "./configure" (zero? (system* "./configure"
(string-append "--prefix=" out))))))))) (string-append "--prefix=" out))))))
(add-after
'install 'wrap-python-scripts
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/bin/fiologparser_hist.py")
`("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))
#t))))))
(inputs (inputs
`(("libaio" ,libaio) `(("libaio" ,libaio)
("zlib" ,zlib))) ("gnuplot" ,gnuplot)
("zlib" ,zlib)
("python-numpy" ,python2-numpy)
("python-pandas" ,python2-pandas)
("python" ,python-2)))
(home-page "https://github.com/axboe/fio") (home-page "https://github.com/axboe/fio")
(synopsis "Flexible I/O tester") (synopsis "Flexible I/O tester")
(description (description

View File

@ -3501,7 +3501,6 @@ that a read originated from a particular isoform.")
(version "3.8.1551") (version "3.8.1551")
(source (origin (source (origin
(method url-fetch/tarbomb) (method url-fetch/tarbomb)
(file-name (string-append name "-" version))
(uri (string-append (uri (string-append
"http://www.drive5.com/muscle/muscle_src_" "http://www.drive5.com/muscle/muscle_src_"
version ".tar.gz")) version ".tar.gz"))
@ -6325,7 +6324,8 @@ names in their natural, rather than lexicographic, order.")
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-limma" ,r-limma) `(("r-limma" ,r-limma)
("r-locfit" ,r-locfit))) ("r-locfit" ,r-locfit)
("r-statmod" ,r-statmod))) ;for estimateDisp
(home-page "http://bioinf.wehi.edu.au/edgeR") (home-page "http://bioinf.wehi.edu.au/edgeR")
(synopsis "EdgeR does empirical analysis of digital gene expression data") (synopsis "EdgeR does empirical analysis of digital gene expression data")
(description "This package can do differential expression analysis of (description "This package can do differential expression analysis of
@ -6885,6 +6885,37 @@ dependencies between GO terms can be implemented and applied.")
genome data packages and support for efficient SNP representation.") genome data packages and support for efficient SNP representation.")
(license license:artistic2.0))) (license license:artistic2.0)))
(define-public r-bsgenome-hsapiens-1000genomes-hs37d5
(package
(name "r-bsgenome-hsapiens-1000genomes-hs37d5")
(version "0.99.1")
(source (origin
(method url-fetch)
;; We cannot use bioconductor-uri here because this tarball is
;; located under "data/annotation/" instead of "bioc/".
(uri (string-append "http://www.bioconductor.org/packages/"
"release/data/annotation/src/contrib/"
"BSgenome.Hsapiens.1000genomes.hs37d5_"
version ".tar.gz"))
(sha256
(base32
"1cg0g5fqmsvwyw2p9hp2yy4ilk21jkbbrnpgqvb5c36ihjwvc7sr"))))
(properties
`((upstream-name . "BSgenome.Hsapiens.1000genomes.hs37d5")))
(build-system r-build-system)
;; As this package provides little more than a very large data file it
;; doesn't make sense to build substitutes.
(arguments `(#:substitutable? #f))
(propagated-inputs
`(("r-bsgenome" ,r-bsgenome)))
(home-page
"http://www.bioconductor.org/packages/BSgenome.Hsapiens.1000genomes.hs37d5/")
(synopsis "Full genome sequences for Homo sapiens")
(description
"This package provides full genome sequences for Homo sapiens from
1000genomes phase2 reference genome sequence (hs37d5), based on NCBI GRCh37.")
(license license:artistic2.0)))
(define-public r-impute (define-public r-impute
(package (package
(name "r-impute") (name "r-impute")
@ -7769,6 +7800,71 @@ for DNA and protein sequences. This package supports several sequence
kernels, including: gkmSVM, kmer-SVM, mismatch kernel and wildcard kernel.") kernels, including: gkmSVM, kmer-SVM, mismatch kernel and wildcard kernel.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public r-tximport
(package
(name "r-tximport")
(version "1.2.0")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "tximport" version))
(sha256
(base32
"1k5a7dad6zqg936s17f6cmwgqp11x24z9zhxndsgwbscgpyhpcb0"))))
(build-system r-build-system)
(home-page "http://bioconductor.org/packages/tximport")
(synopsis "Import and summarize transcript-level estimates for gene-level analysis")
(description
"This package provides tools to import transcript-level abundance,
estimated counts and transcript lengths, and to summarize them into matrices
for use with downstream gene-level analysis packages. Average transcript
length, weighted by sample-specific transcript abundance estimates, is
provided as a matrix which can be used as an offset for different expression
of gene-level counts.")
(license license:gpl2+)))
(define-public r-rhdf5
(package
(name "r-rhdf5")
(version "2.18.0")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "rhdf5" version))
(sha256
(base32
"0pb04li55ysag30s7rap7nnivc0rqmgsmpj43kin0rxdabfn1w0k"))))
(build-system r-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'unpack-smallhdf5
(lambda* (#:key outputs #:allow-other-keys)
(system* "tar" "-xzvf"
"src/hdf5source/hdf5small.tgz" "-C" "src/" )
(substitute* "src/Makevars"
(("^.*cd hdf5source &&.*$") "")
(("^.*gunzip -dc hdf5small.tgz.*$") "")
(("^.*rm -rf hdf5.*$") "")
(("^.*mv hdf5source/hdf5 ..*$") ""))
(substitute* "src/hdf5/configure"
(("/bin/mv") "mv"))
#t)))))
(propagated-inputs
`(("r-zlibbioc" ,r-zlibbioc)))
(inputs
`(("perl" ,perl)
("zlib" ,zlib)))
(home-page "http://bioconductor.org/packages/rhdf5")
(synopsis "HDF5 interface to R")
(description
"This R/Bioconductor package provides an interface between HDF5 and R.
HDF5's main features are the ability to store and access very large and/or
complex datasets and a wide variety of metadata on mass storage (disk) through
a completely portable file format. The rhdf5 package is thus suited for the
exchange of large and/or complex datasets between R and other software
package, and for letting R applications work on datasets that are larger than
the available RAM.")
(license license:artistic2.0)))
(define-public emboss (define-public emboss
(package (package
(name "emboss") (name "emboss")

View File

@ -2,6 +2,7 @@
;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Tomáš Čech <sleep_walker@gnu.org> ;;; Copyright © 2016 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
@ -25,6 +26,7 @@
(define-module (gnu packages bittorrent) (define-module (gnu packages bittorrent)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download)
#: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-system glib-or-gtk) #:use-module (guix build-system glib-or-gtk)
@ -172,6 +174,49 @@ XML-RPC over SCGI.")
(home-page "https://github.com/rakshasa/rtorrent") (home-page "https://github.com/rakshasa/rtorrent")
(license l:gpl2+))) (license l:gpl2+)))
(define-public tremc
(let ((commit "401f2303c9b5a6e2e7b0808617d794576d4aa29e")
(revision "0"))
(package
(name "tremc")
(version (string-append "0.9.0-" revision "." (string-take commit 7)))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/louipc/tremc.git")
(commit commit)))
(sha256
(base32
"1h2720zn35iggmf9av65g119b0bhskwm1ng0zbkjryaf38nfzpin"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ; no test suite
#:phases
(modify-phases %standard-phases
;; The software is just a Python script that must be
;; copied into place.
(delete 'build)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(man (string-append out "/share/man/man1"))
;; FIXME install zsh completions
(completions (string-append out "/etc/bash_completion.d")))
(install-file "tremc" bin)
(install-file "tremc.1" man)
(install-file
(string-append
"completion/bash/"
"transmission-remote-cli-bash-completion.sh")
completions)))))))
(synopsis "Console client for the Transmission BitTorrent daemon")
(description "Tremc is a console client, with a curses interface, for the
Transmission BitTorrent daemon.")
(home-page "https://github.com/louipc/tremc")
(license l:gpl3+))))
(define-public transmission-remote-cli (define-public transmission-remote-cli
(package (package
(name "transmission-remote-cli") (name "transmission-remote-cli")
@ -209,9 +254,11 @@ XML-RPC over SCGI.")
completions))))))) completions)))))))
(synopsis "Console client for the Transmission BitTorrent daemon") (synopsis "Console client for the Transmission BitTorrent daemon")
(description "Transmission-remote-cli is a console client, with a curses (description "Transmission-remote-cli is a console client, with a curses
interface, for the Transmission BitTorrent daemon.") interface, for the Transmission BitTorrent daemon. This package is no longer
maintained upstream.")
(home-page "https://github.com/fagga/transmission-remote-cli") (home-page "https://github.com/fagga/transmission-remote-cli")
(license l:gpl3+))) (license l:gpl3+)
(properties `((superseded . ,tremc)))))
(define-public aria2 (define-public aria2
(package (package

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -28,7 +28,7 @@
#:use-module ((guix store) #:select (add-to-store add-text-to-store)) #:use-module ((guix store) #:select (add-to-store add-text-to-store))
#:use-module ((guix derivations) #:select (derivation)) #:use-module ((guix derivations) #:select (derivation))
#:use-module ((guix utils) #:select (gnu-triplet->nix-system)) #:use-module ((guix utils) #:select (gnu-triplet->nix-system))
#:use-module (guix combinators) #:use-module (guix memoization)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (ice-9 match) #:use-module (ice-9 match)
@ -131,30 +131,29 @@ successful, or false to signal an error."
(license gpl3+))) (license gpl3+)))
(define package-with-bootstrap-guile (define package-with-bootstrap-guile
(memoize (mlambda (p)
(lambda (p)
"Return a variant of P such that all its origins are fetched with "Return a variant of P such that all its origins are fetched with
%BOOTSTRAP-GUILE." %BOOTSTRAP-GUILE."
(define rewritten-input (define rewritten-input
(match-lambda (match-lambda
((name (? origin? o)) ((name (? origin? o))
`(,name ,(bootstrap-origin o))) `(,name ,(bootstrap-origin o)))
((name (? package? p) sub-drvs ...) ((name (? package? p) sub-drvs ...)
`(,name ,(package-with-bootstrap-guile p) ,@sub-drvs)) `(,name ,(package-with-bootstrap-guile p) ,@sub-drvs))
(x x))) (x x)))
(package (inherit p) (package (inherit p)
(source (match (package-source p) (source (match (package-source p)
((? origin? o) (bootstrap-origin o)) ((? origin? o) (bootstrap-origin o))
(s s))) (s s)))
(inputs (map rewritten-input (inputs (map rewritten-input
(package-inputs p))) (package-inputs p)))
(native-inputs (map rewritten-input (native-inputs (map rewritten-input
(package-native-inputs p))) (package-native-inputs p)))
(propagated-inputs (map rewritten-input (propagated-inputs (map rewritten-input
(package-propagated-inputs p))) (package-propagated-inputs p)))
(replacement (and=> (package-replacement p) (replacement (and=> (package-replacement p)
package-with-bootstrap-guile)))))) package-with-bootstrap-guile)))))
(define* (glibc-dynamic-linker (define* (glibc-dynamic-linker
#:optional (system (or (and=> (%current-target-system) #:optional (system (or (and=> (%current-target-system)

View File

@ -84,13 +84,13 @@ data units.")
(define-public khal (define-public khal
(package (package
(name "khal") (name "khal")
(version "0.9.0") (version "0.9.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "khal" version)) (uri (pypi-uri "khal" version))
(sha256 (sha256
(base32 (base32
"138gxynw7zavwqqaw5nzmj8sbpkymmb95xzgxqbdi9fiiqm9kamr")))) "15rxjphjp46lz7gbs39d1ajd9flnhmhqicjh9bjpx3yi5xx4iawr"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases (modify-phases %standard-phases `(#:phases (modify-phases %standard-phases

View File

@ -2,6 +2,7 @@
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016, 2017 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2016, 2017 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -186,8 +187,8 @@ their dependencies.")
(license l:gpl3+)))) (license l:gpl3+))))
(define-public cuirass (define-public cuirass
(let ((commit "d0a5801e397335bb44d8033e5deddf02c1cc99c2") (let ((commit "f695c79eb3b93a0432901844c8ede16de39b8d07")
(revision "3")) (revision "4"))
(package (package
(name "cuirass") (name "cuirass")
(version (string-append "0.0.1-" revision "." (string-take commit 7))) (version (string-append "0.0.1-" revision "." (string-take commit 7)))
@ -199,7 +200,7 @@ their dependencies.")
(file-name (string-append name "-" version)) (file-name (string-append name "-" version))
(sha256 (sha256
(base32 (base32
"0sa94dgp9w6av7i0a570fv9a9yq03jkxdrm5d75h6szsp1kiyw2i")))) "1zsj3l85d8jq7h9a0zfb2w5pyvlwkirgvis4bv60syhbpblfvmri"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases '(#:phases

View File

@ -10,7 +10,7 @@
;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
@ -46,6 +46,7 @@
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages valgrind) #:use-module (gnu packages valgrind)
#:use-module (ice-9 match)
#:use-module ((srfi srfi-1) #:select (last))) #:use-module ((srfi srfi-1) #:select (last)))
(define-public zlib (define-public zlib
@ -1001,3 +1002,61 @@ handles the 7z format which features very high compression ratios.")
(description "gzstream is a small library for providing zlib (description "gzstream is a small library for providing zlib
functionality in a C++ iostream.") functionality in a C++ iostream.")
(license license:lgpl2.1+))) (license license:lgpl2.1+)))
(define-public zpaq
(package
(name "zpaq")
(version "7.15")
(source
(origin
(method url-fetch/zipbomb)
(uri (string-append "http://mattmahoney.net/dc/zpaq"
(string-delete #\. version) ".zip"))
(sha256
(base32
"066l94yyladlfzri877nh2dhkvspagjn3m5bmv725fmhkr9c4pp8"))
(modules '((guix build utils)))
(snippet
;; Delete irrelevant pre-compiled binaries.
'(for-each delete-file (find-files "." "\\.exe$")))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'configure)) ; no configure script
#:make-flags
(list
(string-append "CPPFLAGS=-Dunix"
,(match (or (%current-target-system)
(%current-system))
("x86_64-linux" "")
("i686-linux" "")
(_ " -DNOJIT")))
;; These should be safe, lowest-common-denominator instruction sets,
;; allowing for some optimisation while remaining reproducible.
(string-append "CXXFLAGS=-O3 -mtune=generic -DNDEBUG"
,(match (or (%current-target-system)
(%current-system))
("x86_64-linux" " -march=nocona")
("i686-linux" " -march=i686")
(_ "")))
(string-append "PREFIX="
(assoc-ref %outputs "out")))))
(native-inputs
`(("perl" ,perl))) ; for pod2man
(home-page "http://mattmahoney.net/dc/zpaq.html")
(synopsis "Incremental journaling archiver")
(description "ZPAQ is a command-line archiver for realistic situations with
many duplicate and already compressed files. It backs up only those files
modified since the last update. All previous versions remain untouched and can
be independently recovered. Identical files are only stored once (known as
@dfn{de-duplication}). Archives can also be encrypted.
ZPAQ is intended to back up user data, not entire operating systems. It ignores
owner and group IDs, ACLs, extended attributes, or special file types like
devices, sockets, or named pipes. It does not follow or restore symbolic links
or junctions, and always follows hard links.")
(license (list license:public-domain
;; libzpaq.cpp contains a mix of public-domain and
;; expat-licenced (or MIT) code.
license:expat))))

View File

@ -55,15 +55,17 @@
#:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages gnupg) #:use-module (gnu packages gnupg)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages parallel)
#:use-module (gnu packages pcre) #:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages rdf) #:use-module (gnu packages rdf)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (gnu packages bison) #:use-module (gnu packages bison)
#:use-module (gnu packages jemalloc) #:use-module (gnu packages jemalloc)
#:use-module ((guix licenses) #:use-module ((guix licenses)
#:select (gpl2 gpl3 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft #:select (gpl2 gpl3 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft
bsd-2 bsd-3 public-domain)) bsd-2 bsd-3 public-domain asl2.0))
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
@ -510,6 +512,93 @@ types are supported, as is encryption.")
(license gpl3+) (license gpl3+)
(home-page "http://www.gnu.org/software/recutils/"))) (home-page "http://www.gnu.org/software/recutils/")))
(define-public rocksdb
(package
(name "rocksdb")
(version "5.0.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/facebook/rocksdb"
"/archive/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1jj8b50w8jr3bnyjzk2hmlzq9x49yihjilx3xlq2rfdx3q9x4fay"))
(modules '((guix build utils)))
(snippet
'(begin
;; TODO: unbundle gtest.
(delete-file "build_tools/gnu_parallel")
#t))))
(build-system gnu-build-system)
(arguments
'(#:make-flags (list "CC=gcc"
;; Make the resulting library position-independent so the
;; static version can be included in shared objects.
"EXTRA_CXXFLAGS=-fPIC"
(string-append "INSTALL_PATH="
(assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-Makefile
(lambda _
(substitute* "Makefile"
(("build_tools/gnu_parallel") "parallel")
(("#!/bin/sh") (string-append "#!" (which "sh"))))
#t))
(delete 'configure)
(add-before 'check 'disable-failing-tests
(lambda _
(substitute* "Makefile"
;; These tests reliably fail due to "Too many open files".
(("^[[:blank:]]+env_test[[:blank:]]+\\\\") "\\")
(("^[[:blank:]]+persistent_cache_test[[:blank:]]+\\\\") "\\"))
#t))
(add-after
'check 'build-release-libraries
;; The 'check' target depends on the default target which is compiled
;; with debug symbols. The 'install' target depends on shared and
;; static release targets so we build them here for clarity.
;; TODO: Add debug output.
(lambda* (#:key (make-flags '()) #:allow-other-keys)
;; Prevent the build from adding machine-specific optimizations.
;; This does not work if passed as a make flag...
(setenv "PORTABLE" "1")
(and (zero? (apply system* "make" "static_lib" make-flags))
(zero? (apply system* "make" "shared_lib" make-flags)))))
(add-after 'install 'delete-static-library
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib")))
(for-each (lambda (file)
(delete-file file))
(find-files lib "\\.l?a$"))
#t))))))
(native-inputs
`(("parallel" ,parallel)
("perl" ,perl)
("procps" ,procps)
("python" ,python-2)))
(inputs
`(("bzip2" ,bzip2)
("gflags" ,gflags)
("jemalloc" ,jemalloc)
("lz4" ,lz4)
("snappy" ,snappy)
("zlib" ,zlib)))
(home-page "http://rocksdb.org/")
(synopsis "Persistent key-value store for fast storage")
(description
"RocksDB is a library that forms the core building block for a fast
key-value server, especially suited for storing data on flash drives. It
has a @dfn{Log-Structured-Merge-Database} (LSM) design with flexible tradeoffs
between @dfn{Write-Amplification-Factor} (WAF), @dfn{Read-Amplification-Factor}
(RAF) and @dfn{Space-Amplification-Factor} (SAF). It has multi-threaded
compactions, making it specially suitable for storing multiple terabytes of
data in a single database. RocksDB is partially based on @code{LevelDB}.")
;; RocksDB is BSD-3 and the JNI adapter is Apache 2.0.
(license (list bsd-3 asl2.0))))
(define-public sparql-query (define-public sparql-query
(package (package
(name "sparql-query") (name "sparql-query")

View File

@ -146,7 +146,7 @@ high-volume and high-reliability applications. The name BIND stands for
(define-public dnscrypt-proxy (define-public dnscrypt-proxy
(package (package
(name "dnscrypt-proxy") (name "dnscrypt-proxy")
(version "1.9.2") (version "1.9.4")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -154,7 +154,7 @@ high-volume and high-reliability applications. The name BIND stands for
"dnscrypt-proxy-" version ".tar.bz2")) "dnscrypt-proxy-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1xb199hpzfj53kmbkkn3awymjh8f44yzkmaj7q5ibb67b5p9fq7d")) "07piwsjczamwvdpv1585kg4awqakip51bwsm8nqi6bljww4agx7x"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
;; Delete bundled libltdl. XXX: This package also bundles ;; Delete bundled libltdl. XXX: This package also bundles

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015, 2016, 2017 Alex Kost <alezost@gmail.com> ;;; Copyright © 2014, 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
@ -14,10 +14,12 @@
;;; Copyright © 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -400,7 +402,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
(define-public emacs-with-editor (define-public emacs-with-editor
(package (package
(name "emacs-with-editor") (name "emacs-with-editor")
(version "2.5.9") (version "2.5.10")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -409,7 +411,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0znfznyqr360ryi7za9szbz1l5236v2cig25s4k7kkw0w8828xzh")))) "0lsxa1hghybkzvqhqvvym3hxbyp9vjcnnpb9j800z0vyhbnlka67"))))
(build-system emacs-build-system) (build-system emacs-build-system)
(propagated-inputs (propagated-inputs
`(("emacs-dash" ,emacs-dash))) `(("emacs-dash" ,emacs-dash)))
@ -425,7 +427,7 @@ on stdout instead of using a socket as the Emacsclient does.")
(define-public magit (define-public magit
(package (package
(name "magit") (name "magit")
(version "2.10.0") (version "2.10.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -433,7 +435,7 @@ on stdout instead of using a socket as the Emacsclient does.")
version "/" name "-" version ".tar.gz")) version "/" name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1w74vy46z922kfs7gjkrng7wjpi481calpasqmjzpn3hqvgsd5d1")))) "1a3gsarl0zrk1dydqn93kx7pnwm7pb7av7g17pj5m7b7kc66k7jv"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("texinfo" ,texinfo) (native-inputs `(("texinfo" ,texinfo)
("emacs" ,emacs-minimal))) ("emacs" ,emacs-minimal)))
@ -969,6 +971,7 @@ provides an optional IDE-like error list.")
("mpg321" ,mpg321) ("mpg321" ,mpg321)
("taglib" ,taglib) ("taglib" ,taglib)
("mp3info" ,mp3info))) ("mp3info" ,mp3info)))
(properties '((upstream-name . "emms")))
(synopsis "Emacs Multimedia System") (synopsis "Emacs Multimedia System")
(description (description
"EMMS is the Emacs Multimedia System. It is a small front-end which "EMMS is the Emacs Multimedia System. It is a small front-end which
@ -3396,14 +3399,14 @@ passive voice.")
(define-public emacs-org (define-public emacs-org
(package (package
(name "emacs-org") (name "emacs-org")
(version "20161224") (version "20170124")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://elpa.gnu.org/packages/org-" (uri (string-append "http://elpa.gnu.org/packages/org-"
version ".tar")) version ".tar"))
(sha256 (sha256
(base32 (base32
"0b10bjypn0w5ja776f8sxl1qpvb61iyz1n3c74jx6fqwypv7dmgi")))) "0mcnjwvily0xv1xl11dj18lg38llvrxja2j9mwn6vql8n5y1srxi"))))
(build-system emacs-build-system) (build-system emacs-build-system)
(home-page "http://orgmode.org/") (home-page "http://orgmode.org/")
(synopsis "Outline-based notes management and organizer") (synopsis "Outline-based notes management and organizer")
@ -3645,3 +3648,134 @@ Streams are implemented as delayed evaluation of cons cells.")
(description "This package provides expression based interactive search (description "This package provides expression based interactive search
procedures for emacs-lisp-mode.") procedures for emacs-lisp-mode.")
(license license:gpl3+)))) (license license:gpl3+))))
(define-public emacs-ht
(package
(name "emacs-ht")
(version "2.1")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/Wilfred/ht.el/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1lpba36kzxcc966fvsbrfpy8ah9gnvay0yk26gbyjil0rggrbqzj"))))
(build-system emacs-build-system)
(propagated-inputs `(("emacs-dash" ,emacs-dash)))
(home-page "https://github.com/Wilfred/ht.el")
(synopsis "Hash table library for Emacs")
(description
"This package simplifies the use of hash tables in elisp. It also
provides functions to convert hash tables from and to alists and plists.")
(license license:gpl3+)))
(define-public emacs-log4e
(package
(name "emacs-log4e")
(version "0.3.0")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/aki2o/log4e/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0nbdpbw353snda3v19l9hsm6gimppwnpxj18amm350bm81lyim2g"))))
(build-system emacs-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'remove-tests
;; Guile builder complains about null characters in some
;; strings of test files. Remove "test" directory (it is not
;; needed anyway).
(lambda _
(delete-file-recursively "test"))))))
(home-page "https://github.com/aki2o/log4e")
(synopsis "Logging framework for elisp")
(description
"This package provides a logging framework for elisp. It allows
you to deal with multiple log levels.")
(license license:gpl3+)))
(define-public emacs-gntp
(package
(name "emacs-gntp")
(version "0.1")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/tekai/gntp.el/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"16c1dfkia9yhl206bdhjr3b8kfvqcqr38jl5lq8qsyrrzsnmghny"))))
(build-system emacs-build-system)
(home-page "https://github.com/tekai/gntp.el")
(synopsis "Growl Notification Protocol for Emacs")
(description
"This package implements the Growl Notification Protocol GNTP
described at @uref{http://www.growlforwindows.com/gfw/help/gntp.aspx}.
It is incomplete as it only lets you send but not receive
notifications.")
(license license:bsd-3)))
(define-public emacs-alert
(package
(name "emacs-alert")
(version "1.2")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/jwiegley/alert/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1693kck3k2iz5zhpmxwqyafxm68hr6gzs60lkxd3j1wlp2c9fwyr"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-gntp" ,emacs-gntp)
("emacs-log4e" ,emacs-log4e)))
(home-page "https://github.com/jwiegley/alert")
(synopsis "Growl-style notification system for Emacs")
(description
"Alert is a Growl-workalike for Emacs which uses a common notification
interface and multiple, selectable \"styles\", whose use is fully
customizable by the user.")
(license license:gpl2+)))
(define-public emacs-mu4e-alert
(package
(name "emacs-mu4e-alert")
(version "0.4")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/iqbalansari/mu4e-alert/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1m63vyb2v5r9swmqv56q80jca8172nk5vaxl7bcm5zbfs8zsvr4b"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-alert" ,emacs-alert)
("emacs-s" ,emacs-s)
("emacs-ht" ,emacs-ht)))
(home-page "https://github.com/iqbalansari/mu4e-alert")
(synopsis "Desktop notification for mu4e")
(description
"This package provides desktop notifications for mu4e.
Additionally it can display the number of unread emails in the
mode-line.")
(license license:gpl3+)))

View File

@ -259,7 +259,6 @@ featuring various improvements and bug fixes.")))
(version "2.0-18Sep92") (version "2.0-18Sep92")
(source (origin (source (origin
(method url-fetch/tarbomb) (method url-fetch/tarbomb)
(file-name (string-append name "-" version ".tar.gz"))
(uri (string-append "http://www.rle.mit.edu/cpg/codes/" (uri (string-append "http://www.rle.mit.edu/cpg/codes/"
name "-" version ".tgz")) name "-" version ".tgz"))
(sha256 (sha256

View File

@ -15,6 +15,7 @@
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016 Toni Reina <areina@riseup.net> ;;; Copyright © 2016 Toni Reina <areina@riseup.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -996,3 +997,40 @@ designed to work well in user interface environments.")
(synopsis "Mozilla's monospace font") (synopsis "Mozilla's monospace font")
(description "This is the typeface used by Mozilla in Firefox OS.") (description "This is the typeface used by Mozilla in Firefox OS.")
(license license:silofl1.1))) (license license:silofl1.1)))
(define-public font-awesome
(package
(name "font-awesome")
(version "4.7.0")
(source (origin
(method url-fetch)
(uri (string-append "http://fontawesome.io/assets/"
name "-" version ".zip"))
(sha256
(base32
"1frhmw41lnnm9rda2zs202pvfi5vzlrsw4xfp4mswl0qgws61mcd"))))
(build-system trivial-build-system)
(native-inputs
`(("unzip" ,unzip)))
(arguments
`(#:modules ((guix build utils))
#:builder (begin
(use-modules (guix build utils))
(let* ((font-dir (string-append %output
"/share/fonts/opentype"))
(source (assoc-ref %build-inputs "source"))
(src-otf-file (string-append "font-awesome-"
,version
"/fonts/FontAwesome.otf"))
(dest-otf-file (string-append font-dir "/FontAwesome.otf"))
(unzip (assoc-ref %build-inputs "unzip")))
(setenv "PATH" (string-append unzip "/bin"))
(mkdir-p font-dir)
(system* "unzip" source "-d" ".")
(copy-file src-otf-file dest-otf-file)))))
(home-page "http://fontawesome.io")
(synopsis "Font that contains a rich iconset")
(description
"Font Awesome is a full suite of pictographic icons for easy scalable
vector graphics.")
(license license:silofl1.1)))

View File

@ -36,23 +36,19 @@
(define-public lftp (define-public lftp
(package (package
(name "lftp") (name "lftp")
(version "4.7.4") (version "4.7.5")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
;; XXX: Downloads from main site redirects to 'get.html' and ;; See https://lftp.tech/get.html for mirrors.
;; returns HTTP 200, leading Guix to download that instead. (uri (list (string-append "https://lftp.tech/ftp/lftp-"
;; Try official mirror first. See:
;; https://github.com/lavv17/lftp/issues/299 and
;; https://lftp.tech/get.html (mirror list)
(uri (list (string-append "ftp://ftp.st.ryukoku.ac.jp/pub/network/"
"ftp/lftp/lftp-" version ".tar.xz")
(string-append "https://lftp.tech/ftp/lftp-"
version ".tar.xz") version ".tar.xz")
(string-append "https://lftp.tech/ftp/old/lftp-" (string-append "https://lftp.tech/ftp/old/lftp-"
version ".tar.xz"))) version ".tar.xz")
(string-append "ftp://ftp.st.ryukoku.ac.jp/pub/network/"
"ftp/lftp/lftp-" version ".tar.xz")))
(sha256 (sha256
(base32 (base32
"0b6r1gbpazvml1hvfjm2ccsfxibrjrm3fir912j6kxxn538w8rxz")))) "1n6h3y5jz1rxlx7ap46vykgm0q2rvzr7c5s5ry5l32z3lbmwbdak"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))

View File

@ -11,8 +11,8 @@
;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2016 Rodger Fox <thylakoid@openmailbox.org> ;;; Copyright © 2016 Rodger Fox <thylakoid@openmailbox.org>
@ -104,6 +104,7 @@
#:use-module (gnu packages xdisorg) #:use-module (gnu packages xdisorg)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages pcre) #:use-module (gnu packages pcre)
#:use-module (gnu packages cyrus-sasl)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system haskell) #:use-module (guix build-system haskell)
#:use-module (guix build-system python) #:use-module (guix build-system python)
@ -942,7 +943,7 @@ Protocol).")
(define-public extremetuxracer (define-public extremetuxracer
(package (package
(name "extremetuxracer") (name "extremetuxracer")
(version "0.7.3") (version "0.7.4")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -950,7 +951,7 @@ Protocol).")
version "/etr-" version ".tar.xz")) version "/etr-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1lg3z7jhzmsjym53qss8mbydny8hafwjnfsc7x91hrr9zrkwblly")))) "0d2j4ybdjmimg67v2fndgahgq4fvgz3fpfb3a4l1ar75n6hy776s"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))
@ -1254,7 +1255,7 @@ is programmed in Haskell.")
(define-public manaplus (define-public manaplus
(package (package
(name "manaplus") (name "manaplus")
(version "1.6.12.24") (version "1.7.1.21")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -1262,7 +1263,7 @@ is programmed in Haskell.")
version "/manaplus-" version ".tar.xz")) version "/manaplus-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1g64pid26vcv1ay002bzz6ymabwrmy3wmklywpcgpvrhynm6f2cq")))) "0q9hk9jgz5jja1mmba5iafxwavk6991kjpmdxdkgbam0hk15pqmz"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:configure-flags '(#:configure-flags
@ -3071,3 +3072,33 @@ symbols, the game needs graphics to render the non-euclidean world.")
for Un*x systems with X11.") for Un*x systems with X11.")
(home-page "http://olofson.net/kobodl/") (home-page "http://olofson.net/kobodl/")
(license license:gpl2+))) (license license:gpl2+)))
(define-public freeciv
(package
(name "freeciv")
(version "2.5.6")
(source
(origin
(method url-fetch)
(uri (string-append
"http://download.gna.org/freeciv/"
"stable/freeciv-" version ".tar.bz2"))
(sha256
(base32
"16wrnsx5rmbz6rjs03bhy0vn20i6n6g73lx7fjpai98ixhzc5bfg"))))
(build-system gnu-build-system)
(inputs
`(("curl" ,curl)
("cyrus-sasl" ,cyrus-sasl)
("gtk+" ,gtk+)
("sdl-mixer" ,sdl-mixer)
("zlib" ,zlib)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(home-page "http://www.freeciv.org/")
(synopsis "Turn based empire building strategy game")
(description "Freeciv is a turn based empire building strategy game
inspired by the history of human civilization. The game commences in
prehistory and your mission is to lead your tribe from the Stone Age
to the Space Age.")
(license license:gpl2+)))

View File

@ -37,14 +37,14 @@
(define-public gdb (define-public gdb
(package (package
(name "gdb") (name "gdb")
(version "7.12") (version "7.12.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/gdb/gdb-" (uri (string-append "mirror://gnu/gdb/gdb-"
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"152g2qa8337cxif3lkvabjcxfd9jphfb2mza8f1p2c4bjk2z6kw3")))) "11ii260h1sd7v0bs3cz6d5l8gqxxgldry0md60ncjgixjw5nh1s6"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f ; FIXME "make check" fails on single-processor systems. `(#:tests? #f ; FIXME "make check" fails on single-processor systems.

View File

@ -496,43 +496,36 @@ and signature functionality from Python programs.")
(package-with-python2 python-gnupg)) (package-with-python2 python-gnupg))
(define-public pius (define-public pius
;; pius 2.2.2 does not work with gpg-agent 2.1, so we take a newer (package
;; commit. When a new pius (> 2.2.2) is released, update this package (name "pius")
;; and delete this message. (version "2.2.3")
;; More info: https://github.com/jaymzh/pius/issues/46 (source (origin
(let ((commit "891687ccb3d232a1fc0e7da7d22572c0318644cb") (method url-fetch)
(base-version "2.2.2")) ; i.e. there were no releases (uri (string-append
; between BASE-VERSION and COMMIT "https://github.com/jaymzh/pius/releases/download/v"
(package version "/pius-" version ".tar.bz2"))
(name "pius") (sha256
(version (string-append base-version "-0." (base32
(string-take commit 7))) "0iy0gnms6lv9hpvk29313kc495a2f7pq2mg6ljxhy233vxsmjsk6"))))
(source (origin (build-system python-build-system)
(method git-fetch) (inputs `(("perl" ,perl) ;for 'pius-party-worksheet'
(uri (git-reference ("gpg" ,gnupg)))
(url "https://github.com/jaymzh/pius.git") (arguments
(commit commit))) `(#:tests? #f
(sha256 #:python ,python-2 ;uses the Python 2 'print' syntax
(base32 #:phases
"0m2na4bnf1rv0zpf404l9ga6pwyf7ijldp4lw5irgh7gkmpllxr3")))) (modify-phases %standard-phases
(build-system python-build-system) (add-before
(inputs `(("perl" ,perl) ;for 'pius-party-worksheet' 'build 'set-gpg-file-name
("gpg" ,gnupg))) (lambda* (#:key inputs outputs #:allow-other-keys)
(arguments (let* ((gpg (string-append (assoc-ref inputs "gpg")
`(#:tests? #f "/bin/gpg")))
#:python ,python-2 ;uses the Python 2 'print' syntax (substitute* "libpius/constants.py"
#:phases (("/usr/bin/gpg2") gpg))
(modify-phases %standard-phases #t))))))
(add-before (synopsis "Programs to simplify GnuPG key signing")
'build 'set-gpg-file-name (description
(lambda* (#:key inputs outputs #:allow-other-keys) "Pius (PGP Individual UID Signer) helps attendees of PGP keysigning
(let* ((gpg (string-append (assoc-ref inputs "gpg")
"/bin/gpg")))
(substitute* "libpius/constants.py"
(("/usr/bin/gpg2") gpg))))))))
(synopsis "Programs to simplify GnuPG key signing")
(description
"Pius (PGP Individual UID Signer) helps attendees of PGP keysigning
parties. It is the main utility and makes it possible to quickly and easily parties. It is the main utility and makes it possible to quickly and easily
sign each UID on a set of PGP keys. It is designed to take the pain out of sign each UID on a set of PGP keys. It is designed to take the pain out of
the sign-all-the-keys part of PGP Keysigning Party while adding security the sign-all-the-keys part of PGP Keysigning Party while adding security
@ -540,8 +533,8 @@ to the process.
pius-keyring-mgr and pius-party-worksheet help organisers of pius-keyring-mgr and pius-party-worksheet help organisers of
PGP keysigning parties.") PGP keysigning parties.")
(license license:gpl2) (license license:gpl2)
(home-page "https://www.phildev.net/pius/index.shtml")))) (home-page "https://www.phildev.net/pius/index.shtml")))
(define-public signing-party (define-public signing-party
(package (package

View File

@ -441,7 +441,7 @@ standards.")
("libgnome" ,libgnome) ("libgnome" ,libgnome)
("libjpeg-turbo" ,libjpeg-turbo) ("libjpeg-turbo" ,libjpeg-turbo)
("libxft" ,libxft) ("libxft" ,libxft)
("libevent" ,libevent) ("libevent" ,libevent-2.0)
("libxinerama" ,libxinerama) ("libxinerama" ,libxinerama)
("libxscrnsaver" ,libxscrnsaver) ("libxscrnsaver" ,libxscrnsaver)
("libxcomposite" ,libxcomposite) ("libxcomposite" ,libxcomposite)

View File

@ -98,7 +98,7 @@ arrays of data.")
(define-public gstreamer (define-public gstreamer
(package (package
(name "gstreamer") (name "gstreamer")
(version "1.10.2") (version "1.10.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -107,7 +107,7 @@ arrays of data.")
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0rcd4ya4k99x6ngm9v78as7ql0rqibkwshc13lb4rjdszs0qw3hm")))) "0gdnxg5igbhnpjhrzp31w1ww95j805byqd6mj3x29wli54dxrfc5"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("out" "doc")) (outputs '("out" "doc"))
(arguments (arguments
@ -146,7 +146,7 @@ This package provides the core library and elements.")
(define-public gst-plugins-base (define-public gst-plugins-base
(package (package
(name "gst-plugins-base") (name "gst-plugins-base")
(version "1.10.2") (version "1.10.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -154,7 +154,7 @@ This package provides the core library and elements.")
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"086yjwmp4fykcqkj6zqhwrk2z49981kl8x545vz2wvblrc7x9h7v")))) "040pifl4cgsqqz2si4s1y5khj3zwm39w21siagxwp805swbrcag6"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("out" "doc")) (outputs '("out" "doc"))
(propagated-inputs (propagated-inputs
@ -201,7 +201,7 @@ for the GStreamer multimedia library.")
(define-public gst-plugins-good (define-public gst-plugins-good
(package (package
(name "gst-plugins-good") (name "gst-plugins-good")
(version "1.10.2") (version "1.10.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -210,7 +210,7 @@ for the GStreamer multimedia library.")
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"04rksbhjj2yz32g523cfabwqn2s3byd94dpbxghxr0p9ridk53qr")))) "0mar8ss8bvpz699ql4kgndvna8qsv7kj372py4435ffl6hzfj1sf"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("aalib" ,aalib) `(("aalib" ,aalib)
@ -266,14 +266,14 @@ developers consider to have good quality code and correct functionality.")
(define-public gst-plugins-bad (define-public gst-plugins-bad
(package (package
(name "gst-plugins-bad") (name "gst-plugins-bad")
(version "1.10.2") (version "1.10.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://gstreamer.freedesktop.org/src/" (uri (string-append "https://gstreamer.freedesktop.org/src/"
name "/" name "-" version ".tar.xz")) name "/" name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0fisnnfpp3s8pbm6hjrfi4wjpq2da8c6w3ns9pjcg7590f9wm587")))) "1rwla1p57yzygb68z2xk5l5kvqzj5w3nxq0davkwk139zd8r6294"))))
(outputs '("out" "doc")) (outputs '("out" "doc"))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
@ -343,7 +343,7 @@ par compared to the rest.")
(define-public gst-plugins-ugly (define-public gst-plugins-ugly
(package (package
(name "gst-plugins-ugly") (name "gst-plugins-ugly")
(version "1.10.2") (version "1.10.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -351,7 +351,7 @@ par compared to the rest.")
name "/" name "-" version ".tar.xz")) name "/" name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"17gc2zd3v6spmm2d6912sqfcyyv5f2ghdhq31f5kx5mw5r6ds0zk")))) "1lkb8kznc9wxmhbp7k67b50y27nz8jp2x2flb91xzydz7b89f5f9"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("gst-plugins-base" ,gst-plugins-base) `(("gst-plugins-base" ,gst-plugins-base)
@ -382,7 +382,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.")
(define-public gst-libav (define-public gst-libav
(package (package
(name "gst-libav") (name "gst-libav")
(version "1.10.2") (version "1.10.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -390,7 +390,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.")
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0g778j7w4vpbhwjzyrzpajvr26nxm6vqby84v8g1w1hz44v71pd3")))) "1aajayv63ardkbmcg7pnh2d87r067325a5wzinwihaw6n5jw2sws"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:configure-flags '("--with-system-libav") '(#:configure-flags '("--with-system-libav")
@ -420,7 +420,7 @@ compression formats through the use of the libav library.")
(define-public python-gst (define-public python-gst
(package (package
(name "python-gst") (name "python-gst")
(version "1.10.2") (version "1.10.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -428,7 +428,7 @@ compression formats through the use of the libav library.")
"gst-python-" version ".tar.xz")) "gst-python-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1sljnqkxf2ix6yzghrapw5irl0rbp8aa8w2hggk7i6d9js10ls71")))) "1s5437bnk0j5hfg2gwfwq4b68l6vj1lfskxh73v6ikp0vw32vymx"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
;; XXX: Factorize python-sitedir with python-build-system. ;; XXX: Factorize python-sitedir with python-build-system.

View File

@ -331,18 +331,17 @@ diagrams.")
(base32 (base32
"07hrabhpl6n8ajz10s0d960jdwndxs87szxyn428mpxi8cvpg1f5")))) "07hrabhpl6n8ajz10s0d960jdwndxs87szxyn428mpxi8cvpg1f5"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs
`(("gtk" ,gtk+-2)
;; These two are needed only to allow the tests to run successfully.
("xorg-server" ,xorg-server)
("shared-mime-info" ,shared-mime-info)))
(native-inputs (native-inputs
`(("intltool" ,intltool) `(("intltool" ,intltool)
("glib" ,glib "bin") ; for glib-genmarshal, etc. ("glib" ,glib "bin") ; for glib-genmarshal, etc.
("pkg-config" ,pkg-config))) ("pkg-config" ,pkg-config)
;; For testing.
("xorg-server" ,xorg-server)
("shared-mime-info" ,shared-mime-info)))
(propagated-inputs (propagated-inputs
;; As per the pkg-config file. ;; As per the pkg-config file.
`(("libxml2" ,libxml2))) `(("gtk" ,gtk+-2)
("libxml2" ,libxml2)))
(arguments (arguments
`(#:phases `(#:phases
;; Unfortunately, some of the tests in "make check" are highly dependent ;; Unfortunately, some of the tests in "make check" are highly dependent

View File

@ -26,6 +26,7 @@
;;; 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 (gnu packages haskell) (define-module (gnu packages haskell)
#:use-module (gnu packages)
#:use-module (gnu packages bootstrap) #:use-module (gnu packages bootstrap)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages elf) #:use-module (gnu packages elf)
@ -267,14 +268,17 @@ interactive environment for the functional language Haskell.")
(define-public ghc-8 (define-public ghc-8
(package (package
(name "ghc") (name "ghc")
(version "8.0.1") (version "8.0.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://www.haskell.org/ghc/dist/" (uri (string-append "https://www.haskell.org/ghc/dist/"
version "/" name "-" version "-src.tar.xz")) version "/" name "-" version "-src.tar.xz"))
(sha256 (sha256
(base32 "1lniqy29djhjkddnailpaqhlqh4ld2mqvb1fxgxw1qqjhz6j1ywh")))) (base32 "1c8qc4fhkycynk4g1f9hvk53dj6a1vvqi6bklqznns6hw59m8qhi"))
(patches
(search-patches
"ghc-dont-pass-linker-flags-via-response-files.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(supported-systems '("i686-linux" "x86_64-linux")) (supported-systems '("i686-linux" "x86_64-linux"))
(outputs '("out" "doc")) (outputs '("out" "doc"))
@ -290,7 +294,7 @@ interactive environment for the functional language Haskell.")
"https://www.haskell.org/ghc/dist/" "https://www.haskell.org/ghc/dist/"
version "/" name "-" version "-testsuite.tar.xz")) version "/" name "-" version "-testsuite.tar.xz"))
(sha256 (sha256
(base32 "0lc1vjivkxn01aw3jg2gd7fmqb5pj7a5j987c7pn5r7caqv1cmxw")))))) (base32 "1wjc3x68l305bl1h1ijd3yhqp2vqj83lkp3kqbr94qmmkqlms8sj"))))))
(native-inputs (native-inputs
`(("perl" ,perl) `(("perl" ,perl)
("python" ,python-2) ; for tests ("python" ,python-2) ; for tests
@ -312,13 +316,6 @@ interactive environment for the functional language Haskell.")
;; then complains that they don't match. ;; then complains that they don't match.
#:build #f #:build #f
#:modules ((guix build gnu-build-system)
(guix build utils)
(guix build rpath)
(srfi srfi-26)
(srfi srfi-1))
#:imported-modules (,@%gnu-build-system-modules
(guix build rpath))
#:configure-flags #:configure-flags
(list (list
(string-append "--with-gmp-libraries=" (string-append "--with-gmp-libraries="
@ -366,19 +363,7 @@ interactive environment for the functional language Haskell.")
"testsuite/tests/programs/life_space_leak/life.test") "testsuite/tests/programs/life_space_leak/life.test")
(("/bin/sh") (which "sh")) (("/bin/sh") (which "sh"))
(("/bin/rm") "rm")) (("/bin/rm") "rm"))
#t)) #t)))))
;; the testsuite can't find shared libraries.
(add-before 'check 'configure-testsuite
(lambda* (#:key inputs #:allow-other-keys)
(let* ((gmp (assoc-ref inputs "gmp"))
(gmp-lib (string-append gmp "/lib"))
(ffi (assoc-ref inputs "libffi"))
(ffi-lib (string-append ffi "/lib"))
(ncurses (assoc-ref inputs "ncurses"))
(ncurses-lib (string-append ncurses "/lib")))
(setenv "LD_LIBRARY_PATH"
(string-append gmp-lib ":" ffi-lib ":" ncurses-lib))
#t))))))
(native-search-paths (list (search-path-specification (native-search-paths (list (search-path-specification
(variable "GHC_PACKAGE_PATH") (variable "GHC_PACKAGE_PATH")
(files (list (files (list

View File

@ -4,6 +4,7 @@
;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2017 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -25,6 +26,7 @@
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (gnu packages autotools) #:use-module (gnu packages autotools)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages curl) #:use-module (gnu packages curl)
@ -33,6 +35,7 @@
#:use-module (gnu packages gnome) #:use-module (gnu packages gnome)
#:use-module (gnu packages gtk) #:use-module (gnu packages gtk)
#:use-module (gnu packages image) #:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages photo) #:use-module (gnu packages photo)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages xorg)) #:use-module (gnu packages xorg))
@ -205,3 +208,59 @@ your images. Among its features are:
@item Configurable mouse actions @item Configurable mouse actions
@end enumerate\n") @end enumerate\n")
(license license:gpl3+))) (license license:gpl3+)))
(define-public catimg
(package
(name "catimg")
(version "2.2.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/posva/catimg/archive"
"/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"14g90zwh2d3s13hgyxypx2vc0rj1g58l6zcxhgc84wsyxfxd6xpb"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; No check target
#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key inputs #:allow-other-keys)
(let* ((magic (assoc-ref %build-inputs "imagemagick"))
(convert (string-append magic "/bin/convert")))
(substitute* "catimg"
;; By replacing "convert", we also replace the "convert"
;; in the message 'The version of convert is too old, don't
;; expect good results :('. This should not happen, but in
;; practice this error message should not affect us.
(("convert") convert))
#t)))
(replace 'build
(lambda _
(zero? (system* "cmake" "-D"
(string-append "CMAKE_INSTALL_PREFIX="
(assoc-ref %outputs "out"))
"."))
(zero? (system* "make"))))
(add-before 'install 'install-script
(lambda* (#:key outputs #:allow-other-keys)
;; The bashscript lacks an file extension, we have to rename
;; it so that the C program and the bash script can be happy
;; side by side.
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin")))
(install-file "catimg" bin)
(rename-file (string-append bin "/catimg")
(string-append bin "/catimg.sh"))
#t))))))
(inputs
`(("imagemagick" ,imagemagick))) ; For the bash script version
(home-page "https://github.com/posva/catimg")
(synopsis "Render images in the terminal")
(description
"Catimg is a little program that prints images in the terminal.
It supports JPEG, PNG and GIF formats.")
(license license:expat)))

View File

@ -953,7 +953,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
,@(package-inputs icedtea-6)))))) ,@(package-inputs icedtea-6))))))
(define-public icedtea-8 (define-public icedtea-8
(let* ((version "3.2.0") (let* ((version "3.3.0")
(drop (lambda (name hash) (drop (lambda (name hash)
(origin (origin
(method url-fetch) (method url-fetch)
@ -962,7 +962,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
"/icedtea8/" version "/" name ".tar.xz")) "/icedtea8/" version "/" name ".tar.xz"))
(sha256 (base32 hash)))))) (sha256 (base32 hash))))))
(package (inherit icedtea-7) (package (inherit icedtea-7)
(version "3.2.0") (version "3.3.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -970,7 +970,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"104g2x5nhnqqvx6x29phx5vlrhlqy7qax83b9bqj1y619irrg8gj")) "02vmxa6gc6gizcri1fy797qmmm9y77vgi7gy9pwkk4agcw4zyr5p"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(substitute* "Makefile.am" '(substitute* "Makefile.am"
@ -1040,31 +1040,31 @@ build process and its dependencies, whereas Make uses Makefile format.")
`(("jdk" ,icedtea-7 "jdk") `(("jdk" ,icedtea-7 "jdk")
("openjdk-src" ("openjdk-src"
,(drop "openjdk" ,(drop "openjdk"
"093r3vlmbdx78w9s6d8lv4q65i0s9wq6an6i2g2d1zaf0js4043c")) "0889n19w6rvpzxgmmk9hlgzdh9ya95qkc2ajgpnzr3h69g15nz48"))
("corba-drop" ("corba-drop"
,(drop "corba" ,(drop "corba"
"11r3h9snnj7m5bqnzc5ryd85igdv7xlwzs0zy24p9ii6gsc0f9lh")) "0qcb72hhlsjgp6h9wd048qgyc88b7lfnxyc51xfyav0nhpfjnj8r"))
("jaxp-drop" ("jaxp-drop"
,(drop "jaxp" ,(drop "jaxp"
"1mp6ps15jk8v4nnvkmbvkk7g35icdjv7892q2a4f7b268yjcgmk1")) "1vyc7dw10x5k45jmi348y8min6sg651ns12zzn30fjzhpfi36nds"))
("jaxws-drop" ("jaxws-drop"
,(drop "jaxws" ,(drop "jaxws"
"1fb5hikzzx8292nhdbp0snqn66fwnnv4rkjsk1zsjvrv4z5vk18j")) "1dki6p39z1ms94cjvj5hd9q75q75g244c0xib82pma3q74jg6hx4"))
("jdk-drop" ("jdk-drop"
,(drop "jdk" ,(drop "jdk"
"1if9c5grp0km7pyn4mhfwi2ynh3ix20l1fqbfcy68sl2py7psmcj")) "17czby3nylcglp7l3d90a4pz1izc1sslifv8hrmynm9hn4m9d3k8"))
("langtools-drop" ("langtools-drop"
,(drop "langtools" ,(drop "langtools"
"0kbah4h4pllk0gf50mp5f6720f5ci0ixqylccppb484hp95pblcl")) "1h4azc21k58g9gn2y686wrvn9ahgac0ii7jhrrrmb5c1kjs0y2qv"))
("hotspot-drop" ("hotspot-drop"
,(drop "hotspot" ,(drop "hotspot"
"1gqz9qqsi61838dj08s01sa51zlnkvrk3hy721211dhnmkvlzmwx")) "12bfgwhrjfhgj6a2dsysdwhirg0jx88pi44y7s8a1bdan1mp03r8"))
("nashorn-drop" ("nashorn-drop"
,(drop "nashorn" ,(drop "nashorn"
"04697l95g6y6n5dvy55k2040c6qp5hfz16qaibwzs594m3gzwwjz")) "0bg9r16jffc64fhyczn4jpx7bkfw7w62prw65mh66vshqk4lbh0f"))
("shenandoah-drop" ("shenandoah-drop"
,(drop "shenandoah" ,(drop "shenandoah"
"0k6h7jk5i98jnld2ivy4bhydmkzrp25c3l6gwhvczvrhn7mlbnfx")) "0abjlsvz669i06mlks28wnh11mm55y5613990pn5j7hfbw8a34q5"))
,@(fold alist-delete (package-native-inputs icedtea-7) ,@(fold alist-delete (package-native-inputs icedtea-7)
'("gcj" "openjdk-src" "corba-drop" "jaxp-drop" "jaxws-drop" '("gcj" "openjdk-src" "corba-drop" "jaxp-drop" "jaxws-drop"
"jdk-drop" "langtools-drop" "hotspot-drop"))))))) "jdk-drop" "langtools-drop" "hotspot-drop")))))))

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2015, 2016 Roel Janssen <roel@gnu.org>
;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl> ;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2017 Frederick Muriithi <fredmanglis@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -27,6 +28,8 @@
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages gdb)
#:use-module (gnu packages libedit) #:use-module (gnu packages libedit)
#:use-module (gnu packages llvm) #:use-module (gnu packages llvm)
#:use-module (gnu packages python) #:use-module (gnu packages python)
@ -171,3 +174,141 @@ latest DMD frontend and uses LLVM as backend.")
(license (list license:bsd-3 (license (list license:bsd-3
license:gpl2+ license:gpl2+
license:boost1.0)))) license:boost1.0))))
(define-public ldc-1.1.0-beta6
;; The phobos, druntime and dmd-testsuite dependencies do not have a newer
;; release than 1.1.0-beta4, hence the need to make use of the older-version
;; variable to hold this variable.
(let ((older-version "1.1.0-beta4"))
(package
(inherit ldc)
(name "ldc")
(version "1.1.0-beta6")
;; Beta version needed to compile various scientific tools that require
;; the newer beta versions, and won't compile successfully with the
;; older stable version.
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/ldc-developers/ldc/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0n53brlkm86jjkppy9xmzx7nyxykzj68kcxgv8q7d10s5hfscxs8"))))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'unpack-submodule-sources
(lambda* (#:key inputs #:allow-other-keys)
(let ((unpack (lambda (source target)
(with-directory-excursion target
(zero? (system* "tar" "xvf"
(assoc-ref inputs source)
"--strip-components=1"))))))
(and (unpack "phobos-src" "runtime/phobos")
(unpack "druntime-src" "runtime/druntime")
(unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")))))
;; The 'patch-dmd2 step in ldc causes the build to fail since
;; dmd2/root/port.c no longer exists. Arguments needed to have
;; 'patch-dmd2 step removed, but retain everything else.
(add-after 'unpack-submodule-sources 'patch-phobos
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "runtime/phobos/std/process.d"
(("/bin/sh") (which "sh"))
(("echo") (which "echo")))
(substitute* "runtime/phobos/std/datetime.d"
(("/usr/share/zoneinfo/")
(string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")))
(substitute* "tests/d2/dmd-testsuite/Makefile"
(("/bin/bash") (which "bash")))
#t)))))
(native-inputs
`(("llvm" ,llvm)
("clang" ,clang)
("ldc" ,ldc)
("python-lit" ,python-lit)
("python-wrapper" ,python-wrapper)
("unzip" ,unzip)
("gdb" ,gdb)
("phobos-src"
,(origin
(method url-fetch)
(uri (string-append
"https://github.com/ldc-developers/phobos/archive/ldc-v"
older-version ".tar.gz"))
(sha256
(base32
"1iwy5rs0rqkicj1zfsa5yqvk8ard99bfr8g69qmhlbzb98q0kpks"))
;; This patch deactivates some tests that depend on network access
;; to pass. It also deactivates some tests that have some reliance
;; on timezone.
;;
;; For the network tests, there's an effort to get a version flag
;; added to deactivate these tests for distribution packagers
;; that is being pursued at
;; <https://forum.dlang.org/post/zmdbdgnzrxyvtpqafvyg@forum.dlang.org>.
;; It also deactivates a test that requires /root
(patches (search-patches "ldc-1.1.0-disable-phobos-tests.patch"))))
("druntime-src"
,(origin
(method url-fetch)
(uri (string-append
"https://github.com/ldc-developers/druntime/archive/ldc-v"
older-version ".tar.gz"))
(sha256
(base32
"1qsiw5lz1pr8ms9myjf8b94nqi7f1781k226jvxwnhkjg11d0s63"))))
("dmd-testsuite-src"
,(origin
(method url-fetch)
(uri (string-append
"https://github.com/ldc-developers/dmd-testsuite/archive/ldc-v"
older-version ".tar.gz"))
(sha256
(base32
"0jp54hyi75i9g41rvgmm3zg21yzv57q8dghrhb432rb0n9j15mbp"))
;; Remove the gdb tests that fails with a "Error: No such file or
;; directory" error, despite the files being present in the debug
;; files left with the --keep-failed flag to guix build.
(patches (search-patches "ldc-1.1.0-disable-dmd-tests.patch")))))))))
(define-public ldc-beta ldc-1.1.0-beta6)
(define-public dub
(package
(name "dub")
(version "1.2.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/dlang/dub/archive/"
"v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1sd8i1rvxc7y7kk0y6km5zyvaladc5zh56r6afj74ndd63dssv43"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; it would have tested itself by installing some packages (vibe etc)
#:phases
(modify-phases %standard-phases
(delete 'configure)
(replace 'build
(lambda _
(zero? (system* "./build.sh"))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(outbin (string-append out "/bin")))
(mkdir-p outbin)
(install-file "bin/dub" outbin)
#t))))))
(inputs
`(("curl" ,curl)))
(native-inputs
`(("ldc" ,ldc)))
(home-page "https://code.dlang.org/getting_started")
(synopsis "DUB package manager")
(description "This package provides the D package manager.")
(license license:expat)))

View File

@ -3,6 +3,7 @@
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
;;; Copyright © 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -33,7 +34,7 @@
(define-public libevent (define-public libevent
(package (package
(name "libevent") (name "libevent")
(version "2.0.22") (version "2.1.8")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -41,13 +42,16 @@
version "-stable/libevent-" version "-stable.tar.gz")) version "-stable/libevent-" version "-stable.tar.gz"))
(sha256 (sha256
(base32 (base32
"18qz9qfwrkakmazdlwxvjmw8p76g70n3faikwvdwznns1agw9hki")) "1hhxnxlr0fsdv7bdmzsnhdz16fxf3jg2r6vyljcl3kj6pflcap4n"))
(patches (search-patches "libevent-dns-tests.patch")))) (patches (search-patches "libevent-2.1-dns-tests.patch"
;; XXX: Try removing this for > 2.1.8.
;; https://github.com/libevent/libevent/issues/452
"libevent-2.1-skip-failing-test.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(;; Dependencies used for the tests and for `event_rpcgen.py'. `(("python" ,python-2))) ; for 'event_rpcgen.py'
("which" ,which) (native-inputs
("python" ,python-wrapper))) `(("which" ,which)))
(home-page "http://libevent.org/") (home-page "http://libevent.org/")
(synopsis "Event notification library") (synopsis "Event notification library")
(description (description
@ -62,6 +66,24 @@ then add or remove events dynamically without having to change the event
loop.") loop.")
(license bsd-3))) (license bsd-3)))
(define-public libevent-2.0
(package
(inherit libevent)
(version "2.0.22")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/libevent/libevent/releases/download/release-"
version "-stable/libevent-" version "-stable.tar.gz"))
(sha256
(base32
"18qz9qfwrkakmazdlwxvjmw8p76g70n3faikwvdwznns1agw9hki"))
(patches (search-patches
"libevent-dns-tests.patch"
"libevent-2.0-evdns-fix-remote-stack-overread.patch"
"libevent-2.0-evutil-fix-buffer-overflow.patch"
"libevent-2.0-evdns-fix-searching-empty-hostnames.patch"))))))
(define-public libev (define-public libev
(package (package
(name "libev") (name "libev")

View File

@ -20,6 +20,7 @@
;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll@gmail.com> ;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll@gmail.com>
;;; Copyright © 2016 ng0 <ng0@libertad.pw> ;;; Copyright © 2016 ng0 <ng0@libertad.pw>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -62,6 +63,7 @@
#:use-module (gnu packages gperf) #:use-module (gnu packages gperf)
#:use-module (gnu packages gtk) #:use-module (gnu packages gtk)
#:use-module (gnu packages libusb) #:use-module (gnu packages libusb)
#:use-module (gnu packages man)
#:use-module (gnu packages maths) #:use-module (gnu packages maths)
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
@ -343,14 +345,14 @@ It has been modified to remove all non-free binary blobs.")
(define %intel-compatible-systems '("x86_64-linux" "i686-linux")) (define %intel-compatible-systems '("x86_64-linux" "i686-linux"))
(define-public linux-libre (define-public linux-libre
(make-linux-libre "4.9.5" (make-linux-libre "4.9.6"
"1s8lip1hxjsza0qqw93kwp3281rbgzhk4vnvy6fmny8iz7y75vzd" "0mafa628la5qj26rff014mmih2widl5k2sjxg152lmpgijmf6qhd"
%intel-compatible-systems %intel-compatible-systems
#:configuration-file kernel-config)) #:configuration-file kernel-config))
(define-public linux-libre-4.4 (define-public linux-libre-4.4
(make-linux-libre "4.4.44" (make-linux-libre "4.4.45"
"0rg5iw7qxry84hha8vfnzrjq0sfnr3vvdwhdz858y7pblg2vr3f0" "1c6nigbl8yrqpaz89954la956lshr3p0llm52phxq2h06zblsp87"
%intel-compatible-systems %intel-compatible-systems
#:configuration-file kernel-config)) #:configuration-file kernel-config))
@ -361,8 +363,8 @@ It has been modified to remove all non-free binary blobs.")
#:configuration-file kernel-config)) #:configuration-file kernel-config))
;; Avoid rebuilding kernel variants when there is a minor version bump. ;; Avoid rebuilding kernel variants when there is a minor version bump.
(define %linux-libre-version "4.9.5") (define %linux-libre-version "4.9.6")
(define %linux-libre-hash "1s8lip1hxjsza0qqw93kwp3281rbgzhk4vnvy6fmny8iz7y75vzd") (define %linux-libre-hash "0mafa628la5qj26rff014mmih2widl5k2sjxg152lmpgijmf6qhd")
(define-public linux-libre-arm-generic (define-public linux-libre-arm-generic
(make-linux-libre %linux-libre-version (make-linux-libre %linux-libre-version
@ -1600,14 +1602,14 @@ system.")
(define-public kbd (define-public kbd
(package (package
(name "kbd") (name "kbd")
(version "2.0.3") (version "2.0.4")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://kernel.org/linux/utils/kbd/kbd-" (uri (string-append "mirror://kernel.org/linux/utils/kbd/kbd-"
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0ppv953gn2zylcagr4z6zg5y2x93dxrml29plypg6xgbq3hrv2bs")) "124swm93dm4ca0pifgkrand3r9gvj3019d4zkfxsj9djpvv0mnaz"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
@ -2475,7 +2477,7 @@ MPEG-2 and audio over Linux IEEE 1394.")
(define-public mdadm (define-public mdadm
(package (package
(name "mdadm") (name "mdadm")
(version "3.4") (version "4.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -2483,13 +2485,14 @@ MPEG-2 and audio over Linux IEEE 1394.")
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0248v9f28mrbwabl94ck22gfim29sqhkf70wrpfi52nk4x3bxl17")))) "1ad3mma641946wn5lsllwf0lifw9lps34fv1nnkhyfpd9krffshx"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("udev" ,eudev))) `(("udev" ,eudev)))
(arguments (arguments
`(#:make-flags (let ((out (assoc-ref %outputs "out"))) `(#:make-flags (let ((out (assoc-ref %outputs "out")))
(list "INSTALL=install" (list "CC=gcc"
"INSTALL=install"
"CHECK_RUN_DIR=0" "CHECK_RUN_DIR=0"
;; TODO: tell it where to find 'sendmail' ;; TODO: tell it where to find 'sendmail'
;; (string-append "MAILCMD=" <???> "/sbin/sendmail") ;; (string-append "MAILCMD=" <???> "/sbin/sendmail")
@ -2666,7 +2669,7 @@ is flexible, efficient and uses a modular implementation.")
(define-public fuse-exfat (define-public fuse-exfat
(package (package
(name "fuse-exfat") (name "fuse-exfat")
(version "1.2.5") (version "1.2.6")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -2674,7 +2677,7 @@ is flexible, efficient and uses a modular implementation.")
version "/" name "-" version ".tar.gz")) version "/" name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1i0sh0s6wnm4dqxli3drva871wgbbm57qjf592vnswna9hc6bvim")))) "1rvq4hapy2anal1vg1yidv4x8rg4iw5sxfwqixkw0q2qsxb54471"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))
@ -2733,7 +2736,7 @@ and copy/paste text in the console and in xterm.")
(define-public btrfs-progs (define-public btrfs-progs
(package (package
(name "btrfs-progs") (name "btrfs-progs")
(version "4.9") (version "4.9.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://kernel.org/linux/kernel/" (uri (string-append "mirror://kernel.org/linux/kernel/"
@ -2741,7 +2744,7 @@ and copy/paste text in the console and in xterm.")
"btrfs-progs-v" version ".tar.xz")) "btrfs-progs-v" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"18y88avadn4wb3xmczd6pfcjr7ik62dw4phk6fmkms2j8vmvl9z2")))) "1ppy2y9vypxw9awchari21yd3s2d7w2a9q3f4jq7dnjy5gyrnjj6"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("out" (outputs '("out"
"static")) ; static versions of binaries in "out" (~16MiB!) "static")) ; static versions of binaries in "out" (~16MiB!)
@ -3372,3 +3375,45 @@ monitoring tools for Linux. These include @code{mpstat}, @code{iostat},
@code{tapestat}, @code{cifsiostat}, @code{pidstat}, @code{sar}, @code{sadc}, @code{tapestat}, @code{cifsiostat}, @code{pidstat}, @code{sar}, @code{sadc},
@code{sadf} and @code{sa}.") @code{sadf} and @code{sa}.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public light
(package
(name "light")
(version "1.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/haikarainen/" name
"/archive/v" version ".tar.gz"))
(sha256
(base32
"0r5gn6c0jcxknzybl6059dplxv46dpahchqq4gymrs7z8bp0hilp"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests
#:make-flags (list "CC=gcc"
(string-append "PREFIX=" %output))
#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-after 'unpack 'patch-makefile
(lambda _
(substitute* "Makefile" (("chown") "#")))))))
(native-inputs
`(("help2man" ,help2man)))
(home-page "https://haikarainen.github.io/light")
(synopsis "GNU/Linux application to control backlights")
(description
"Light is a program to send commands to screen backlight controllers
under GNU/Linux. Features include:
@itemize
@item It does not rely on X.
@item Light can automatically figure out the best controller to use, making
full use of underlying hardware.
@item It is possible to set a minimum brightness value, as some controllers
set the screen to be pitch black at a vaĺue of 0 (or higher).
@end itemize
Light is the successor of lightscript.")
(license license:gpl3+)))

View File

@ -401,3 +401,60 @@ Notable examples are GTK+, GStreamer and Webkit.")
Grammars (PEGs).") Grammars (PEGs).")
(home-page "http://www.inf.puc-rio.br/~roberto/lpeg") (home-page "http://www.inf.puc-rio.br/~roberto/lpeg")
(license license:expat))) (license license:expat)))
(define-public lua5.2-lpeg
(package (inherit lua-lpeg)
(name "lua5.2-lpeg")
;; XXX: The arguments field is almost an exact copy of the field in
;; "lua-lpeg", except for the version string, which was derived from "lua"
;; and now is taken from "lua-5.2". See this discussion for context:
;; http://lists.gnu.org/archive/html/guix-devel/2017-01/msg02048.html
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'configure)
;; `make install` isn't available, so we have to do it manually
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(lua-version ,(version-major+minor (package-version lua-5.2))))
(install-file "lpeg.so"
(string-append out "/lib/lua/" lua-version))
(install-file "re.lua"
(string-append out "/share/lua/" lua-version))
#t))))
#:test-target "test"))
(inputs `(("lua", lua-5.2)))))
;; Lua 5.3 is not supported.
(define-public lua5.2-bitop
(package
(name "lua5.2-bitop")
(version "1.0.2")
(source (origin
(method url-fetch)
(uri (string-append "http://bitop.luajit.org/download/"
"LuaBitOp-" version ".tar.gz"))
(sha256
(base32
"16fffbrgfcw40kskh2bn9q7m3gajffwd2f35rafynlnd7llwj1qj"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
#:make-flags
(list "INSTALL=install -pD"
(string-append "INSTALLPATH=printf "
(assoc-ref %outputs "out")
"/lib/lua/"
,(version-major+minor (package-version lua-5.2))
"/bit/bit.so"))
#:phases
(modify-phases %standard-phases
(delete 'configure))))
(inputs `(("lua", lua-5.2)))
(home-page "http://bitop.luajit.org/index.html")
(synopsis "Bitwise operations on numbers for Lua")
(description
"Lua BitOp is a C extension module for Lua which adds bitwise operations
on numbers.")
(license license:expat)))

View File

@ -86,6 +86,7 @@
#:use-module (gnu packages web) #:use-module (gnu packages web)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (gnu packages docbook)
#:use-module ((guix licenses) #:use-module ((guix licenses)
#:select (gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+ #:select (gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+
non-copyleft (expat . license:expat) bsd-3 non-copyleft (expat . license:expat) bsd-3
@ -247,6 +248,83 @@ aliasing facilities to work just as they would on normal mail.")
operating systems.") operating systems.")
(license gpl2+))) (license gpl2+)))
(define-public neomutt
(package
(inherit mutt)
(name "neomutt")
(version "20170113")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/" name "/" name
"/archive/" name "-" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0cqr77q263b5qcmdw6g0qixdpk6gmzgzpa03v226nr55v2ips9jg"))))
(inputs
`(("cyrus-sasl" ,cyrus-sasl)
("gdbm" ,gdbm)
("gpgme" ,gpgme)
("ncurses" ,ncurses)
("gnutls" ,gnutls)
("openssl" ,openssl) ;For smime
("perl" ,perl)
("libxslt" ,libxslt)
("libidn" ,libidn)
("libxml2" ,libxml2)
("docbook-xsl" ,docbook-xsl)
("notmuch" ,notmuch)))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("pkg-config" ,pkg-config)))
(arguments
`(#:configure-flags
(list "--enable-smtp"
"--enable-imap"
"--enable-pop"
"--enable-gpgme"
;; database, implies header caching
"--without-tokyocabinet"
"--without-qdbm"
"--without-bdb"
"--without-lmdb"
"--with-gdbm"
"--with-gnutls"
"--without-ssl"
"--with-sasl"
"--with-regex"
"--enable-smime"
"--enable-notmuch"
"--with-idn"
;; If we do not set this, neomutt wants to check
;; whether the path exists, which it does not
;; in the chroot. The workaround is this.
"--with-mailpath=/var/mail"
"--with-external-dotlock"
"--enable-nntp"
"--enable-compressed"
(string-append "--with-curses="
(assoc-ref %build-inputs "ncurses")))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'autoconf
(lambda _
(zero? (system* "sh" "autoreconf" "-vfi")))))))
(home-page "https://www.neomutt.org/")
(synopsis "Command-line mail reader based on Mutt")
(description
"NeoMutt is a command-line mail reader which is based on mutt.
It adds a large amount of features to mutt, and they all find their way
into mutt, so it is not a fork but a large set of feature patches.")))
(define-public gmime (define-public gmime
(package (package
(name "gmime") (name "gmime")
@ -327,7 +405,7 @@ and corrections. It is based on a Bayesian filter.")
(define-public offlineimap (define-public offlineimap
(package (package
(name "offlineimap") (name "offlineimap")
(version "7.0.12") (version "7.0.13")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/OfflineIMAP/offlineimap/" (uri (string-append "https://github.com/OfflineIMAP/offlineimap/"
@ -335,7 +413,7 @@ and corrections. It is based on a Bayesian filter.")
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1m1lp7wxnra8k7lsqc8xlm5giy3i89wvmp35jjb1gf4yslpddnkz")))) "1kl72wcxnxb4y5lm2f7ymwjsisnnpwb4w971ajkxlsiwjhzq8i7p"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("asciidoc" ,asciidoc) `(("asciidoc" ,asciidoc)

View File

@ -12,9 +12,11 @@
;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de> ;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de>
;;; Copyright © 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -37,6 +39,7 @@
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
@ -953,17 +956,72 @@ Work may be performed both at the interactive command-line as well as via
script files.") script files.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public opencascade-oce
(package
(name "opencascade-oce")
(version "0.17.2")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/tpaviot/oce/archive/OCE-"
version
".tar.gz"))
(sha256
(base32
"0vpmnb0k5y2f7lpmwx9pg9yfq24zjvnsak5alzacncfm1hv9b6cd"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags
(list "-DOCE_TESTING:BOOL=ON"
"-DOCE_USE_TCL_TEST_FRAMEWORK:BOOL=ON"
"-DOCE_DRAW:BOOL=ON"
(string-append "-DOCE_INSTALL_PREFIX:PATH="
(assoc-ref %outputs "out"))
"-UCMAKE_INSTALL_RPATH")))
(inputs
`(("freetype" ,freetype)
("glu" ,glu)
("libxmu" ,libxmu)
("mesa" ,mesa)
("tcl" ,tcl)
("tk" ,tk)))
(native-inputs
`(("python" ,python-wrapper)))
(home-page "https://github.com/tpaviot/oce")
(synopsis "Libraries for 3D modeling and numerical simulation")
(description
"Open CASCADE is a set of libraries for the development of applications
dealing with 3D CAD data or requiring industrial 3D capabilities. It includes
C++ class libraries providing services for 3D surface and solid modeling, CAD
data exchange, and visualization. It is used for development of specialized
software dealing with 3D models in design (CAD), manufacturing (CAM),
numerical simulation (CAE), measurement equipment (CMM), and quality
control (CAQ) domains.
This is the ``Community Edition'' (OCE) of Open CASCADE, which gathers
patches, improvements, and experiments contributed by users over the official
Open CASCADE library.")
(license (list license:lgpl2.1; OCE libraries, with an exception for the
; use of header files; see
; OCCT_LGPL_EXCEPTION.txt
license:public-domain; files
; src/Standard/Standard_StdAllocator.hxx and
; src/NCollection/NCollection_StdAllocator.hxx
license:expat; file src/OpenGl/OpenGl_glext.h
license:bsd-3)))); test framework gtest
(define-public gmsh (define-public gmsh
(package (package
(name "gmsh") (name "gmsh")
(version "2.15.0") (version "2.16.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://gmsh.info/src/gmsh-" (uri (string-append "http://gmsh.info/src/gmsh-"
version "-source.tgz")) version "-source.tgz"))
(sha256 (sha256
(base32 "02h7fk4vv8qwnq3ymm409c5sp4nksd0m9h2vkxqmy42l0ic4nalr")) (base32 "1slf0bfkwrcgn6296wb4qhbk4ahz6i4wfb10hnim08x05vrylag8"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
;; Remove non-free METIS code ;; Remove non-free METIS code
@ -2840,3 +2898,45 @@ instruction sets. Thus, an application written with Vc can be compiled for:
@end enumerate\n") @end enumerate\n")
(home-page "https://github.com/VcDevel/Vc") (home-page "https://github.com/VcDevel/Vc")
(license license:bsd-3))) (license license:bsd-3)))
(define-public reducelcs
;; This is the last commit which is available upstream, no
;; release happened since 2010.
(let ((commit "474f88deb968061abe8cf11c959e02319b8ae5c0")
(revision "1"))
(package
(name "reducelcs")
(version (string-append "1.0-" revision "." (string-take commit 7)))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/gdv/Reduce-Expand-for-LCS")
(commit commit)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"1rllzcfwc042c336mhq262a8ha90x6afq30kvk60r7i4761j4yjm"))))
(build-system gnu-build-system)
(inputs
`(("openlibm" ,openlibm)))
(arguments
`(#:tests? #f ; no tests
#:phases
(modify-phases %standard-phases
(delete 'configure) ; No configure script exists.
(replace 'install ; No install phase exists.
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin")))
(install-file "Approximation" bin)
(install-file "CollectResults" bin)
(install-file "GenerateInstances" bin)
#t))))))
(synopsis "Approximate Longest Commons Subsequence computation tool")
(description
"@code{reduceLCS} is an implementation of the Reduce-Expand
algorithm for LCS. It is a fast program to compute the approximate
Longest Commons Subsequence of a set of strings.")
(home-page "https://github.com/gdv/Reduce-Expand-for-LCS")
(license license:gpl3+))))

View File

@ -78,7 +78,12 @@
#:use-module (gnu packages xiph) #:use-module (gnu packages xiph)
#:use-module (gnu packages audio) #:use-module (gnu packages audio)
#:use-module (gnu packages bison) #:use-module (gnu packages bison)
#:use-module (gnu packages fontutils)) #:use-module (gnu packages fontutils)
#:use-module (gnu packages bash)
#:use-module (gnu packages guile)
#:use-module (gnu packages less)
#:use-module (gnu packages readline)
#:use-module (gnu packages texinfo))
(define-public libotr (define-public libotr
(package (package
@ -111,37 +116,16 @@ keys, no previous conversation is compromised.")
(home-page "https://otr.cypherpunks.ca/") (home-page "https://otr.cypherpunks.ca/")
(license (list license:lgpl2.1 license:gpl2)))) (license (list license:lgpl2.1 license:gpl2))))
;; These patches together fix https://github.com/bitlbee/bitlbee/pull/55, are
;; already upstream, and should be unnecessary when the next bitlbee comes
;; out.
(define %bitlbee-buddy-nick-change-patch
(origin
(method url-fetch)
(uri "https://github.com/bitlbee/bitlbee/commit/a42fda42.patch")
(sha256
(base32
"1mzjhcdn0rxir5mzgqz9kv142ai38p1iq2lajqx89wb7x0bp51zx"))))
(define %bitlbee-always-use-nicks-patch
(origin
(method url-fetch)
(uri "https://github.com/bitlbee/bitlbee/commit/3320d6d9.patch")
(sha256
(base32
"14d9kb5zdzh5hzakdvrbviz83rix0j2lq9rzb58b2fn92fp8yixd"))))
(define-public bitlbee (define-public bitlbee
(package (package
(name "bitlbee") (name "bitlbee")
(version "3.4.2") (version "3.5.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://get.bitlbee.org/src/bitlbee-" (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 "0mza8lnfwibmklz8hdzg4f7p83hblf4h6fbf7d732kzpvra5bj39")) (base32 "0sgsn0fv41rga46mih3fyv65cvfa6rvki8x92dn7bczbi7yxfdln"))))
(patches
(list %bitlbee-buddy-nick-change-patch
%bitlbee-always-use-nicks-patch))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config) (native-inputs `(("pkg-config" ,pkg-config)
("check" ,check))) ("check" ,check)))
@ -1188,4 +1172,56 @@ support, and more.")
(synopsis "Small XMPP console client") (synopsis "Small XMPP console client")
(license license:gpl2+))) (license license:gpl2+)))
(define-public freetalk
(package
(name "freetalk")
(version "4.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/freetalk/freetalk-"
version ".tar.gz"))
(sha256
(base32
"1rmrn7a1bb7vm26yaklrvx008a9qhwc32s57dwrlf40lv9gffwny"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'configure 'autogen
(lambda _
(zero? (system* "sh" "autogen.sh"))))
;; For 'system' commands in Scheme code.
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bash (assoc-ref inputs "bash"))
(coreutils (assoc-ref inputs "coreutils"))
(less (assoc-ref inputs "less")))
(wrap-program (string-append out "/bin/freetalk")
`("PATH" ":" prefix
,(map (lambda (dir)
(string-append dir "/bin"))
(list bash coreutils less))))
#t))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("pkg-config" ,pkg-config)
("texinfo" ,texinfo)))
(inputs
`(("bash" ,bash)
("glib" ,glib)
("guile" ,guile-2.0)
("less" ,less)
("loudmouth" ,loudmouth)
("readline" ,readline)))
(synopsis "Extensible console-based Jabber client")
(description
"GNU Freetalk is a command-line Jabber/XMPP chat client. It notably uses
the Readline library to handle input, so it features convenient navigation of
text as well as tab-completion of buddy names, commands and English words. It
is also scriptable and extensible via Guile.")
(home-page "https://www.gnu.org/software/freetalk")
(license license:gpl3+)))
;;; messaging.scm ends here ;;; messaging.scm ends here

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.org> ;;; Copyright © 2014 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.org>
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -21,44 +22,55 @@
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (gnu packages libbsd)
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
#:use-module (gnu packages pkg-config)) #:use-module (gnu packages pkg-config))
(define-public mg (define-public mg
(package (package
(name "mg") (name "mg")
(version "20050429") (version "20161005")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://homepage.boetes.org/software/mg/mg-" (uri (string-append "http://homepage.boetes.org/software/mg/mg-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"19kib0aha4a40izzds7r63qfb2akq4sily6k28fl0n0zdgq0cna1")) "0qaydk2cy765n9clghmi5gdnpwn15y2v0fj6r0jcm0v7d89vbz5p"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
(substitute* "Makefile.in" (substitute* "GNUmakefile"
(("-Werror") "") (("/usr/bin/") ""))))))
(("-lcurses") "-lncurses")
(("/usr/bin/install") "install -D")
(("/usr/bin/strip") "strip"))))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs (inputs
`(("ncurses" ,ncurses))) `(("libbsd" ,libbsd)
("ncurses" ,ncurses)))
(arguments (arguments
;; No test suite available. ;; No test suite available.
'(#:tests? #f '(#:tests? #f
#:phases (alist-cons-before #:make-flags (list (string-append "prefix=" %output)
'configure 'pre-configure "CURSES_LIBS=-lncurses"
(lambda* (#:key outputs #:allow-other-keys) "CC=gcc")
(substitute* "Makefile.in" #:phases (modify-phases %standard-phases
(("(prefix=[[:blank:]]*)/usr/local" all prefix) (delete 'configure)
(string-append prefix (assoc-ref outputs "out"))))) (add-before 'install 'patch-tutorial-location
%standard-phases))) (lambda* (#:key outputs #:allow-other-keys)
(substitute* "mg.1"
(("/usr") (assoc-ref outputs "out")))
#t))
(add-after 'install 'install-tutorial
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(doc (string-append out "/share/doc/mg")))
(install-file "tutorial" doc)
#t))))))
(home-page "http://homepage.boetes.org/software/mg/") (home-page "http://homepage.boetes.org/software/mg/")
(synopsis "Microscopic GNU Emacs clone") (synopsis "Microscopic GNU Emacs clone")
(description (description
"mg is Micro GNU Emacs; this is a portable version of the mg maintained "Mg (mg) is a GNU Emacs style editor, with which it is \"broadly\"
by the OpenBSD team.") compatible. This is a portable version of the mg maintained by the OpenBSD
team.")
(license public-domain))) (license public-domain)))

View File

@ -48,7 +48,7 @@ FAT-specific file attributes.")
(define-public exfat-utils (define-public exfat-utils
(package (package
(name "exfat-utils") (name "exfat-utils")
(version "1.2.5") (version "1.2.6")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -56,7 +56,7 @@ FAT-specific file attributes.")
version "/" name "-" version ".tar.gz")) version "/" name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1qhvjd6dmzhxjdnm4cklajbr03wsjjvkxrsjij517a33napcl93s")))) "0hxcz0y3rd79nycjlzaca9wh9qj64rw8rzm0xk4jk9ljry96csxr"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(home-page "https://github.com/relan/exfat") (home-page "https://github.com/relan/exfat")
(synopsis "Utilities to manipulate exFAT file systems") (synopsis "Utilities to manipulate exFAT file systems")

View File

@ -469,7 +469,7 @@ which can be used to encrypt a password with @code{crypt(3)}.")
(define-public wireshark (define-public wireshark
(package (package
(name "wireshark") (name "wireshark")
(version "2.2.3") (version "2.2.4")
(synopsis "Network traffic analyzer") (synopsis "Network traffic analyzer")
(source (source
(origin (origin
@ -478,7 +478,7 @@ which can be used to encrypt a password with @code{crypt(3)}.")
version ".tar.bz2")) version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0fsrvl6sp772g2q2j24h10h9lfda6q67x7wahjjm8849i2gciflp")))) "049r5962yrajhhz9r4dsnx403dab50d6091y2mw298ymxqszp9s2"))))
(build-system glib-or-gtk-build-system) (build-system glib-or-gtk-build-system)
(inputs `(("bison" ,bison) (inputs `(("bison" ,bison)
("c-ares" ,c-ares) ("c-ares" ,c-ares)

View File

@ -40,6 +40,7 @@
#:use-module (gnu packages m4) #:use-module (gnu packages m4)
#:use-module (gnu packages multiprecision) #:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
#:use-module (gnu packages pcre)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python) #:use-module (gnu packages python)
@ -65,6 +66,46 @@
(number->string file-number) "/" name "-" version (number->string file-number) "/" name "-" version
".tar.gz")) ".tar.gz"))
;; Janestreet packages are found in a similar way and all need the same patch.
(define (janestreet-origin name version hash)
(origin (method url-fetch)
(uri (string-append "https://ocaml.janestreet.com/ocaml-core/"
(version-major+minor version) "/files/"
name "-" version ".tar.gz"))
(sha256 (base32 hash))
(modules '((guix build utils)))
(snippet
(let ((pattern (string-append "lib/" name)))
`(begin
;; install.ml contains an invalid reference to the ppx file and
;; propagates this error to the generated META file. It
;; looks for it in the "lib" directory, but it is installed in
;; "lib/ocaml/site-lib/package". This substitute does not change
;; this file for non ppx packages.
(substitute* "install.ml"
((,pattern) (string-append "lib/ocaml/site-lib/" ,name)))
;; The standard Makefile would try to install janestreet modules
;; in OCaml's directory in the store, which is read-only.
(substitute* "Makefile"
(("--prefix")
"--libdir $(LIBDIR) --prefix")))))))
;; They also require almost the same set of arguments
(define janestreet-arguments
`(#:use-make? #t
#:make-flags
(list (string-append "CONFIGUREFLAGS=--prefix "
(assoc-ref %outputs "out")
" --enable-tests")
(string-append "LIBDIR="
(assoc-ref %outputs "out")
"/lib/ocaml/site-lib")
;; for ocaml-bin-prot, otherwise ignored
(string-append "OCAML_TOPLEVEL_PATH="
(assoc-ref %build-inputs "findlib")
"/lib/ocaml/site-lib"))
#:phases (modify-phases %standard-phases (delete 'configure))))
(define-public ocaml (define-public ocaml
(package (package
(name "ocaml") (name "ocaml")
@ -1696,3 +1737,291 @@ without a complete in-memory representation of the data.")
(description "Client-side URL transfer library, supporting HTTP and a (description "Client-side URL transfer library, supporting HTTP and a
multitude of other network protocols (FTP/SMTP/RTSP/etc).") multitude of other network protocols (FTP/SMTP/RTSP/etc).")
(license license:isc))) (license license:isc)))
(define-public ocaml-base64
(package
(name "ocaml-base64")
(version "2.1.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/mirage/ocaml-base64/"
"releases/download/v" version "/base64-"
version ".tbz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1p45sawchmrkr22gkmydjc4ary23pisp58zsnb7iq7d82nxs1lfq"))))
(build-system ocaml-build-system)
(arguments
`(#:build-flags (list "build" "--tests" "true")
#:phases
(modify-phases %standard-phases
(delete 'configure))))
(native-inputs
`(("topkg" ,ocaml-topkg)
("opam" ,opam)
("rresult" ,ocaml-rresult)
("bos" ,ocaml-bos)
("alcotest" ,ocaml-alcotest)))
(home-page "https://github.com/mirage/ocaml-base64")
(synopsis "Base64 encoding for OCaml")
(description "Base64 is a group of similar binary-to-text encoding schemes
that represent binary data in an ASCII string format by translating it into a
radix-64 representation. It is specified in RFC 4648.")
(license license:isc)))
(define-public ocamlify
(package
(name "ocamlify")
(version "0.0.2")
(source (origin
(method url-fetch)
(uri (ocaml-forge-uri name version 1209))
(sha256
(base32
"1f0fghvlbfryf5h3j4as7vcqrgfjb4c8abl5y0y5h069vs4kp5ii"))))
(build-system ocaml-build-system)
; tests are done during build
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'check))))
(home-page "https://forge.ocamlcore.org/projects/ocamlify")
(synopsis "Include files in OCaml code")
(description "OCamlify allows to create OCaml source code by including
whole files into OCaml string or string list. The code generated can be
compiled as a standard OCaml file. It allows embedding external resources as
OCaml code.")
(license license:lgpl2.1+))); with the OCaml static compilation exception
(define-public omake
(package
(name "omake")
(version "0.10.1")
(source (origin
(method url-fetch)
(uri (string-append "http://download.camlcity.org/download/"
"omake-" version ".tar.gz"))
(sha256
(base32
"093ansbppms90hiqvzar2a46fj8gm9iwnf8gn38s6piyp70lrbsj"))
(patches (search-patches "omake-fix-non-determinism.patch"))))
(build-system ocaml-build-system)
(arguments
`(#:make-flags
(list (string-append "PREFIX=" (assoc-ref %outputs "out")))
#:tests? #f ; no test target
#:phases
(modify-phases %standard-phases
(add-before 'configure 'fix-makefile
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "mk/osconfig_unix.mk"
(("CC = cc") "CC = gcc")))))))
(native-inputs `(("hevea" ,hevea)))
(home-page "http://projects.camlcity.org/projects/omake.html")
(synopsis "Build system designed for scalability and portability")
(description "Similar to make utilities you may have used, but it features
many additional enhancements, including:
@enumerate
@item Support for projects spanning several directories or directory hierarchies.
@item Fast, reliable, automated, scriptable dependency analysis using MD5 digests,
with full support for incremental builds.
@item Dependency analysis takes the command lines into account whenever the
command line used to build a target changes, the target is considered
out-of-date.
@item Fully scriptable, includes a library that providing support for standard
tasks in C, C++, OCaml, and LaTeX projects, or a mixture thereof.
@end enumerate")
(license (list license:lgpl2.1 ; libmojave
license:expat ; OMake scripts
license:gpl2)))) ; OMake itself, with ocaml linking exception
; see LICENSE.OMake
(define-public ocaml-batteries
(package
(name "ocaml-batteries")
(version "2.5.3")
(source (origin
(method url-fetch)
(uri (ocaml-forge-uri "batteries" version 1650))
(sha256
(base32
"1a97w3x2l1jr5x9kj5gqm1x6b0q9fjqdcsvls7arnl3bvzgsia0n"))))
(build-system ocaml-build-system)
(native-inputs
`(("qtest" ,ocaml-qtest)
("bisect" ,ocaml-bisect)
("ounit" ,ocaml-ounit)))
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'check) ; tests are run by the build phase
(replace 'build
(lambda* (#:key outputs #:allow-other-keys)
(zero? (system* "ocaml" "setup.ml" "-build")))))))
(home-page "http://batteries.forge.ocamlcore.org/")
(synopsis "Development platform for the OCaml programming language")
(description "Define a standard set of libraries which may be expected on
every compliant installation of OCaml and organize these libraries into a
hierarchy of modules.")
(license license:lgpl2.1+)))
(define-public ocaml-pcre
(package
(name "ocaml-pcre")
(version "7.2.3")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/mmottl/pcre-ocaml/archive"
"/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0rj6dw79px4sj2kq0iss2nzq3rnsn9wivvc0f44wa1mppr6njfb3"))))
(build-system ocaml-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'install 'link-lib
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(stubs (string-append out "/lib/ocaml/site-lib/stubslibs"))
(lib (string-append out "/lib/ocaml/site-lib/pcre")))
(mkdir-p stubs)
(symlink (string-append lib "/dllpcre_stubs.so")
(string-append stubs "/dllpcre_stubs.so"))))))))
(native-inputs
`(("batteries" ,ocaml-batteries)
("pcre:bin" ,pcre "bin")))
(propagated-inputs `(("pcre" ,pcre)))
(home-page "https://mmottl.github.io/pcre-ocaml")
(synopsis "Bindings to the Perl Compatibility Regular Expressions library")
(description "Pcre-ocaml offers library functions for string pattern
matching and substitution, similar to the functionality offered by the Perl
language.")
(license license:lgpl2.1+))); with the OCaml link exception
(define-public ocaml-expect
(package
(name "ocaml-expect")
(version "0.0.5")
(source (origin
(method url-fetch)
(uri (ocaml-forge-uri name version 1372))
(sha256
(base32
"07xq8w2x2vffc32z7vk6y14jwbfb1cw0m2lm1jzi60hnr1dvg8by"))))
(build-system ocaml-build-system)
(native-inputs
`(("ocaml-pcre" ,ocaml-pcre)
("ounit" ,ocaml-ounit)))
(propagated-inputs `(("batteries" ,ocaml-batteries)))
(home-page "https://forge.ocamlcore.org/projects/ocaml-expect/")
(synopsis "Simple implementation of expect")
(description "Help building unitary testing of interactive program. You
can match the question using a regular expression or a timeout.")
(license license:lgpl2.1+))) ; with the OCaml static compilation exception
(define-public ocaml-fileutils
(package
(name "ocaml-fileutils")
(version "0.5.1")
(source (origin
(method url-fetch)
(uri (ocaml-forge-uri name version 1651))
(sha256
(base32
"0g6zx2rcvacklxyli19ixcf6ich9ipxsps4k3jz98f5zlaab0a7g"))))
(build-system ocaml-build-system)
(native-inputs `(("ounit" ,ocaml-ounit)))
(home-page "http://ocaml-fileutils.forge.ocamlcore.org")
(synopsis "Pure OCaml functions to manipulate real file and filename")
(description "Library to provide pure OCaml functions to manipulate real
file (POSIX like) and filename.")
(license license:lgpl2.1+))) ; with the OCaml static compilation exception
(define-public ocaml-oasis
(package
(name "ocaml-oasis")
(version "0.4.8")
(source (origin
(method url-fetch)
(uri (ocaml-forge-uri name version 1669))
(sha256
(base32
"1ln7vc7ip6s5xbi20mhnn087xi4a2m5vqawx0703qqnfkzhmslqy"))
(modules '((guix build utils)))
(snippet
'(substitute* "test/test-main/Test.ml"
;; most of these tests fail because ld cannot find crti.o, but according
;; to the log file, the environment variables {LD_,}LIBRARY_PATH
;; are set correctly whene LD_LIBRARY_PATH is defined beforhand.
(("TestBaseCompat.tests;") "")
(("TestExamples.tests;") "")
(("TestFull.tests;") "")
(("TestPluginDevFiles.tests;") "")
(("TestPluginInternal.tests;") "")
(("TestPluginOCamlbuild.tests;") "")
(("TestPluginOMake.tests;") "")))))
(build-system ocaml-build-system)
(native-inputs
`(("ocamlify" ,ocamlify)
("ocamlmod" ,ocamlmod)
("ounit" ,ocaml-ounit)
("omake" ,omake)
("ocaml-expect" ,ocaml-expect)
("ocaml-pcre" ,ocaml-pcre)
("ocaml-fileutils" ,ocaml-fileutils)
("camlp4" ,camlp4)
("texlive" ,texlive)
("pkg-config" ,pkg-config)))
(home-page "https://oasis.forge.ocamlcore.org")
(synopsis "Integrates a configure, build, install system in OCaml projects")
(description "OASIS is a tool to integrate a configure, build and install
system in your OCaml projects. It helps to create standard entry points in your
build system and allows external tools to analyse your project easily.")
(license license:lgpl2.1+))) ; with ocaml static compilation exception
(define-public ocaml-js-build-tools
(package
(name "ocaml-js-build-tools")
(version "113.33.06")
(source (janestreet-origin "js-build-tools" version
"0r8z4fz8iy5y6hkdlkpwf6rk4qigcr3dzyv35585xgg2ahf12zy6"))
(native-inputs
`(("oasis" ,ocaml-oasis)
("opam" ,opam)))
(build-system ocaml-build-system)
(arguments janestreet-arguments)
(home-page "https://github.com/janestreet/js-build-tools")
(synopsis "Collection of tools to help building Jane Street Packages")
(description "This package contains tools to help building Jane Street
packages, but can be used for other purposes. It contains:
@enumerate
@item an @command{oasis2opam-install} tool to produce a @file{.install} file
from the oasis build log
@item a @code{js_build_tools} ocamlbuild plugin with various goodies.
@end enumerate")
(license license:asl2.0)))
(define-public ocaml-bin-prot
(package
(name "ocaml-bin-prot")
(version "113.33.03")
(source (janestreet-origin "bin_prot" version
"1ws8c017z8nbj3vw92ndvjk9011f71rmp3llncbv8r5fc76wqv3l"))
(native-inputs
`(("js-build-tools" ,ocaml-js-build-tools)
("opam" ,opam)))
(build-system ocaml-build-system)
(arguments janestreet-arguments)
(home-page "https://github.com/janestreet/bin_prot/")
(synopsis "Binary protocol generator")
(description "This library contains functionality for reading and writing
OCaml-values in a type-safe binary protocol. It is extremely efficient,
typically supporting type-safe marshalling and unmarshalling of even highly
structured values at speeds sufficient to saturate a gigabit connection. The
protocol is also heavily optimized for size, making it ideal for long-term
storage of large amounts of data.")
(license license:asl2.0)))

View File

@ -45,7 +45,7 @@
(define-public parallel (define-public parallel
(package (package
(name "parallel") (name "parallel")
(version "20161222") (version "20170122")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -53,7 +53,7 @@
version ".tar.bz2")) version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1chgr3csyc7hbq2wq4jnwnbsr3ix8rzsk2lf4vdnvkjpd6dvw517")))) "19maf889vj1c4zakqwap58f44hgypyb5mzzwfsliir9gvvcq6zj1"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:phases `(#:phases

View File

@ -36,6 +36,7 @@
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages gnupg) #:use-module (gnu packages gnupg)
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile) #:use-module (gnu packages guile)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages man) #:use-module (gnu packages man)
@ -240,6 +241,15 @@ random passwords that pass the checks.")
#:tests? #f #:tests? #f
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'install 'wrap-assword
(lambda* (#:key outputs #:allow-other-keys)
(let ((prog (string-append
(assoc-ref outputs "out")
"/bin/assword"))
(gi-typelib-path (getenv "GI_TYPELIB_PATH")))
(wrap-program prog
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))
#t)))
(add-after 'install 'manpage (add-after 'install 'manpage
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(and (and
@ -255,7 +265,8 @@ random passwords that pass the checks.")
(native-inputs (native-inputs
`(("txt2man" ,txt2man))) `(("txt2man" ,txt2man)))
(inputs (inputs
`(("python-xdo" ,python-xdo) `(("gtk+" ,gtk+)
("python-xdo" ,python-xdo)
("python-gpg" ,python-gpg) ("python-gpg" ,python-gpg)
("python-pygobject" ,python-pygobject))) ("python-pygobject" ,python-pygobject)))
(propagated-inputs (propagated-inputs

View File

@ -0,0 +1,27 @@
Dont add linker flags via response files since ld-wrapper
doesnt handle them.
See https://github.com/NixOS/nixpkgs/commit/a421e7bd4a28c69bded8b17888325e31554f61a1
https://gcc.gnu.org/ml/gcc/2016-10/msg00151.html
diff --git a/compiler/main/SysTools.hs.orig b/compiler/main/SysTools.hs
index 1ab5b13..99270fc 100644
--- a/compiler/main/SysTools.hs.orig
+++ b/compiler/main/SysTools.hs
@@ -424,7 +424,7 @@ runCc dflags args = do
args1 = map Option (getOpts dflags opt_c)
args2 = args0 ++ args1 ++ args
mb_env <- getGccEnv args2
- runSomethingResponseFile dflags cc_filter "C Compiler" p args2 mb_env
+ runSomethingFiltered dflags cc_filter "C Compiler" p args2 mb_env
where
-- discard some harmless warnings from gcc that we can't turn off
cc_filter = unlines . doFilter . lines
@@ -945,7 +945,7 @@ runLink dflags args = do
args1 = map Option (getOpts dflags opt_l)
args2 = args0 ++ linkargs ++ args1 ++ args
mb_env <- getGccEnv args2
- runSomethingResponseFile dflags ld_filter "Linker" p args2 mb_env
+ runSomethingFiltered dflags ld_filter "Linker" p args2 mb_env
where
ld_filter = case (platformOS (targetPlatform dflags)) of
OSSolaris2 -> sunos_ld_filter

View File

@ -1,36 +0,0 @@
This patch applies against httpd-2.4.23 and shouldn't be needed in later releases
http://openwall.com/lists/oss-security/2016/12/05/17
Index: modules/http2/h2_stream.c
===================================================================
--- modules/http2/h2_stream.c (revision 1771866)
+++ modules/http2/h2_stream.c (working copy)
@@ -322,18 +322,18 @@
HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE);
}
}
- }
-
- if (h2_stream_is_scheduled(stream)) {
- return h2_request_add_trailer(stream->request, stream->pool,
- name, nlen, value, vlen);
- }
- else {
- if (!input_open(stream)) {
- return APR_ECONNRESET;
+
+ if (h2_stream_is_scheduled(stream)) {
+ return h2_request_add_trailer(stream->request, stream->pool,
+ name, nlen, value, vlen);
}
- return h2_request_add_header(stream->request, stream->pool,
- name, nlen, value, vlen);
+ else {
+ if (!input_open(stream)) {
+ return APR_ECONNRESET;
+ }
+ return h2_request_add_header(stream->request, stream->pool,
+ name, nlen, value, vlen);
+ }
}
}

View File

@ -0,0 +1,35 @@
This patch deactivates some tests that fail when ldc is built with the command:
./pre-inst-env guix environment guix --pure -- ./pre-inst-env guix build ldc@1.1.0-beta6
When the --keep-failed flag is added to the build command above, and the tests
run in the resulting /tmp/guix-build-ldc-1.1.0-beta6.drv-* directory, the tests
pass.
by Frederick M. Muriithi <fredmanglis@gmail.com>
diff --git a/d_do_test.d b/d_do_test.d
index aa67169..8173759 100755
--- a/d_do_test.d
+++ b/d_do_test.d
@@ -645,8 +645,6 @@ int main(string[] args)
auto gdb_output = execute(fThisRun, command, true, result_path);
if (testArgs.gdbMatch !is null)
{
- enforce(match(gdb_output, regex(testArgs.gdbMatch)),
- "\nGDB regex: '"~testArgs.gdbMatch~"' didn't match output:\n----\n"~gdb_output~"\n----\n");
}
}
}
diff --git a/runnable/gdb15729.sh b/runnable/gdb15729.sh
index 1d390e0..906b2b6 100755
--- a/runnable/gdb15729.sh
+++ b/runnable/gdb15729.sh
@@ -21,7 +21,6 @@ if [ $OS == "linux" ]; then
echo RESULT=
p s.val
EOF
- gdb ${dir}${SEP}gdb15729 --batch -x ${dir}${SEP}gdb15729.gdb | grep 'RESULT=.*1234' || exit 1
fi
rm -f ${libname} ${dir}${SEP}{gdb15729${OBJ},gdb15729${EXE},gdb15729.gdb}

View File

@ -0,0 +1,414 @@
This patch deactivates failing tests that depend on network connectivity
to pass in curl.d and socket.d
It deactivates tests in path.d that assume /root
A thread was started on the ldc forum to pursue the possibility of a
version flag to deactivate tests conditionally. The thread is at
https://forum.dlang.org/post/zmdbdgnzrxyvtpqafvyg@forum.dlang.org
by Frederick M. Muriithi <fredmanglis@gmail.com>
diff --git a/std/datetime.d b/std/datetime.d
index 4d4afb1..2c91a44 100644
--- a/std/datetime.d
+++ b/std/datetime.d
@@ -27306,8 +27306,8 @@ public:
// leaving it commented out until I can sort it out.
//assert(equal(tzNames, tzNames.uniq()));
- foreach(tzName; tzNames)
- assertNotThrown!DateTimeException(testPZSuccess(tzName));
+ //foreach(tzName; tzNames)
+ //assertNotThrown!DateTimeException(testPZSuccess(tzName));
}
@@ -29178,8 +29178,8 @@ public:
auto tzNames = getInstalledTZNames();
- foreach(tzName; tzNames)
- assertNotThrown!DateTimeException(testPTZSuccess(tzName));
+ //foreach(tzName; tzNames)
+ //assertNotThrown!DateTimeException(testPTZSuccess(tzName));
// No timezone directories on Android, just a single tzdata file
version(Android) {} else
diff --git a/std/net/curl.d b/std/net/curl.d
index 9c6af66..5fccb38 100644
--- a/std/net/curl.d
+++ b/std/net/curl.d
@@ -419,7 +419,7 @@ void download(Conn = AutoProtocol)(const(char)[] url, string saveToPath, Conn co
unittest
{
- static import std.file;
+ /*static import std.file;
foreach (host; [testServer.addr, "http://"~testServer.addr])
{
testServer.handle((s) {
@@ -430,7 +430,7 @@ unittest
scope (exit) std.file.remove(fn);
download(host, fn);
assert(std.file.readText(fn) == "Hello world");
- }
+ }*/
}
/** Upload file from local files system using the HTTP or FTP protocol.
@@ -483,7 +483,7 @@ void upload(Conn = AutoProtocol)(string loadFromPath, const(char)[] url, Conn co
unittest
{
- static import std.file;
+ /*static import std.file;
foreach (host; [testServer.addr, "http://"~testServer.addr])
{
auto fn = std.file.deleteme;
@@ -496,7 +496,7 @@ unittest
s.send(httpOK());
});
upload(fn, host ~ "/path");
- }
+ }*/
}
/** HTTP/FTP get content.
@@ -551,7 +551,7 @@ T[] get(Conn = AutoProtocol, T = char)(const(char)[] url, Conn conn = Conn())
unittest
{
- foreach (host; [testServer.addr, "http://"~testServer.addr])
+ /*foreach (host; [testServer.addr, "http://"~testServer.addr])
{
testServer.handle((s) {
assert(s.recvReq.hdrs.canFind("GET /path"));
@@ -559,7 +559,7 @@ unittest
});
auto res = get(host ~ "/path");
assert(res == "GETRESPONSE");
- }
+ }*/
}
@@ -598,7 +598,7 @@ if (is(T == char) || is(T == ubyte))
unittest
{
- foreach (host; [testServer.addr, "http://"~testServer.addr])
+ /*foreach (host; [testServer.addr, "http://"~testServer.addr])
{
testServer.handle((s) {
auto req = s.recvReq;
@@ -608,12 +608,12 @@ unittest
});
auto res = post(host ~ "/path", "POSTBODY");
assert(res == "POSTRESPONSE");
- }
+ }*/
}
unittest
{
- auto data = new ubyte[](256);
+ /*auto data = new ubyte[](256);
foreach (i, ref ub; data)
ub = cast(ubyte)i;
@@ -624,7 +624,7 @@ unittest
s.send(httpOK(cast(ubyte[])[17, 27, 35, 41]));
});
auto res = post!ubyte(testServer.addr, data);
- assert(res == cast(ubyte[])[17, 27, 35, 41]);
+ assert(res == cast(ubyte[])[17, 27, 35, 41]);*/
}
@@ -680,7 +680,7 @@ T[] put(Conn = AutoProtocol, T = char, PutUnit)(const(char)[] url, const(PutUnit
unittest
{
- foreach (host; [testServer.addr, "http://"~testServer.addr])
+ /*foreach (host; [testServer.addr, "http://"~testServer.addr])
{
testServer.handle((s) {
auto req = s.recvReq;
@@ -690,7 +690,7 @@ unittest
});
auto res = put(host ~ "/path", "PUTBODY");
assert(res == "PUTRESPONSE");
- }
+ }*/
}
@@ -742,7 +742,7 @@ void del(Conn = AutoProtocol)(const(char)[] url, Conn conn = Conn())
unittest
{
- foreach (host; [testServer.addr, "http://"~testServer.addr])
+ /*foreach (host; [testServer.addr, "http://"~testServer.addr])
{
testServer.handle((s) {
auto req = s.recvReq;
@@ -750,7 +750,7 @@ unittest
s.send(httpOK());
});
del(host ~ "/path");
- }
+ }*/
}
@@ -796,13 +796,13 @@ T[] options(T = char, OptionsUnit)(const(char)[] url,
unittest
{
- testServer.handle((s) {
+ /*testServer.handle((s) {
auto req = s.recvReq;
assert(req.hdrs.canFind("OPTIONS /path"));
s.send(httpOK("OPTIONSRESPONSE"));
});
auto res = options(testServer.addr ~ "/path");
- assert(res == "OPTIONSRESPONSE");
+ assert(res == "OPTIONSRESPONSE");*/
}
@@ -836,13 +836,13 @@ T[] trace(T = char)(const(char)[] url, HTTP conn = HTTP())
unittest
{
- testServer.handle((s) {
+ /*testServer.handle((s) {
auto req = s.recvReq;
assert(req.hdrs.canFind("TRACE /path"));
s.send(httpOK("TRACERESPONSE"));
});
auto res = trace(testServer.addr ~ "/path");
- assert(res == "TRACERESPONSE");
+ assert(res == "TRACERESPONSE");*/
}
@@ -875,13 +875,13 @@ T[] connect(T = char)(const(char)[] url, HTTP conn = HTTP())
unittest
{
- testServer.handle((s) {
+ /*testServer.handle((s) {
auto req = s.recvReq;
assert(req.hdrs.canFind("CONNECT /path"));
s.send(httpOK("CONNECTRESPONSE"));
});
auto res = connect(testServer.addr ~ "/path");
- assert(res == "CONNECTRESPONSE");
+ assert(res == "CONNECTRESPONSE");*/
}
@@ -919,14 +919,14 @@ T[] patch(T = char, PatchUnit)(const(char)[] url, const(PatchUnit)[] patchData,
unittest
{
- testServer.handle((s) {
+ /*testServer.handle((s) {
auto req = s.recvReq;
assert(req.hdrs.canFind("PATCH /path"));
assert(req.bdy.canFind("PATCHBODY"));
s.send(httpOK("PATCHRESPONSE"));
});
auto res = patch(testServer.addr ~ "/path", "PATCHBODY");
- assert(res == "PATCHRESPONSE");
+ assert(res == "PATCHRESPONSE");*/
}
@@ -1031,19 +1031,19 @@ private auto _basicHTTP(T)(const(char)[] url, const(void)[] sendData, HTTP clien
unittest
{
- testServer.handle((s) {
+ /*testServer.handle((s) {
auto req = s.recvReq;
assert(req.hdrs.canFind("GET /path"));
s.send(httpNotFound());
});
auto e = collectException!CurlException(get(testServer.addr ~ "/path"));
- assert(e.msg == "HTTP request returned status code 404 (Not Found)");
+ assert(e.msg == "HTTP request returned status code 404 (Not Found)");*/
}
// Bugzilla 14760 - content length must be reset after post
unittest
{
- testServer.handle((s) {
+ /*testServer.handle((s) {
auto req = s.recvReq;
assert(req.hdrs.canFind("POST /"));
assert(req.bdy.canFind("POSTBODY"));
@@ -1061,7 +1061,7 @@ unittest
auto res = post(testServer.addr, "POSTBODY", http);
assert(res == "POSTRESPONSE");
res = trace(testServer.addr, http);
- assert(res == "TRACERESPONSE");
+ assert(res == "TRACERESPONSE");*/
}
/*
@@ -1265,14 +1265,14 @@ if (isCurlConn!Conn && isSomeChar!Char && isSomeChar!Terminator)
unittest
{
- foreach (host; [testServer.addr, "http://"~testServer.addr])
+ /*foreach (host; [testServer.addr, "http://"~testServer.addr])
{
testServer.handle((s) {
auto req = s.recvReq;
s.send(httpOK("Line1\nLine2\nLine3"));
});
assert(byLine(host).equal(["Line1", "Line2", "Line3"]));
- }
+ }*/
}
/** HTTP/FTP fetch content as a range of chunks.
@@ -1337,14 +1337,14 @@ auto byChunk(Conn = AutoProtocol)
unittest
{
- foreach (host; [testServer.addr, "http://"~testServer.addr])
+ /*foreach (host; [testServer.addr, "http://"~testServer.addr])
{
testServer.handle((s) {
auto req = s.recvReq;
s.send(httpOK(cast(ubyte[])[0, 1, 2, 3, 4, 5]));
});
assert(byChunk(host, 2).equal([[0, 1], [2, 3], [4, 5]]));
- }
+ }*/
}
private T[] _getForRange(T,Conn)(const(char)[] url, Conn conn)
@@ -1629,14 +1629,14 @@ auto byLineAsync(Conn = AutoProtocol, Terminator = char, Char = char)
unittest
{
- foreach (host; [testServer.addr, "http://"~testServer.addr])
+ /*foreach (host; [testServer.addr, "http://"~testServer.addr])
{
testServer.handle((s) {
auto req = s.recvReq;
s.send(httpOK("Line1\nLine2\nLine3"));
});
assert(byLineAsync(host).equal(["Line1", "Line2", "Line3"]));
- }
+ }*/
}
@@ -1778,14 +1778,14 @@ auto byChunkAsync(Conn = AutoProtocol)
unittest
{
- foreach (host; [testServer.addr, "http://"~testServer.addr])
+ /*foreach (host; [testServer.addr, "http://"~testServer.addr])
{
testServer.handle((s) {
auto req = s.recvReq;
s.send(httpOK(cast(ubyte[])[0, 1, 2, 3, 4, 5]));
});
assert(byChunkAsync(host, 2).equal([[0, 1], [2, 3], [4, 5]]));
- }
+ }*/
}
@@ -2041,7 +2041,7 @@ private mixin template Protocol()
unittest
{
- testServer.handle((s) {
+ /*testServer.handle((s) {
auto req = s.recvReq;
assert(req.hdrs.canFind("GET /"));
assert(req.hdrs.canFind("Basic dXNlcjpwYXNz"));
@@ -2051,7 +2051,7 @@ private mixin template Protocol()
auto http = HTTP(testServer.addr);
http.onReceive = (ubyte[] data) { return data.length; };
http.setAuthentication("user", "pass");
- http.perform();
+ http.perform();*/
}
/**
@@ -2959,7 +2959,7 @@ struct HTTP
unittest
{
- testServer.handle((s) {
+ /*testServer.handle((s) {
auto req = s.recvReq!ubyte;
assert(req.hdrs.canFind("POST /path"));
assert(req.bdy.canFind(cast(ubyte[])[0, 1, 2, 3, 4]));
@@ -2975,7 +2975,7 @@ struct HTTP
ubyte[] res;
http.onReceive = (data) { res ~= data; return data.length; };
http.perform();
- assert(res == cast(ubyte[])[17, 27, 35, 41]);
+ assert(res == cast(ubyte[])[17, 27, 35, 41]);*/
}
/**
diff --git a/std/path.d b/std/path.d
index 60c844f..0598104 100644
--- a/std/path.d
+++ b/std/path.d
@@ -3953,8 +3953,10 @@ unittest
}
else
{
+/*
assert(expandTilde("~root") == "/root", expandTilde("~root"));
assert(expandTilde("~root/") == "/root/", expandTilde("~root/"));
+*/
}
assert(expandTilde("~Idontexist/hey") == "~Idontexist/hey");
}
diff --git a/std/socket.d b/std/socket.d
index 7f5a3c3..e68b881 100644
--- a/std/socket.d
+++ b/std/socket.d
@@ -481,15 +481,15 @@ unittest
{
softUnittest({
Protocol proto = new Protocol;
- assert(proto.getProtocolByType(ProtocolType.TCP));
+ //assert(proto.getProtocolByType(ProtocolType.TCP));
//writeln("About protocol TCP:");
//writefln("\tName: %s", proto.name);
// foreach(string s; proto.aliases)
// {
// writefln("\tAlias: %s", s);
// }
- assert(proto.name == "tcp");
- assert(proto.aliases.length == 1 && proto.aliases[0] == "TCP");
+ //assert(proto.name == "tcp");
+ //assert(proto.aliases.length == 1 && proto.aliases[0] == "TCP");
});
}
@@ -832,9 +832,9 @@ unittest
InternetHost ih = new InternetHost;
ih.getHostByAddr(0x7F_00_00_01);
- assert(ih.addrList[0] == 0x7F_00_00_01);
+ //assert(ih.addrList[0] == 0x7F_00_00_01);
ih.getHostByAddr("127.0.0.1");
- assert(ih.addrList[0] == 0x7F_00_00_01);
+ //assert(ih.addrList[0] == 0x7F_00_00_01);
softUnittest({
if (!ih.getHostByName("www.digitalmars.com"))

View File

@ -0,0 +1,42 @@
Fix buffer overread in libevents DNS code.
Upstream bug report:
https://github.com/libevent/libevent/issues/317
Patch copied from upstream source repository:
https://github.com/libevent/libevent/commit/96f64a022014a208105ead6c8a7066018449d86d
From 3c570970516f48da35f42fef98276531fcc0abaa Mon Sep 17 00:00:00 2001
From: Azat Khuzhin <a3at.mail@gmail.com>
Date: Mon, 1 Feb 2016 17:32:09 +0300
Subject: [PATCH] evdns: name_parse(): fix remote stack overread
---
evdns.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/evdns.c b/evdns.c
index 60b10485..137c24ea 100644
--- a/evdns.c
+++ b/evdns.c
@@ -960,7 +960,6 @@ name_parse(u8 *packet, int length, int *idx, char *name_out, int name_out_len) {
for (;;) {
u8 label_len;
- if (j >= length) return -1;
GET8(label_len);
if (!label_len) break;
if (label_len & 0xc0) {
@@ -981,6 +980,7 @@ name_parse(u8 *packet, int length, int *idx, char *name_out, int name_out_len) {
*cp++ = '.';
}
if (cp + label_len >= end) return -1;
+ if (j + label_len > length) return -1;
memcpy(cp, packet + j, label_len);
cp += label_len;
j += label_len;
--
2.11.0

View File

@ -0,0 +1,40 @@
Fix OOB read on empty hostnames in evdns.
Upstream bug report:
https://github.com/libevent/libevent/issues/332
Patch copied from upstream source repository:
https://github.com/libevent/libevent/commit/ec65c42052d95d2c23d1d837136d1cf1d9ecef9e
From a0305cec166a5bc89f1eb362510cc4cd25ecc0bc Mon Sep 17 00:00:00 2001
From: Azat Khuzhin <a3at.mail@gmail.com>
Date: Fri, 25 Mar 2016 00:33:47 +0300
Subject: [PATCH] evdns: fix searching empty hostnames
---
evdns.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/evdns.c b/evdns.c
index 137c24ea..6191c677 100644
--- a/evdns.c
+++ b/evdns.c
@@ -3122,9 +3122,12 @@ search_set_from_hostname(struct evdns_base *base) {
static char *
search_make_new(const struct search_state *const state, int n, const char *const base_name) {
const size_t base_len = strlen(base_name);
- const char need_to_append_dot = base_name[base_len - 1] == '.' ? 0 : 1;
+ char need_to_append_dot;
struct search_domain *dom;
+ if (!base_len) return NULL;
+ need_to_append_dot = base_name[base_len - 1] == '.' ? 0 : 1;
+
for (dom = state->head; dom; dom = dom->next) {
if (!n--) {
/* this is the postfix we want */
--
2.11.0

View File

@ -0,0 +1,42 @@
Fix buffer overflow in evutil.
Upstream bug report:
https://github.com/libevent/libevent/issues/318
Patch copied from upstream source repository:
https://github.com/libevent/libevent/commit/329acc18a0768c21ba22522f01a5c7f46cacc4d5
From 28bdc2f3f62259d21ccaf7be2b60ef0a53e6f342 Mon Sep 17 00:00:00 2001
From: Azat Khuzhin <a3at.mail@gmail.com>
Date: Sun, 31 Jan 2016 00:57:16 +0300
Subject: [PATCH] evutil_parse_sockaddr_port(): fix buffer overflow
---
evutil.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/evutil.c b/evutil.c
index 33445170..e2dfe6e4 100644
--- a/evutil.c
+++ b/evutil.c
@@ -1808,12 +1808,12 @@ evutil_parse_sockaddr_port(const char *ip_as_string, struct sockaddr *out, int *
cp = strchr(ip_as_string, ':');
if (*ip_as_string == '[') {
- int len;
+ size_t len;
if (!(cp = strchr(ip_as_string, ']'))) {
return -1;
}
- len = (int) ( cp-(ip_as_string + 1) );
- if (len > (int)sizeof(buf)-1) {
+ len = ( cp-(ip_as_string + 1) );
+ if (len > sizeof(buf)-1) {
return -1;
}
memcpy(buf, ip_as_string+1, len);
--
2.11.0

View File

@ -0,0 +1,26 @@
Disable tests that rely on usable DNS lookups, which aren't available
in build chroots.
--- libevent-2.0.21-stable/test/regress_dns.c 2013-01-20 22:32:09.000000000 +0100
+++ libevent-2.0.21-stable/test/regress_dns.c 2013-01-20 22:32:30.000000000 +0100
@@ -2120,10 +2120,6 @@
struct testcase_t dns_testcases[] = {
DNS_LEGACY(server, TT_FORK|TT_NEED_BASE),
- DNS_LEGACY(gethostbyname, TT_FORK|TT_NEED_BASE|TT_NEED_DNS|TT_OFF_BY_DEFAULT),
- DNS_LEGACY(gethostbyname6, TT_FORK|TT_NEED_BASE|TT_NEED_DNS|TT_OFF_BY_DEFAULT),
- DNS_LEGACY(gethostbyaddr, TT_FORK|TT_NEED_BASE|TT_NEED_DNS|TT_OFF_BY_DEFAULT),
- { "resolve_reverse", dns_resolve_reverse, TT_FORK|TT_OFF_BY_DEFAULT, NULL, NULL },
{ "search_empty", dns_search_empty_test, TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
{ "search", dns_search_test, TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
{ "search_lower", dns_search_lower_test, TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
@@ -2163,9 +2159,6 @@
{ "client_fail_requests", dns_client_fail_requests_test,
TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
- { "client_fail_requests_getaddrinfo",
- dns_client_fail_requests_getaddrinfo_test,
- TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
END_OF_TESTCASES
};

View File

@ -0,0 +1,24 @@
These fail on 32-bit due to an overflow bug in the test program.
See test/regress_util.c:1448.
Upstream bug URL:
https://github.com/libevent/libevent/issues/452
diff --git a/test/regress_util.c b/test/regress_util.c
index ef6a1487..4de501fc 100644
--- a/test/regress_util.c
+++ b/test/regress_util.c
@@ -1413,9 +1413,9 @@ static struct date_rfc1123_case {
{ 1323648000, "Mon, 12 Dec 2011 00:00:00 GMT"},
#ifndef _WIN32
/** In win32 case we have max "23:59:59 January 18, 2038, UTC" for time32 */
- { 4294967296, "Sun, 07 Feb 2106 06:28:16 GMT"} /* 2^32 */,
+ //{ 4294967296, "Sun, 07 Feb 2106 06:28:16 GMT"} /* 2^32 */,
/** In win32 case we have max "23:59:59, December 31, 3000, UTC" for time64 */
- {253402300799, "Fri, 31 Dec 9999 23:59:59 GMT"} /* long long future no one can imagine */,
+ //{253402300799, "Fri, 31 Dec 9999 23:59:59 GMT"} /* long long future no one can imagine */,
{ 1456704000, "Mon, 29 Feb 2016 00:00:00 GMT"} /* leap year */,
#endif
{ 1435708800, "Wed, 01 Jul 2015 00:00:00 GMT"} /* leap second */,

View File

@ -0,0 +1,41 @@
From 2e7e254160506dc00f1beabf170512a8e932934b Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sat, 31 Dec 2016 15:43:38 +0100
Subject: [PATCH] fix build date in binary
---
src/magic/omake_gen_magic.ml | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/src/magic/omake_gen_magic.ml b/src/magic/omake_gen_magic.ml
index b2419ba..fad52f5 100644
--- a/src/magic/omake_gen_magic.ml
+++ b/src/magic/omake_gen_magic.ml
@@ -150,7 +150,7 @@ let ir_magic = "%s"
let obj_magic = "%s"
let lib_dir = "%s"
let version = "%s"
-let version_message = "OMake %s:\\n\\tbuild [%s %s %d %02d:%02d:%02d %d]\\n\\ton %s"
+let version_message = "OMake %s"
|}
default_save_interval
digest_len
@@ -160,15 +160,7 @@ let version_message = "OMake %s:\\n\\tbuild [%s %s %d %02d:%02d:%02d %d]\\n\\ton
(digest_files ".omo.magic" ".omo" omo_files)
(String.escaped libdir)
(String.escaped (shorten_version version))
- (String.escaped version)
- [|"Sun"; "Mon"; "Tue"; "Wed"; "Thu"; "Fri"; "Sat"|].(tm.tm_wday)
- [|"Jan"; "Feb"; "Mar"; "Apr"; "May"; "Jun"; "Jul"; "Aug"; "Sep"; "Oct"; "Nov"; "Dec"|].(tm.tm_mon)
- tm.tm_mday
- tm.tm_hour
- tm.tm_min
- tm.tm_sec
- (tm.tm_year + 1900)
- (String.escaped (Unix.gethostname ()));
+ (String.escaped version);
List.iter
(fun (name,value) ->
Printf.fprintf buf "let %s = %S\n" name value
--
2.11.0

View File

@ -0,0 +1,36 @@
Fix CVE-2013-4342:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-4342
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=324678
Patch copied from upstream source repository:
https://github.com/xinetd-org/xinetd/commit/91e2401a219121eae15244a6b25d2e79c1af5864
From 91e2401a219121eae15244a6b25d2e79c1af5864 Mon Sep 17 00:00:00 2001
From: Thomas Swan <thomas.swan@gmail.com>
Date: Wed, 2 Oct 2013 23:17:17 -0500
Subject: [PATCH] CVE-2013-4342: xinetd: ignores user and group directives for
TCPMUX services
Originally reported to Debian in 2005 <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=324678> and rediscovered <https://bugzilla.redhat.com/show_bug.cgi?id=1006100>, xinetd would execute TCPMUX services without dropping privilege to match the service configuration allowing the service to run with same privilege as the xinetd process (root).
---
xinetd/builtins.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/xinetd/builtins.c b/xinetd/builtins.c
index 3b85579..34a5bac 100644
--- a/xinetd/builtins.c
+++ b/xinetd/builtins.c
@@ -617,7 +617,7 @@ static void tcpmux_handler( const struct server *serp )
if( SC_IS_INTERNAL( scp ) ) {
SC_INTERNAL(scp, nserp);
} else {
- exec_server(nserp);
+ child_process(nserp);
}
}
--
2.7.4

View File

@ -0,0 +1,26 @@
Fix a file descriptor leak:
https://github.com/xinetd-org/xinetd/issues/23
Patch copied from Debian:
https://anonscm.debian.org/cgit/collab-maint/xinetd.git/tree/debian/patches/000012-fix_fd_leak
Patch sent upstream at https://github.com/xinetd-org/xinetd/pull/26.
diff --git a/xinetd/xgetloadavg.c b/xinetd/xgetloadavg.c
index 5a26214..fe0f872 100644
--- a/xinetd/xgetloadavg.c
+++ b/xinetd/xgetloadavg.c
@@ -34,7 +34,7 @@ double xgetloadavg(void)
if( fscanf(fd, "%lf", &ret) != 1 ) {
perror("fscanf");
- return -1;
+ ret = -1;
}
fclose(fd);
--
2.7.4

View File

@ -173,14 +173,14 @@ colors, styles, options and details.")
(define-public asymptote (define-public asymptote
(package (package
(name "asymptote") (name "asymptote")
(version "2.38") (version "2.39")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/asymptote/" (uri (string-append "mirror://sourceforge/asymptote/"
version "/asymptote-" version ".src.tgz")) version "/asymptote-" version ".src.tgz"))
(sha256 (sha256
(base32 (base32
"1dxwvq0xighqckkjkjva8s0igxfgy1j25z81pbwvlz6jzsrxpip9")))) "187q81yw06x4gv2spfn0hcs1064ym3a8l6mdgawymfhqd60yhrs3"))))
(build-system gnu-build-system) (build-system gnu-build-system)
;; Note: The 'asy' binary retains a reference to docdir for use with its ;; Note: The 'asy' binary retains a reference to docdir for use with its
;; "help" command in interactive mode, so adding a "doc" output is not ;; "help" command in interactive mode, so adding a "doc" output is not

View File

@ -3,6 +3,7 @@
;;; Copyright © 2015 Andy Wingo <wingo@igalia.com> ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Huang Ying <huang.ying.caritas@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -28,6 +29,7 @@
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages freedesktop) #:use-module (gnu packages freedesktop)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages gnuzilla) #:use-module (gnu packages gnuzilla)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
@ -159,3 +161,27 @@ PolicyKit API through a Qt-styled API. It is mainly a wrapper around
QAction and QAbstractButton that lets you integrate those two component QAction and QAbstractButton that lets you integrate those two component
easily with PolicyKit.") easily with PolicyKit.")
(license lgpl2.0+))) (license lgpl2.0+)))
(define-public polkit-gnome
(package
(name "polkit-gnome")
(version "0.105")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/"
name "/" version "/"
name "-" version ".tar.xz"))
(sha256
(base32
"0sckmcbxyj6sbrnfc5p5lnw27ccghsid6v6wxq09mgxqcd4lk10p"))))
(build-system gnu-build-system)
(inputs `(("gtk+" ,gtk+)
("polkit" ,polkit)))
(native-inputs `(("intltool" ,intltool)
("pkg-config" ,pkg-config)))
(synopsis "Legacy polkit authentication agent for GNOME")
(description "PolicyKit-gnome provides a D-Bus session bus service
that is used to bring up authentication dialogs used for obtaining
privileges.")
(home-page "http://www.freedesktop.org/wiki/Software/polkit/")
(license lgpl2.0+)))

View File

@ -2095,14 +2095,14 @@ protocol.")
(define python-pbr-minimal (define python-pbr-minimal
(package (package
(name "python-pbr-minimal") (name "python-pbr-minimal")
(version "1.8.1") (version "1.10.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "pbr" version)) (uri (pypi-uri "pbr" version))
(sha256 (sha256
(base32 (base32
"0jcny36cf3s8ar5r4a575npz080hndnrfs4np1fqhv0ym4k7c4p2")))) "177kd9kbv1hvf2ban7l3x9ymzbi1md4hkaymwbgnz7ihf312hr0q"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:tests? #f)) `(#:tests? #f))
@ -2350,16 +2350,15 @@ files.")
(define-public python-certifi (define-public python-certifi
(package (package
(name "python-certifi") (name "python-certifi")
(version "2016.8.31") (version "2017.1.23")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "certifi" version)) (uri (pypi-uri "certifi" version))
(sha256 (sha256
(base32 (base32
"06c9dcyv8ss050gkv5xjivbxhm6qm0s9vzy4r33wqabgv118lw7p")))) "1klrzl3hgvcf2mjk00g0k3kk1p2z27vzwnxivwar4vhjmjvpz1w1"))))
(build-system python-build-system) (build-system python-build-system)
(arguments `(#:tests? #f)) ; no tests (home-page "https://certifi.io/")
(home-page "http://python-requests.org/")
(synopsis "Python CA certificate bundle") (synopsis "Python CA certificate bundle")
(description (description
"Certifi is a Python library that contains a CA certificate bundle, which "Certifi is a Python library that contains a CA certificate bundle, which
@ -2407,14 +2406,14 @@ with sensible defaults out of the box.")
(define-public python-wheel (define-public python-wheel
(package (package
(name "python-wheel") (name "python-wheel")
(version "0.29.0") (version "0.30.0a0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "wheel" version)) (uri (pypi-uri "wheel" version))
(sha256 (sha256
(base32 (base32
"0j0n38hg1jvrmyy68f9ikvzq1gs9g0sx4ws7maf8wi3bwbbqmfqy")))) "1nm6mn8isny0hr86rhbfrpfj867c0phf001xgsd69xfp9ady1wwq"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("python-jsonschema" ,python-jsonschema) `(("python-jsonschema" ,python-jsonschema)
@ -3161,15 +3160,13 @@ mining and data analysis.")
(define-public python-redis (define-public python-redis
(package (package
(name "python-redis") (name "python-redis")
(version "2.10.3") (version "2.10.5")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (pypi-uri "redis" version))
"https://pypi.python.org/packages/source/r/redis/redis-"
version ".tar.gz"))
(sha256 (sha256
(base32 "1701qjwn4n05q90fdg4bsg96s27xf5s4hsb4gxhv3xk052q3gyx4")))) (base32 "0csmrkxb29x7xs9b51zplwkkq2hwnbh9jns1g85dykn5rxmaxysx"))))
(build-system python-build-system) (build-system python-build-system)
;; Tests require a running Redis server ;; Tests require a running Redis server
(arguments '(#:tests? #f)) (arguments '(#:tests? #f))
@ -6003,10 +6000,7 @@ complexity of Python source code.")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (pypi-uri "mistune" version))
"https://pypi.python.org/packages/source/m/mistune/mistune-"
version
".tar.gz"))
(sha256 (sha256
(base32 (base32
"04xpk1zvslhq3xpnf01g3ag0dy9wfv4z28p093r8k49vvxlyil11")))) "04xpk1zvslhq3xpnf01g3ag0dy9wfv4z28p093r8k49vvxlyil11"))))
@ -8766,14 +8760,14 @@ interface to the Amazon Web Services (AWS) API.")
(define-public awscli (define-public awscli
(package (package
(name "awscli") (name "awscli")
(version "1.11.35") (version "1.11.43")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri name version)) (uri (pypi-uri name version))
(sha256 (sha256
(base32 (base32
"0k6y8cg311bqak5x9pilg80w6f76dcbzm6xcdrw6rjnk6v4xwy70")))) "1x94jmy8ygld8g4pf35zdankh4dx8g8qn3q9j3hrbawqw0vkrp3y"))))
(build-system python-build-system) (build-system python-build-system)
(propagated-inputs (propagated-inputs
`(("python-colorama" ,python-colorama) `(("python-colorama" ,python-colorama)
@ -8787,7 +8781,7 @@ interface to the Amazon Web Services (AWS) API.")
("python-sphinx" ,python-sphinx) ("python-sphinx" ,python-sphinx)
("python-tox" ,python-tox) ("python-tox" ,python-tox)
("python-wheel" ,python-wheel))) ("python-wheel" ,python-wheel)))
(home-page "http://aws.amazon.com/cli/") (home-page "https://aws.amazon.com/cli/")
(synopsis "Command line client for AWS") (synopsis "Command line client for AWS")
(description "AWS CLI provides a unified command line interface to the (description "AWS CLI provides a unified command line interface to the
Amazon Web Services (AWS) API.") Amazon Web Services (AWS) API.")
@ -8862,7 +8856,21 @@ normally the case.")
"1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0")))) "1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:tests? #f)) ; no tests provided '(#:phases
(modify-phases %standard-phases
(add-before 'install 'patch-libxdo-path
;; Hardcode the path of dynamically loaded libxdo library.
(lambda* (#:key inputs #:allow-other-keys)
(let ((libxdo (string-append
(assoc-ref inputs "xdotool")
"/lib/libxdo.so")))
(substitute* "xdo/_xdo.py"
(("find_library\\(\"xdo\"\\)")
(simple-format #f "\"~a\"" libxdo)))
#t))))
#:tests? #f)) ; no tests provided
(propagated-inputs
`(("python-six" ,python-six)))
(inputs (inputs
`(("xdotool" ,xdotool) `(("xdotool" ,xdotool)
("libX11" ,libx11))) ("libX11" ,libx11)))
@ -10998,14 +11006,14 @@ provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients."
(define-public python-stem (define-public python-stem
(package (package
(name "python-stem") (name "python-stem")
(version "1.5.3") (version "1.5.4")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "stem" version)) (uri (pypi-uri "stem" version))
(sha256 (sha256
(base32 (base32
"0fm67dfx6qaj0mg80r4yw2i72birpzn7cnbyz4p1857max3zfc97")))) "1j7pnblrn0yr6jmxvsq6y0ihmxmj5x50jl2n2606w67f6wq16j9n"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases `(#:phases

View File

@ -27,7 +27,7 @@
(define-public re2 (define-public re2
(package (package
(name "re2") (name "re2")
(version "2016-11-01") (version "2017-01-01")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -37,7 +37,7 @@
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0scn3rimfxz0kqxxasap04kv9cbzjsgi7krkqmyhbi710fgr9vh1")))) "0yij1ajh66h3pj3kfz7y0ldrsww8rlpjzaavyr5lchl98as1jq74"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:test-target "test" `(#:test-target "test"
@ -50,7 +50,8 @@
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
;; No make target for shared-only; delete the static version. ;; No make target for shared-only; delete the static version.
(delete-file (string-append (assoc-ref outputs "out") (delete-file (string-append (assoc-ref outputs "out")
"/lib/libre2.a"))))))) "/lib/libre2.a"))
#t)))))
(home-page "https://github.com/google/re2") (home-page "https://github.com/google/re2")
(synopsis "Fast, safe, thread-friendly regular expression engine") (synopsis "Fast, safe, thread-friendly regular expression engine")
(description "RE2 is a fast, safe, thread-friendly alternative to (description "RE2 is a fast, safe, thread-friendly alternative to

View File

@ -426,13 +426,13 @@ expectations and mocks frameworks.")
(define-public bundler (define-public bundler
(package (package
(name "bundler") (name "bundler")
(version "1.14.2") (version "1.14.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (rubygems-uri "bundler" version)) (uri (rubygems-uri "bundler" version))
(sha256 (sha256
(base32 (base32
"1sfcmqmimssjmh4gjq6ls6a33l2hc353hb13g628kjh15qmddar7")))) "1znvh83phzvp97l3kcgk9vbwsnq45qc8nrb4dnqv17mrhgcwfqcx"))))
(build-system ruby-build-system) (build-system ruby-build-system)
(arguments (arguments
'(#:tests? #f)) ; avoid dependency cycles '(#:tests? #f)) ; avoid dependency cycles
@ -1859,25 +1859,31 @@ generation of complex SQL queries and is compatible with various RDBMSes.")
(license license:expat))) (license license:expat)))
(define-public ruby-minitar (define-public ruby-minitar
(package ;; We package from the GitHub source to fix the security issue reported at
(name "ruby-minitar") ;; https://github.com/halostatue/minitar/issues/16.
(version "0.5.4") (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
(source (package
(origin (name "ruby-minitar")
(method url-fetch) (version (string-append "0.5.4-1." (string-take commit 8)))
(uri (rubygems-uri "minitar" version)) (source
(sha256 (origin
(base32 (method git-fetch)
"1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka")))) (uri (git-reference
(build-system ruby-build-system) (url "https://github.com/halostatue/minitar.git")
(arguments (commit commit)))
'(#:tests? #f)) ; missing a gemspec (file-name (string-append name "-" version "-checkout"))
(synopsis "Ruby library and utility for handling tar archives") (sha256
(description (base32
"Archive::Tar::Minitar is a pure-Ruby library and command-line utility "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; missing a gemspec
(synopsis "Ruby library and utility for handling tar archives")
(description
"Archive::Tar::Minitar is a pure-Ruby library and command-line utility
that provides the ability to deal with POSIX tar archive files.") that provides the ability to deal with POSIX tar archive files.")
(home-page "http://www.github.com/atoulme/minitar") (home-page "http://www.github.com/atoulme/minitar")
(license (list license:gpl2+ license:ruby)))) (license (list license:gpl2+ license:ruby)))))
(define-public ruby-mini-portile (define-public ruby-mini-portile
(package (package

View File

@ -604,7 +604,6 @@ threads.")
(snippet (snippet
;; Remove binary code ;; Remove binary code
'(delete-file-recursively "scmutils/mit-scheme")) '(delete-file-recursively "scmutils/mit-scheme"))
(file-name (string-append name "-" version ".tar.gz"))
(uri (string-append "http://groups.csail.mit.edu/mac/users/gjs/6946" (uri (string-append "http://groups.csail.mit.edu/mac/users/gjs/6946"
"/scmutils-tarballs/" name "-" version "/scmutils-tarballs/" name "-" version
"-x86-64-gnu-linux.tar.gz")) "-x86-64-gnu-linux.tar.gz"))

View File

@ -36,13 +36,13 @@
(define-public xapian (define-public xapian
(package (package
(name "xapian") (name "xapian")
(version "1.4.2") (version "1.4.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://oligarchy.co.uk/xapian/" version (uri (string-append "https://oligarchy.co.uk/xapian/" version
"/xapian-core-" version ".tar.xz")) "/xapian-core-" version ".tar.xz"))
(sha256 (sha256
(base32 "1kp18r97qm2zky9z6ym8csjg1kj81zvqn88n4cppl4lq54sw9hmf")))) (base32 "0xg444bnxikqnxs31wsv930mvpwk4dm5zrr979371pm23i8ralkx"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("zlib" ,zlib) (inputs `(("zlib" ,zlib)
("util-linux" ,util-linux))) ("util-linux" ,util-linux)))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
@ -24,6 +24,7 @@
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (gnu packages) #:use-module (gnu packages)
@ -32,6 +33,7 @@
#:use-module (gnu packages check) #:use-module (gnu packages check)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages documentation) #:use-module (gnu packages documentation)
#:use-module (gnu packages lua)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)) #:use-module (gnu packages python))
@ -129,6 +131,88 @@ such as compact binary encodings, XML, or JSON.")
serialization.") serialization.")
(license license:boost1.0))) (license license:boost1.0)))
(define-public libmpack
(package
(name "libmpack")
(version "1.0.3")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/tarruda/libmpack/"
"archive/" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "08kfdl55yf66xk57aqsbf8n45f2jsw2v7qwnaan08ciim77j3sv5"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
#:make-flags
(list "CC=gcc"
(string-append "PREFIX=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
(delete 'configure))))
(native-inputs
`(("libtool" ,libtool)))
(home-page "https://github.com/tarruda/libmpack")
(synopsis "Small binary serialization library")
(description "Libmpack is a small binary serialization and RPC library
that implements both the msgpack and msgpack-rpc specifications.")
(license license:expat)))
(define-public lua-libmpack
(package (inherit libmpack)
(name "lua-libmpack")
(build-system gnu-build-system)
(arguments
`(;; FIXME: tests require "busted", which is not yet available in Guix.
#:tests? #f
#:test-target "test"
#:make-flags
(let* ((lua-version ,(package-version lua))
(lua-major+minor ,(version-major+minor (package-version lua))))
(list "CC=gcc"
"USE_SYSTEM_LUA=yes"
(string-append "LUA_VERSION=" lua-version)
(string-append "LUA_VERSION_MAJ_MIN=" lua-major+minor)
(string-append "PREFIX="
(assoc-ref %outputs "out"))
(string-append "LUA_CMOD_INSTALLDIR="
(assoc-ref %outputs "out")
"/lib/lua/" lua-major+minor)
;; This is unnecessary as of upstream commit 02886c13ff8a2,
;; which is not part of the current release.
"CFLAGS=-DLUA_C89_NUMBERS -fPIC"))
#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-after 'unpack 'chdir
(lambda _ (chdir "binding/lua") #t)))))
(inputs
`(("lua" ,lua)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(synopsis "Lua bindings for the libmpack binary serialization library")))
(define-public lua5.2-libmpack
(package (inherit lua-libmpack)
(name "lua5.2-libmpack")
(arguments
(substitute-keyword-arguments (package-arguments lua-libmpack)
((#:make-flags flags)
`(let* ((lua-version ,(package-version lua-5.2))
(lua-major+minor ,(version-major+minor (package-version lua-5.2))))
(list "CC=gcc"
"USE_SYSTEM_LUA=yes"
(string-append "LUA_VERSION=" lua-version)
(string-append "LUA_VERSION_MAJ_MIN=" lua-major+minor)
(string-append "PREFIX="
(assoc-ref %outputs "out"))
(string-append "LUA_CMOD_INSTALLDIR="
(assoc-ref %outputs "out")
"/lib/lua/" lua-major+minor))))))
(inputs
`(("lua" ,lua-5.2)))))
(define-public yaml-cpp (define-public yaml-cpp
(package (package
(name "yaml-cpp") (name "yaml-cpp")

View File

@ -318,14 +318,14 @@ address of one of the participants.")
(define-public mumble (define-public mumble
(package (package
(name "mumble") (name "mumble")
(version "1.2.18") (version "1.2.19")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://mumble.info/snapshot/" (uri (string-append "https://mumble.info/snapshot/"
name "-" version ".tar.gz")) name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1ajmdzf2jqbnm4hm53wv8bzazffflzs3z8hhbl70kfci4v4arxz0")) "1s60vaici3v034jzzi20x23hsj6mkjlc0glipjq4hffrg9qgnizh"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
`(begin `(begin

View File

@ -1,5 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 José Miguel Sánchez García <jmi2k@openmailbox.org> ;;; Copyright © 2016 José Miguel Sánchez García <jmi2k@openmailbox.org>
;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -19,13 +21,19 @@
(define-module (gnu packages text-editors) (define-module (gnu packages text-editors)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages boost)
#:use-module (gnu packages documentation)
#:use-module (gnu packages gcc)
#:use-module (gnu packages lua) #:use-module (gnu packages lua)
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
#:use-module (gnu packages terminals)) #:use-module (gnu packages ruby)
#:use-module (gnu packages terminals)
#:use-module (gnu packages xml))
(define-public vis (define-public vis
(package (package
@ -75,3 +83,95 @@ based command language.")
(license (list license:isc ; Main distribution. (license (list license:isc ; Main distribution.
license:public-domain ; map.[ch] license:public-domain ; map.[ch]
license:expat)))) ; lexers and libutf.[ch] license:expat)))) ; lexers and libutf.[ch]
(define-public kakoune
(let ((commit "125c8b7e80995732e0d8c87b82040025748f1b4f")
(revision "1"))
(package
(name "kakoune")
(version (string-append "0.0.0-" revision "." (string-take commit 7)))
(source
(origin
(file-name (string-append "kakoune-" version "-checkout"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/mawww/kakoune.git")
(commit commit)))
(sha256
(base32
"19qs99l8r9p1vi5pxxx9an22fvi7xx40qw3jh2cnh2mbacawvdyb"))
(modules '((guix build utils)))
(snippet
;; Kakoune uses 'gzip' to compress its manpages. Make sure
;; timestamps are not preserved for reproducibility.
'(begin
(substitute* "src/Makefile"
(("gzip -f") "gzip -f --no-name"))
#t))))
(build-system gnu-build-system)
(arguments
`(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
;; Boost is compiled with the older ABI, so we can't use
;; the new ABI if we want to link againt it.
"CPPFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-source
(lambda _
;; kakoune uses confstr with _CS_PATH to find out where to find
;; a posix shell, but this doesn't work in the build
;; environment. This substitution just replaces that result
;; with the "sh" path.
(substitute* "src/shell_manager.cc"
(("if \\(m_shell.empty\\(\\)\\)" line)
(string-append "m_shell = \"" (which "sh")
"\";\n " line)))
#t))
(delete 'configure)
;; kakoune requires us to be in the src/ directory to build
(add-before 'build 'chdir
(lambda _ (chdir "src") #t))
(add-before 'check 'fix-test-permissions
(lambda _
;; Out git downloader doesn't give us write permissions, but
;; without them the tests fail.
(zero? (system* "chmod" "-R" "u+w" "../test")))))))
(native-inputs `(("gcc" ,gcc-5)
("libxslt" ,libxslt)
("asciidoc" ,asciidoc)
("ruby" ,ruby)))
(inputs `(("gcc:lib" ,gcc-5 "lib")
("ncurses" ,ncurses)
("boost" ,boost)))
(synopsis "Vim-inspired code editor")
(description
"Kakoune is a code editor heavily inspired by Vim, as such most of its
commands are similar to Vi's ones, and it shares Vi's \"keystrokes as a text
editing language\" model. Kakoune has a strong focus on interactivity, most
commands provide immediate and incremental results, while still being
competitive (as in keystroke count) with Vim.")
(home-page "http://kakoune.org/")
(license license:unlicense))))
(define-public joe
(package
(name "joe")
(version "4.4")
(source
(origin
(method url-fetch)
(uri (string-append "https://sourceforge.net/projects/joe-editor/"
"files/JOE sources/joe-" version "/"
"joe-" version ".tar.gz"))
(sha256
(base32
"0y898r1xlrv75m00y598rvwwsricabplyh80wawsqafapcl4hw55"))))
(build-system gnu-build-system)
(inputs `(("ncurses" ,ncurses)))
(home-page "http://joe-editor.sourceforge.net/")
(synopsis "Console screen editor")
(description
"JOE is a powerful console screen editor with a \"mode-less\" user
interface similar to many user-friendly editors. JOE has some of the key
bindings and many of the powerful features of GNU Emacs.")
(license license:gpl3+)))

View File

@ -229,6 +229,7 @@ required structures.")
(define-public openssl (define-public openssl
(package (package
(name "openssl") (name "openssl")
(replacement openssl-1.0.2k)
(version "1.0.2j") (version "1.0.2j")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
@ -365,11 +366,31 @@ required structures.")
(license license:openssl) (license license:openssl)
(home-page "http://www.openssl.org/"))) (home-page "http://www.openssl.org/")))
(define-public openssl-next (define openssl-1.0.2k
(package (package
(inherit openssl) (inherit openssl)
(name "openssl") (name "openssl")
(version "1.1.0c") (version "1.0.2k")
(source
(origin
(method url-fetch)
(uri (list (string-append "ftp://ftp.openssl.org/source/"
name "-" version ".tar.gz")
(string-append "ftp://ftp.openssl.org/source/old/"
(string-trim-right version char-set:letter)
"/" name "-" version ".tar.gz")))
(sha256
(base32
"1h6qi35w6hv6rd73p4cdgdzg732pdrfgpp37cgwz1v9a3z37ffbb"))
(patches (search-patches "openssl-runpath.patch"
"openssl-c-rehash-in.patch"))))))
(define-public openssl-next
(package
(inherit openssl)
(replacement #f)
(name "openssl")
(version "1.1.0d")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (list (string-append "ftp://ftp.openssl.org/source/" (uri (list (string-append "ftp://ftp.openssl.org/source/"
@ -380,7 +401,7 @@ required structures.")
(patches (search-patches "openssl-1.1.0-c-rehash-in.patch")) (patches (search-patches "openssl-1.1.0-c-rehash-in.patch"))
(sha256 (sha256
(base32 (base32
"1xfn5ydl14myd9wgxm4nxy5a42cpp1g12ijf3g9m4mz0l90n8hzw")))) "1pv0zql3r73qpjini90hn29l28d65b7i777zav0larbmi6gbnpkx"))))
(outputs '("out" (outputs '("out"
"doc" ;1.3MiB of man3 pages "doc" ;1.3MiB of man3 pages
"static")) ; 5.5MiB of .a files "static")) ; 5.5MiB of .a files
@ -469,13 +490,13 @@ security, and applying best practice development processes.")
(define-public python-acme (define-public python-acme
(package (package
(name "python-acme") (name "python-acme")
(version "0.10.1") (version "0.10.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "acme" version)) (uri (pypi-uri "acme" version))
(sha256 (sha256
(base32 (base32
"04d2464klbhvrsrlmca10qxyd968qz7xizdppr53cihnlfq2y77m")))) "0y6y8d66yvwdcby96g0dlqqwy72b81yh6hws4va8r7w4aribcrb4"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases `(#:phases
@ -518,13 +539,13 @@ security, and applying best practice development processes.")
(define-public certbot (define-public certbot
(package (package
(name "certbot") (name "certbot")
(version "0.10.1") (version "0.10.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri name version)) (uri (pypi-uri name version))
(sha256 (sha256
(base32 (base32
"0hx71ba7w8kf8hpg1wy5zf8ggczb57g3kcsdg83kxjpqnfnrkmp0")))) "0c8nidbbq8p4rjhcrw31saw04n5rz4zgr08chbch17gw03hrqwik"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:python ,python-2 `(#:python ,python-2
@ -567,9 +588,10 @@ security, and applying best practice development processes.")
("python2-requests" ,python2-requests) ("python2-requests" ,python2-requests)
("python2-pytz" ,python2-pytz))) ("python2-pytz" ,python2-pytz)))
(synopsis "Let's Encrypt client by the Electronic Frontier Foundation") (synopsis "Let's Encrypt client by the Electronic Frontier Foundation")
(description "Tool to automatically receive and install X.509 certificates (description "Certbot automatically receives and installs X.509 certificates
to enable TLS on servers. The client will interoperate with the Lets Encrypt CA which to enable Transport Layer Security (TLS) on servers. It interoperates with the
will be issuing browser-trusted certificates for free.") Lets Encrypt certificate authority (CA), which issues browser-trusted
certificates for free.")
(home-page "https://certbot.eff.org/") (home-page "https://certbot.eff.org/")
(license license:asl2.0))) (license license:asl2.0)))
@ -714,7 +736,7 @@ number generator")
(define-public acme-client (define-public acme-client
(package (package
(name "acme-client") (name "acme-client")
(version "0.1.15") (version "0.1.16")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://kristaps.bsd.lv/" name "/" (uri (string-append "https://kristaps.bsd.lv/" name "/"
@ -722,7 +744,7 @@ number generator")
version ".tgz")) version ".tgz"))
(sha256 (sha256
(base32 (base32
"07p723391whrswl4rir0l1k03l457sjscnj0cfaxr8mfnkx4y3wi")))) "00q05b3b1dfnfp7sr1nbd212n0mqrycl3cr9lbs51m7ncaihbrz9"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:tests? #f ; no test suite '(#:tests? #f ; no test suite

View File

@ -3,6 +3,7 @@
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -20,7 +21,7 @@
;;; 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 (gnu packages tor) (define-module (gnu packages tor)
#:use-module ((guix licenses) #:select (bsd-3 gpl3+ gpl2+ gpl2)) #:use-module ((guix licenses) #:prefix license:)
#: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)
@ -48,6 +49,10 @@
(base32 (base32
"0hqdk5p6dw4bpn7c8gmhyi8jjkhc37112pfw5nx4gl0g4lmmscik")))) "0hqdk5p6dw4bpn7c8gmhyi8jjkhc37112pfw5nx4gl0g4lmmscik"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
`(#:configure-flags (list "--enable-expensive-hardening"
"--enable-gcc-hardening"
"--enable-linker-hardening")))
(native-inputs (native-inputs
`(("python" ,python-2))) ; for tests `(("python" ,python-2))) ; for tests
(inputs (inputs
@ -69,7 +74,7 @@ To @code{torify} applications (to take measures to ensure that an application,
which has not been designed for use with Tor such as ssh, will use only Tor for which has not been designed for use with Tor such as ssh, will use only Tor for
internet connectivity, and also ensures that there are no leaks from DNS, UDP or internet connectivity, and also ensures that there are no leaks from DNS, UDP or
the application layer) you need to install @code{torsocks}.") the application layer) you need to install @code{torsocks}.")
(license bsd-3))) (license license:bsd-3)))
(define-public torsocks (define-public torsocks
(package (package
@ -91,7 +96,7 @@ way with Tor. It ensures that DNS requests are handled safely and explicitly
rejects UDP traffic from the application you're using.") rejects UDP traffic from the application you're using.")
;; All the files explicitly say "version 2 only". ;; All the files explicitly say "version 2 only".
(license gpl2))) (license license:gpl2)))
(define-public privoxy (define-public privoxy
(package (package
@ -135,7 +140,7 @@ access, and removing ads and other obnoxious Internet junk. Privoxy has a
flexible configuration and can be customized to suit individual needs and flexible configuration and can be customized to suit individual needs and
tastes. It has application for both stand-alone systems and multi-user tastes. It has application for both stand-alone systems and multi-user
networks.") networks.")
(license gpl2+))) (license license:gpl2+)))
(define-public onionshare (define-public onionshare
(package (package
@ -221,5 +226,68 @@ using a third party filesharing service. You host the file on your own computer
and use a Tor hidden service to make it temporarily accessible over the and use a Tor hidden service to make it temporarily accessible over the
internet. The other user just needs to use Tor Browser to download the file internet. The other user just needs to use Tor Browser to download the file
from you.") from you.")
(license (list gpl3+ (license (list license:gpl3+
bsd-3)))) ; onionshare/socks.py license:bsd-3)))) ; onionshare/socks.py
(define-public nyx
;; The last arm relase was 5 years ago. Meanwhile, python3 support has
;; been added and the software was renamed to nyx.
(let ((commit "fea209127484d9b304b908a4711c9528b1d065bc")
(revision "1")) ; Guix package revision
(package
(name "nyx")
(version (string-append "1.9-"
revision "." (string-take commit 7)))
(source
(origin
(method git-fetch)
(file-name (string-append name "-" version "-checkout"))
(uri (git-reference
(url "https://git.torproject.org/nyx.git")
(commit commit)))
(sha256
(base32
"1g0l4988076xg5gs0x0nxzlg58rfx5g5agmklvyh4yp03vxncdb9"))))
(build-system python-build-system)
(native-inputs
`(("python-mock" ,python-mock)
("python-pep8" ,python-pep8)
("python-pyflakes" ,python-pyflakes)))
(inputs
`(("python-stem" ,python-stem)))
(arguments
`(#:configure-flags
(list (string-append "--man-page="
(assoc-ref %outputs "out")
"/share/man/man1/nyx.1")
(string-append "--sample-path="
(assoc-ref %outputs "out")
"/share/doc/nyx/nyxrc.sample"))
#:use-setuptools? #f ; setup.py still uses distutils
#:phases
(modify-phases %standard-phases
(replace 'check
(lambda _
(zero? (system* "./run_tests.py" "--unit")))))))
;; A Nyx home page is being worked on. Use Arm's for now, which at
;; least mentions the new source repository:
(home-page "http://www.atagar.com/arm/")
(synopsis "Tor relay status monitor")
(description "Nyx (formerly Anonymizing Relay Monitor or \"arm\")
monitors the performance of relays participating in the
@uref{https://www.torproject.org/, Tor anonymity network}. It displays this
information visually and in real time, using a curses-based terminal interface.
This makes Nyx well-suited for remote shell connections and servers without a
graphical display. It's like @command{top} for Tor, providing detailed
statistics and status reports on:
@enumerate
@item connections (with IP address, hostname, fingerprint, and consensus data),
@item bandwidth, processor, and memory usage,
@item the relay's current configuration,
@item logged events,
@item and much more.
@end enumerate
Potential client and exit connections are scrubbed of sensitive information.")
(license license:gpl3+))))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -32,15 +32,15 @@
(define-public tvtime (define-public tvtime
(package (package
(name "tvtime") (name "tvtime")
(version "1.0.10") (version "1.0.11")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"http://linuxtv.org/downloads/tvtime/tvtime-" "https://linuxtv.org/downloads/tvtime/tvtime-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1mk6dni82n8jv5wsrrpqzcwrg9ccx9vijb5sbm7gqm2y0h40q5y9")))) "1367rl3n6qxwf30lqyz234zpb43s9xjhig3hrvbg7cbqcl8g4fs0"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("alsa-lib" ,alsa-lib) `(("alsa-lib" ,alsa-lib)

View File

@ -55,8 +55,9 @@
(delete 'configure)))) (delete 'configure))))
(home-page "https://www.devicetree.org") (home-page "https://www.devicetree.org")
(synopsis "Compiles device tree source files") (synopsis "Compiles device tree source files")
(description "@command{dtc} compiles device tree source files to device (description "@command{dtc} compiles
tree binary files. These are board description files used by Linux and BSD.") @uref{http://elinux.org/Device_Tree_Usage, device tree source files} to device
tree binary files. These are board description files used by Linux and BSD.")
(license license:gpl2+))) (license license:gpl2+)))
(define u-boot (define u-boot

View File

@ -970,7 +970,7 @@ access to mpv's powerful playback capabilities.")
(define-public youtube-dl (define-public youtube-dl
(package (package
(name "youtube-dl") (name "youtube-dl")
(version "2017.01.24") (version "2017.01.29")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://yt-dl.org/downloads/" (uri (string-append "https://yt-dl.org/downloads/"
@ -978,7 +978,7 @@ access to mpv's powerful playback capabilities.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1n74s6kfs4v1lfg7xls9ymk6yrq09hxwd18sz3lziv5qd1pj14b6")))) "0visxc4rb6kw4hjcgcv5llis08z0syhian1m5hr1fdbz4w73hx9l"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
;; The problem here is that the directory for the man page and completion ;; The problem here is that the directory for the man page and completion

View File

@ -2,6 +2,7 @@
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -22,18 +23,23 @@
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#: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 gnu) #:use-module (guix build-system gnu)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages acl) #:use-module (gnu packages acl)
#:use-module (gnu packages admin) ; For GNU hostname #:use-module (gnu packages admin) ; For GNU hostname
#:use-module (gnu packages attr) #:use-module (gnu packages attr)
#:use-module (gnu packages base)
#:use-module (gnu packages fontutils) #:use-module (gnu packages fontutils)
#:use-module (gnu packages gawk) #:use-module (gnu packages gawk)
#:use-module (gnu packages gettext) #:use-module (gnu packages gettext)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages gperf)
#:use-module (gnu packages groff) #:use-module (gnu packages groff)
#:use-module (gnu packages gtk) #:use-module (gnu packages gtk)
#:use-module (gnu packages image) #:use-module (gnu packages image)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages libevent)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages lua) #:use-module (gnu packages lua)
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
@ -41,15 +47,17 @@
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages ruby) #:use-module (gnu packages ruby)
#:use-module (gnu packages serialization)
#:use-module (gnu packages shells) #:use-module (gnu packages shells)
#:use-module (gnu packages tcl) #:use-module (gnu packages tcl)
#:use-module (gnu packages terminals)
#:use-module (gnu packages xdisorg) #:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg)) #:use-module (gnu packages xorg))
(define-public vim (define-public vim
(package (package
(name "vim") (name "vim")
(version "8.0.0194") (version "8.0.0257")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/vim/vim/archive/v" (uri (string-append "https://github.com/vim/vim/archive/v"
@ -57,7 +65,7 @@
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0rvhlgfms6w7h1v17lxwvfp32nmxx92vc0xsmgj5xgapz43l2sp0")))) "05vz59iw77lmhnywfv9ihd0d895axqf2y81ddpjkn1qdspvw8ijj"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:test-target "test" `(#:test-target "test"
@ -149,6 +157,78 @@ configuration files.")
("tcl" ,tcl) ("tcl" ,tcl)
,@(package-inputs vim))))) ,@(package-inputs vim)))))
(define-public neovim
(package
(name "neovim")
(version "0.1.7")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/neovim/neovim/"
"archive/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0zjbpc4rhv5bcr353xqnbrc36zjvn7qvh8xf6s7n1bdi3788by6q"))))
(build-system cmake-build-system)
(arguments
`(#:modules ((srfi srfi-26)
(guix build cmake-build-system)
(guix build utils))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-lua-paths
(lambda* (#:key inputs #:allow-other-keys)
(let* ((lua-version "5.2")
(lua-cpath-spec
(lambda (prefix)
(let ((path (string-append prefix "/lib/lua/" lua-version)))
(string-append path "/?.so;" path "/?/?.so"))))
(lua-path-spec
(lambda (prefix)
(let ((path (string-append prefix "/share/lua/" lua-version)))
(string-append path "/?.lua;" path "/?/?.lua"))))
(lua-inputs (map (cute assoc-ref %build-inputs <>)
'("lua"
"lua-lpeg"
"lua-bitop"
"lua-libmpack"))))
(setenv "LUA_PATH"
(string-join (map lua-path-spec lua-inputs) ";"))
(setenv "LUA_CPATH"
(string-join (map lua-cpath-spec lua-inputs) ";"))
#t))))))
(inputs
`(("libuv" ,libuv)
("msgpack" ,msgpack)
("libtermkey" ,libtermkey)
("libvterm" ,libvterm)
("unibilium" ,unibilium)
("jemalloc" ,jemalloc)
("libiconv" ,libiconv)
("lua" ,lua-5.2)
("lua-lpeg" ,lua5.2-lpeg)
("lua-bitop" ,lua5.2-bitop)
("lua-libmpack" ,lua5.2-libmpack)))
(native-inputs
`(("pkg-config" ,pkg-config)
("gettext" ,gettext-minimal)
("gperf" ,gperf)))
(home-page "http://neovim.io")
(synopsis "Fork of vim focused on extensibility and agility")
(description "Neovim is a project that seeks to aggressively
refactor Vim in order to:
@itemize
@item Simplify maintenance and encourage contributions
@item Split the work between multiple developers
@item Enable advanced external UIs without modifications to the core
@item Improve extensibility with a new plugin architecture
@end itemize\n")
;; Neovim is licensed under the terms of the Apache 2.0 license,
;; except for parts that were contributed under the Vim license.
(license (list license:asl2.0 license:vim))))
(define-public vifm (define-public vifm
(package (package
(name "vifm") (name "vifm")

View File

@ -88,16 +88,14 @@
(define-public httpd (define-public httpd
(package (package
(name "httpd") (name "httpd")
(version "2.4.23") (version "2.4.25")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://apache/httpd/httpd-" (uri (string-append "mirror://apache/httpd/httpd-"
version ".tar.bz2")) version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0n2yx3gjlpr4kgqx845fj6amnmg25r2l6a7rzab5hxnpmar985hc")) "1cl0bkqg6srb1sypga0cn8dcmdyxldavij73zmmkxvlz3kgw4zpq"))))
(patches (search-patches "httpd-CVE-2016-8740.patch"))
(patch-flags '("-p0"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("pcre" ,pcre "bin"))) ;for 'pcre-config' (native-inputs `(("pcre" ,pcre "bin"))) ;for 'pcre-config'
(inputs `(("apr" ,apr) (inputs `(("apr" ,apr)
@ -128,14 +126,14 @@ and its related documentation.")
(define-public nginx (define-public nginx
(package (package
(name "nginx") (name "nginx")
(version "1.11.6") (version "1.11.9")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://nginx.org/download/nginx-" (uri (string-append "https://nginx.org/download/nginx-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1gc5phrzm2hbpvryaya6rlvasa00vjips4hv5q1rqbcfa6xsnlri")))) "0j2pcara9ir2xj3m2mjzf7wz46mdy51c0kal61cp0ldm2qgvf8nw"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("pcre" ,pcre) (inputs `(("pcre" ,pcre)
("openssl" ,openssl) ("openssl" ,openssl)
@ -3995,3 +3993,28 @@ programs' code. Its architecture is optimized for security, portability, and
scalability (including load-balancing), making it suitable for large scalability (including load-balancing), making it suitable for large
deployments.") deployments.")
(license l:gpl2+))) (license l:gpl2+)))
(define-public xinetd
(package
(name "xinetd")
(version "2.3.15")
(source
(origin
(method url-fetch)
(uri "https://github.com/xinetd-org/xinetd/archive/xinetd-2-3-15.tar.gz")
(patches (search-patches "xinetd-CVE-2013-4342.patch" "xinetd-fix-fd-leak.patch"))
(sha256
(base32
"0k59x52cbzp5fw0n8zn0y54j1ps0x9b72y8k5grzswjdmgs2a2v2"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--with-loadavg")
#:tests? #f )) ; no tests
(home-page "https://github.com/xinetd-org/xinetd")
(synopsis "Internet services daemon")
(description "@code{xinetd}, a more secure replacement for @code{inetd},
listens for incoming requests over a network and launches the appropriate
service for that request. Requests are made using port numbers as identifiers
and xinetd usually launches another daemon to handle the request. It can be
used to start services with both privileged and non-privileged port numbers.")
(license (l:fsf-free "file://COPYRIGHT"))))

View File

@ -53,7 +53,7 @@
(define-public wine (define-public wine
(package (package
(name "wine") (name "wine")
(version "1.9.24") (version "2.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://dl.winehq.org/wine/source/" (uri (string-append "https://dl.winehq.org/wine/source/"
@ -61,7 +61,7 @@
"/wine-" version ".tar.bz2")) "/wine-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0qb07vfxwz41wj71lb0ss3apf22m4ch06382rqfksf7gg34pswnb")))) "1ik6q0h3ph3jizmp7bxhf6kcm1pzrdrn2m0yf2x86slv2aigamlp"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config) (native-inputs `(("pkg-config" ,pkg-config)
("gettext" ,gettext-minimal) ("gettext" ,gettext-minimal)

View File

@ -788,7 +788,7 @@ Wacom tablet applet.")
(define-public xf86-input-wacom (define-public xf86-input-wacom
(package (package
(name "xf86-input-wacom") (name "xf86-input-wacom")
(version "0.29.0") (version "0.34.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -796,7 +796,7 @@ Wacom tablet applet.")
name "-" version ".tar.bz2")) name "-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"15lbzjkaf690i69qy0n0ibwczbclqq1nx0418c6a567by5v7wl48")))) "0idhkigl0pnyp08sqm6bqfb4h20v6rjrb71z1gdv59gk7d7qwpgi"))))
(arguments (arguments
`(#:configure-flags `(#:configure-flags
(list (string-append "--with-sdkdir=" (list (string-append "--with-sdkdir="

View File

@ -1930,7 +1930,7 @@ server.")
(define-public xauth (define-public xauth
(package (package
(name "xauth") (name "xauth")
(version "1.0.9") (version "1.0.10")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -1940,7 +1940,7 @@ server.")
".tar.bz2")) ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"13y2invb0894b1in03jbglximbz6v31y2kr4yjjgica8xciibkjn")))) "0kgwz9rmxjfdvi2syf8g0ms5rr5cgyqx4n0n1m960kyz7k745zjs"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("libxmu" ,libxmu) `(("libxmu" ,libxmu)
@ -2014,6 +2014,41 @@ the same way.")
legacy X clients.") legacy X clients.")
(license license:x11))) (license license:x11)))
(define-public xcalc
(package
(name "xcalc")
(version "1.0.6")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://xorg/individual/app/" name "-"
version
".tar.gz"))
(sha256
(base32
"1lg8xwj0nr8anbd77n3cs87s57sr4gmb3pxs3k22a28n6ndcvmbz"))))
(build-system gnu-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(add-after
'configure 'mutate-makefile
(lambda _
(substitute* "Makefile"
(("^appdefaultdir = .*$")
(string-append "appdefaultdir = " %output
,%app-defaults-dir "\n")))
#t)))))
(inputs
`(("libxaw" ,libxaw)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(home-page "https://www.x.org/wiki/")
(synopsis "Hand calculator for the X Window system")
(description "Xcalc is a scientific calculator desktop accessory that can
emulate a TI-30 or an HP-10C.")
(license license:x11)))
(define-public xcb-proto (define-public xcb-proto
(package (package
@ -2770,10 +2805,10 @@ X server.")
(define-public xf86-video-intel (define-public xf86-video-intel
(let ((commit "d1672806a5222f00dcc2eb24ccddd03f727f71bc")) (let ((commit "9fe04af4bce3057e3e94a6bf36a3d8d2e48d592c"))
(package (package
(name "xf86-video-intel") (name "xf86-video-intel")
(version (string-append "2.99.917-1-" (string-take commit 7))) (version (string-append "2.99.917-2-" (string-take commit 7)))
(source (source
(origin (origin
;; there's no current tarball ;; there's no current tarball
@ -2783,7 +2818,7 @@ X server.")
(commit commit))) (commit commit)))
(sha256 (sha256
(base32 (base32
"16hfcj11lbn6lp0hgrixidbfb7mghm1yn4lynmymm985w1gg0n72")) "06nnm9kjvmwxazp2ki0i5x1xv03bysfgpw30nd2jlf71qllybxml"))
(file-name (string-append name "-" version)))) (file-name (string-append name "-" version))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("mesa" ,mesa) (inputs `(("mesa" ,mesa)

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
@ -99,6 +99,18 @@
%default-authorized-guix-keys %default-authorized-guix-keys
guix-configuration guix-configuration
guix-configuration? guix-configuration?
guix-configuration-guix
guix-configuration-build-group
guix-configuration-build-accounts
guix-configuration-authorize-key?
guix-configuration-authorized-keys
guix-configuration-use-substitutes?
guix-configuration-substitute-urls
guix-configuration-extra-options
guix-configuration-log-file
guix-configuration-lsof
guix-service guix-service
guix-service-type guix-service-type
guix-publish-configuration guix-publish-configuration
@ -301,13 +313,26 @@ FILE-SYSTEM."
#:select (mount-file-system)) #:select (mount-file-system))
,@%default-modules))))))) ,@%default-modules)))))))
(define (file-system-shepherd-services file-systems)
"Return the list of Shepherd services for FILE-SYSTEMS."
(let* ((file-systems (filter file-system-mount? file-systems)))
(define sink
(shepherd-service
(provision '(file-systems))
(requirement (cons* 'root-file-system 'user-file-systems
(map file-system->shepherd-service-name
file-systems)))
(documentation "Target for all the initially-mounted file systems")
(start #~(const #t))
(stop #~(const #f))))
(cons sink (map file-system-shepherd-service file-systems))))
(define file-system-service-type (define file-system-service-type
(service-type (name 'file-systems) (service-type (name 'file-systems)
(extensions (extensions
(list (service-extension shepherd-root-service-type (list (service-extension shepherd-root-service-type
(lambda (file-systems) file-system-shepherd-services)
(filter-map file-system-shepherd-service
file-systems)))
(service-extension fstab-service-type (service-extension fstab-service-type
identity))) identity)))
(compose concatenate) (compose concatenate)
@ -354,93 +379,89 @@ in KNOWN-MOUNT-POINTS when it is stopped."
(define user-processes-service-type (define user-processes-service-type
(shepherd-service-type (shepherd-service-type
'user-processes 'user-processes
(match-lambda (lambda (grace-delay)
((requirements grace-delay) (shepherd-service
(shepherd-service (documentation "When stopped, terminate all user processes.")
(documentation "When stopped, terminate all user processes.") (provision '(user-processes))
(provision '(user-processes)) (requirement '(file-systems))
(requirement (cons* 'root-file-system 'user-file-systems (start #~(const #t))
(map file-system->shepherd-service-name (stop #~(lambda _
requirements))) (define (kill-except omit signal)
(start #~(const #t)) ;; Kill all the processes with SIGNAL except those listed
(stop #~(lambda _ ;; in OMIT and the current process.
(define (kill-except omit signal) (let ((omit (cons (getpid) omit)))
;; Kill all the processes with SIGNAL except those listed (for-each (lambda (pid)
;; in OMIT and the current process. (unless (memv pid omit)
(let ((omit (cons (getpid) omit))) (false-if-exception
(for-each (lambda (pid) (kill pid signal))))
(unless (memv pid omit) (processes))))
(false-if-exception
(kill pid signal))))
(processes))))
(define omitted-pids (define omitted-pids
;; List of PIDs that must not be killed. ;; List of PIDs that must not be killed.
(if (file-exists? #$%do-not-kill-file) (if (file-exists? #$%do-not-kill-file)
(map string->number (map string->number
(call-with-input-file #$%do-not-kill-file (call-with-input-file #$%do-not-kill-file
(compose string-tokenize (compose string-tokenize
(@ (ice-9 rdelim) read-string)))) (@ (ice-9 rdelim) read-string))))
'())) '()))
(define (now) (define (now)
(car (gettimeofday))) (car (gettimeofday)))
(define (sleep* n) (define (sleep* n)
;; Really sleep N seconds. ;; Really sleep N seconds.
;; Work around <http://bugs.gnu.org/19581>. ;; Work around <http://bugs.gnu.org/19581>.
(define start (now)) (define start (now))
(let loop ((elapsed 0)) (let loop ((elapsed 0))
(when (> n elapsed) (when (> n elapsed)
(sleep (- n elapsed)) (sleep (- n elapsed))
(loop (- (now) start))))) (loop (- (now) start)))))
(define lset= (@ (srfi srfi-1) lset=)) (define lset= (@ (srfi srfi-1) lset=))
(display "sending all processes the TERM signal\n") (display "sending all processes the TERM signal\n")
(if (null? omitted-pids) (if (null? omitted-pids)
(begin (begin
;; Easy: terminate all of them. ;; Easy: terminate all of them.
(kill -1 SIGTERM) (kill -1 SIGTERM)
(sleep* #$grace-delay) (sleep* #$grace-delay)
(kill -1 SIGKILL)) (kill -1 SIGKILL))
(begin (begin
;; Kill them all except OMITTED-PIDS. XXX: We would ;; Kill them all except OMITTED-PIDS. XXX: We would
;; like to (kill -1 SIGSTOP) to get a fixed list of ;; like to (kill -1 SIGSTOP) to get a fixed list of
;; processes, like 'killall5' does, but that seems ;; processes, like 'killall5' does, but that seems
;; unreliable. ;; unreliable.
(kill-except omitted-pids SIGTERM) (kill-except omitted-pids SIGTERM)
(sleep* #$grace-delay) (sleep* #$grace-delay)
(kill-except omitted-pids SIGKILL) (kill-except omitted-pids SIGKILL)
(delete-file #$%do-not-kill-file))) (delete-file #$%do-not-kill-file)))
(let wait () (let wait ()
(let ((pids (processes))) (let ((pids (processes)))
(unless (lset= = pids (cons 1 omitted-pids)) (unless (lset= = pids (cons 1 omitted-pids))
(format #t "waiting for process termination\ (format #t "waiting for process termination\
(processes left: ~s)~%" (processes left: ~s)~%"
pids) pids)
(sleep* 2) (sleep* 2)
(wait)))) (wait))))
(display "all processes have been terminated\n") (display "all processes have been terminated\n")
#f)) #f))
(respawn? #f)))))) (respawn? #f)))))
(define* (user-processes-service file-systems #:key (grace-delay 4)) (define* (user-processes-service #:key (grace-delay 4))
"Return the service that is responsible for terminating all the processes so "Return the service that is responsible for terminating all the processes so
that the root file system can be re-mounted read-only, just before that the root file system can be re-mounted read-only, just before
rebooting/halting. Processes still running GRACE-DELAY seconds after SIGTERM rebooting/halting. Processes still running GRACE-DELAY seconds after SIGTERM
has been sent are terminated with SIGKILL. has been sent are terminated with SIGKILL.
The returned service will depend on 'root-file-system' and on all the shepherd The returned service will depend on 'file-systems', meaning that it is
services corresponding to FILE-SYSTEMS. considered started after all the auto-mount file systems have been mounted.
All the services that spawn processes must depend on this one so that they are All the services that spawn processes must depend on this one so that they are
stopped before 'kill' is called." stopped before 'kill' is called."
(service user-processes-service-type (service user-processes-service-type grace-delay))
(list (filter file-system-mount? file-systems) grace-delay)))
;;; ;;;
@ -1525,8 +1546,10 @@ This service is not part of @var{%base-services}."
(mingetty-service (mingetty-configuration (mingetty-service (mingetty-configuration
(tty "tty6"))) (tty "tty6")))
(static-networking-service "lo" "127.0.0.1" (service static-networking-service-type
#:provision '(loopback)) (list (static-networking (interface "lo")
(ip "127.0.0.1")
(provision '(loopback)))))
(syslog-service) (syslog-service)
(urandom-seed-service) (urandom-seed-service)
(guix-service) (guix-service)

View File

@ -64,7 +64,9 @@
(use-substitutes? cuirass-configuration-use-substitutes? ;boolean (use-substitutes? cuirass-configuration-use-substitutes? ;boolean
(default #f)) (default #f))
(one-shot? cuirass-configuration-one-shot? ;boolean (one-shot? cuirass-configuration-one-shot? ;boolean
(default #f))) (default #f))
(load-path cuirass-configuration-load-path
(default '())))
(define (cuirass-shepherd-service config) (define (cuirass-shepherd-service config)
"Return a <shepherd-service> for the Cuirass service with CONFIG." "Return a <shepherd-service> for the Cuirass service with CONFIG."
@ -80,7 +82,8 @@
(port (cuirass-configuration-port config)) (port (cuirass-configuration-port config))
(specs (cuirass-configuration-specifications config)) (specs (cuirass-configuration-specifications config))
(use-substitutes? (cuirass-configuration-use-substitutes? config)) (use-substitutes? (cuirass-configuration-use-substitutes? config))
(one-shot? (cuirass-configuration-one-shot? config))) (one-shot? (cuirass-configuration-one-shot? config))
(load-path (cuirass-configuration-load-path config)))
(list (shepherd-service (list (shepherd-service
(documentation "Run Cuirass.") (documentation "Run Cuirass.")
(provision '(cuirass)) (provision '(cuirass))
@ -94,7 +97,9 @@
"--port" #$(number->string port) "--port" #$(number->string port)
"--interval" #$(number->string interval) "--interval" #$(number->string interval)
#$@(if use-substitutes? '("--use-substitutes") '()) #$@(if use-substitutes? '("--use-substitutes") '())
#$@(if one-shot? '("--one-shot") '())) #$@(if one-shot? '("--one-shot") '())
#$@(if (null? load-path) '()
`("--load-path" ,(string-join load-path ":"))))
#:user #$user #:user #$user
#:group #$group #:group #$group
#:log-file #$log-file)) #:log-file #$log-file))

View File

@ -42,6 +42,13 @@
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:export (%facebook-host-aliases #:export (%facebook-host-aliases
static-networking static-networking
static-networking?
static-networking-interface
static-networking-ip
static-networking-netmask
static-networking-gateway
static-networking-service static-networking-service
static-networking-service-type static-networking-service-type
dhcp-client-service dhcp-client-service
@ -121,88 +128,138 @@ fe80::1%lo0 apps.facebook.com\n")
(ip static-networking-ip) (ip static-networking-ip)
(netmask static-networking-netmask (netmask static-networking-netmask
(default #f)) (default #f))
(gateway static-networking-gateway) (gateway static-networking-gateway ;FIXME: doesn't belong here
(provision static-networking-provision) (default #f))
(name-servers static-networking-name-servers)) (provision static-networking-provision
(default #f))
(name-servers static-networking-name-servers ;FIXME: doesn't belong here
(default '())))
(define static-networking-shepherd-service
(match-lambda
(($ <static-networking> interface ip netmask gateway provision
name-servers)
(let ((loopback? (and provision (memq 'loopback provision))))
(shepherd-service
;; Unless we're providing the loopback interface, wait for udev to be up
;; and running so that INTERFACE is actually usable.
(requirement (if loopback? '() '(udev)))
(documentation
"Bring up the networking interface using a static IP address.")
(provision (or provision
(list (symbol-append 'networking-
(string->symbol interface)))))
(start #~(lambda _
;; Return #t if successfully started.
(let* ((addr (inet-pton AF_INET #$ip))
(sockaddr (make-socket-address AF_INET addr 0))
(mask (and #$netmask
(inet-pton AF_INET #$netmask)))
(maskaddr (and mask
(make-socket-address AF_INET
mask 0)))
(gateway (and #$gateway
(inet-pton AF_INET #$gateway)))
(gatewayaddr (and gateway
(make-socket-address AF_INET
gateway 0))))
(configure-network-interface #$interface sockaddr
(logior IFF_UP
#$(if loopback?
#~IFF_LOOPBACK
0))
#:netmask maskaddr)
(when gateway
(let ((sock (socket AF_INET SOCK_DGRAM 0)))
(add-network-route/gateway sock gatewayaddr)
(close-port sock))))))
(stop #~(lambda _
;; Return #f is successfully stopped.
(let ((sock (socket AF_INET SOCK_STREAM 0)))
(when #$gateway
(delete-network-route sock
(make-socket-address
AF_INET INADDR_ANY 0)))
(set-network-interface-flags sock #$interface 0)
(close-port sock)
#f)))
(respawn? #f))))))
(define (static-networking-etc-files interfaces)
"Return a /etc/resolv.conf entry for INTERFACES or the empty list."
(match (delete-duplicates
(append-map static-networking-name-servers
interfaces))
(()
'())
((name-servers ...)
(let ((content (string-join
(map (cut string-append "nameserver " <>)
name-servers)
"\n" 'suffix)))
`(("resolv.conf"
,(plain-file "resolv.conf"
(string-append "\
# Generated by 'static-networking-service'.\n"
content))))))))
(define (static-networking-shepherd-services interfaces)
"Return the list of Shepherd services to bring up INTERFACES, a list of
<static-networking> objects."
(define (loopback? service)
(memq 'loopback (shepherd-service-provision service)))
(let ((services (map static-networking-shepherd-service interfaces)))
(match (remove loopback? services)
(()
;; There's no interface other than 'loopback', so we assume that the
;; 'networking' service will be provided by dhclient or similar.
services)
((non-loopback ...)
;; Assume we're providing all the interfaces, and thus, provide a
;; 'networking' service.
(cons (shepherd-service
(provision '(networking))
(requirement (append-map shepherd-service-provision
services))
(start #~(const #t))
(stop #~(const #f))
(documentation "Bring up all the networking interfaces."))
services)))))
(define static-networking-service-type (define static-networking-service-type
(shepherd-service-type ;; The service type for statically-defined network interfaces.
'static-networking (service-type (name 'static-networking)
(match-lambda (extensions
(($ <static-networking> interface ip netmask gateway provision (list
name-servers) (service-extension shepherd-root-service-type
(let ((loopback? (memq 'loopback provision))) static-networking-shepherd-services)
(shepherd-service (service-extension etc-service-type
static-networking-etc-files)))
;; Unless we're providing the loopback interface, wait for udev to be up (compose concatenate)
;; and running so that INTERFACE is actually usable. (extend append)))
(requirement (if loopback? '() '(udev)))
(documentation
"Bring up the networking interface using a static IP address.")
(provision provision)
(start #~(lambda _
;; Return #t if successfully started.
(let* ((addr (inet-pton AF_INET #$ip))
(sockaddr (make-socket-address AF_INET addr 0))
(mask (and #$netmask
(inet-pton AF_INET #$netmask)))
(maskaddr (and mask
(make-socket-address AF_INET
mask 0)))
(gateway (and #$gateway
(inet-pton AF_INET #$gateway)))
(gatewayaddr (and gateway
(make-socket-address AF_INET
gateway 0))))
(configure-network-interface #$interface sockaddr
(logior IFF_UP
#$(if loopback?
#~IFF_LOOPBACK
0))
#:netmask maskaddr)
(when gateway
(let ((sock (socket AF_INET SOCK_DGRAM 0)))
(add-network-route/gateway sock gatewayaddr)
(close-port sock))))
#$(if (pair? name-servers)
#~(call-with-output-file "/etc/resolv.conf"
(lambda (port)
(display
"# Generated by 'static-networking-service'.\n"
port)
(for-each (lambda (server)
(format port "nameserver ~a~%"
server))
'#$name-servers)
#t))
#t)))
(stop #~(lambda _
;; Return #f is successfully stopped.
(let ((sock (socket AF_INET SOCK_STREAM 0)))
(when #$gateway
(delete-network-route sock
(make-socket-address
AF_INET INADDR_ANY 0)))
(set-network-interface-flags sock #$interface 0)
(close-port sock)
#f)))
(respawn? #f)))))))
(define* (static-networking-service interface ip (define* (static-networking-service interface ip
#:key #:key
netmask gateway netmask gateway provision
(provision '(networking))
(name-servers '())) (name-servers '()))
"Return a service that starts @var{interface} with address @var{ip}. If "Return a service that starts @var{interface} with address @var{ip}. If
@var{netmask} is true, use it as the network mask. If @var{gateway} is true, @var{netmask} is true, use it as the network mask. If @var{gateway} is true,
it must be a string specifying the default network gateway." it must be a string specifying the default network gateway.
(service static-networking-service-type
(static-networking (interface interface) (ip ip) This procedure can be called several times, one for each network
(netmask netmask) (gateway gateway) interface of interest. Behind the scenes what it does is extend
(provision provision) @code{static-networking-service-type} with additional network interfaces
(name-servers name-servers)))) to handle."
(simple-service 'static-network-interface
static-networking-service-type
(list (static-networking (interface interface) (ip ip)
(netmask netmask) (gateway gateway)
(provision provision)
(name-servers name-servers)))))
(define dhcp-client-service-type (define dhcp-client-service-type
(shepherd-service-type (shepherd-service-type

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
@ -293,8 +293,7 @@ a container or that of a \"bare metal\" system."
(other-fs (non-boot-file-system-service os)) (other-fs (non-boot-file-system-service os))
(unmount (user-unmount-service known-fs)) (unmount (user-unmount-service known-fs))
(swaps (swap-services os)) (swaps (swap-services os))
(procs (user-processes-service (procs (user-processes-service))
(service-parameters other-fs)))
(host-name (host-name-service (operating-system-host-name os))) (host-name (host-name-service (operating-system-host-name os)))
(entries (operating-system-directory-base-entries (entries (operating-system-directory-base-entries
os #:container? container?))) os #:container? container?)))

View File

@ -94,8 +94,8 @@ denoting a file name."
(define %background-image (define %background-image
(grub-image (grub-image
(aspect-ratio 4/3) (aspect-ratio 4/3)
(file #~(string-append #$%artwork-repository (file (file-append %artwork-repository
"/grub/GuixSD-fully-black-4-3.svg")))) "/grub/GuixSD-fully-black-4-3.svg"))))
(define %default-theme (define %default-theme
;; Default theme contributed by Felipe López. ;; Default theme contributed by Felipe López.

View File

@ -21,9 +21,11 @@
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix modules)
#:use-module (guix sets) #:use-module (guix sets)
#:use-module (guix ui) #:use-module (guix ui)
#:use-module (gnu services) #:use-module (gnu services)
#:use-module (gnu services shepherd)
#:use-module ((gnu system file-systems) #:use-module ((gnu system file-systems)
#:select (%tty-gid)) #:select (%tty-gid))
#:use-module ((gnu packages admin) #:use-module ((gnu packages admin)
@ -43,6 +45,7 @@
user-account-supplementary-groups user-account-supplementary-groups
user-account-comment user-account-comment
user-account-home-directory user-account-home-directory
user-account-create-home-directory?
user-account-shell user-account-shell
user-account-system? user-account-system?
@ -81,7 +84,7 @@
(create-home-directory? user-account-create-home-directory? ;Boolean (create-home-directory? user-account-create-home-directory? ;Boolean
(default #t)) (default #t))
(shell user-account-shell ; gexp (shell user-account-shell ; gexp
(default #~(string-append #$bash "/bin/bash"))) (default (file-append bash "/bin/bash")))
(system? user-account-system? ; Boolean (system? user-account-system? ; Boolean
(default #f))) (default #f)))
@ -128,7 +131,7 @@
(name "nobody") (name "nobody")
(uid 65534) (uid 65534)
(group "nogroup") (group "nogroup")
(shell #~(string-append #$shadow "/sbin/nologin")) (shell (file-append shadow "/sbin/nologin"))
(home-directory "/nonexistent") (home-directory "/nonexistent")
(create-home-directory? #f) (create-home-directory? #f)
(system? #t)))) (system? #t))))
@ -288,6 +291,35 @@ group."
(activate-users+groups (list #$@user-specs) (activate-users+groups (list #$@user-specs)
(list #$@group-specs)))) (list #$@group-specs))))
(define (account-shepherd-service accounts+groups)
"Return a Shepherd service that creates the home directories for the user
accounts among ACCOUNTS+GROUPS."
(define accounts
(filter user-account? accounts+groups))
;; Create home directories only once 'file-systems' is up. This makes sure
;; they are created in the right place if /home lives on a separate
;; partition.
;;
;; XXX: We arrange for this service to stop right after it's done its job so
;; that 'guix system reconfigure' knows that it can reload it fearlessly
;; (and thus create new home directories). The cost of this hack is that
;; there's a small window during which first-time logins could happen before
;; the home directory has been created.
(list (shepherd-service
(requirement '(file-systems))
(provision '(user-homes))
(modules '((gnu build activation)))
(start (with-imported-modules (source-module-closure
'((gnu build activation)))
#~(lambda ()
(activate-user-home
(list #$@(map user-account->gexp accounts)))
#f))) ;stop
(stop #~(const #f))
(respawn? #f)
(documentation "Create user home directories."))))
(define (shells-file shells) (define (shells-file shells)
"Return a file-like object that builds a shell list for use as /etc/shells "Return a file-like object that builds a shell list for use as /etc/shells
based on SHELLS. /etc/shells is used by xterm, polkit, and other programs." based on SHELLS. /etc/shells is used by xterm, polkit, and other programs."
@ -327,6 +359,8 @@ the /etc/skel directory for those."
(extensions (extensions
(list (service-extension activation-service-type (list (service-extension activation-service-type
account-activation) account-activation)
(service-extension shepherd-root-service-type
account-shepherd-service)
(service-extension etc-service-type (service-extension etc-service-type
etc-files))))) etc-files)))))

View File

@ -146,6 +146,43 @@ info --version")
(pk 'services services) (pk 'services services)
'(root #$@(operating-system-shepherd-service-names os))))) '(root #$@(operating-system-shepherd-service-names os)))))
(test-assert "homes"
(let ((homes
'#$(map user-account-home-directory
(filter user-account-create-home-directory?
(operating-system-user-accounts os)))))
(marionette-eval
`(begin
(use-modules (gnu services herd) (srfi srfi-1))
;; Home directories are supposed to exist once 'user-homes'
;; has been started.
(start-service 'user-homes)
(every (lambda (home)
(and (file-exists? home)
(file-is-directory? home)))
',homes))
marionette)))
(test-assert "skeletons in home directories"
(let ((homes
'#$(filter-map (lambda (account)
(and (user-account-create-home-directory?
account)
(not (user-account-system? account))
(user-account-home-directory account)))
(operating-system-user-accounts os))))
(marionette-eval
`(begin
(use-modules (srfi srfi-1) (ice-9 ftw))
(every (lambda (home)
(null? (lset-difference string=?
(scandir "/etc/skel/")
(scandir home))))
',homes))
marionette)))
(test-equal "login on tty1" (test-equal "login on tty1"
"root\n" "root\n"
(begin (begin

View File

@ -35,6 +35,7 @@
#:use-module (guix utils) #:use-module (guix utils)
#:export (%test-installed-os #:export (%test-installed-os
%test-separate-store-os %test-separate-store-os
%test-separate-home-os
%test-raid-root-os %test-raid-root-os
%test-encrypted-os %test-encrypted-os
%test-btrfs-root-os)) %test-btrfs-root-os))
@ -218,7 +219,6 @@ IMAGE, a disk image. The QEMU VM is has access to MEMORY-SIZE MiB of RAM."
"-no-reboot" "-m" #$(number->string memory-size) "-no-reboot" "-m" #$(number->string memory-size)
"-drive" "file=disk.img,if=virtio"))))) "-drive" "file=disk.img,if=virtio")))))
(define %test-installed-os (define %test-installed-os
(system-test (system-test
(name "installed-os") (name "installed-os")
@ -232,6 +232,64 @@ build (current-guix) and then store a couple of full system images.")
(run-basic-test %minimal-os command (run-basic-test %minimal-os command
"installed-os"))))) "installed-os")))))
;;;
;;; Separate /home.
;;;
(define-os-with-source (%separate-home-os %separate-home-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.utf8")
(bootloader (grub-configuration (device "/dev/vdb")))
(kernel-arguments '("console=ttyS0"))
(file-systems (cons* (file-system
(device "my-root")
(title 'label)
(mount-point "/")
(type "ext4"))
(file-system
(device "none")
(title 'device)
(type "tmpfs")
(mount-point "/home")
(type "tmpfs"))
%base-file-systems))
(users (cons* (user-account
(name "alice")
(group "users")
(home-directory "/home/alice"))
(user-account
(name "charlie")
(group "users")
(home-directory "/home/charlie"))
%base-user-accounts))
(services (cons (service marionette-service-type
(marionette-configuration
(imported-modules '((gnu services herd)
(guix combinators)))))
%base-services))))
(define %test-separate-home-os
(system-test
(name "separate-home-os")
(description
"Test basic functionality of an installed OS with a separate /home
partition. In particular, home directories must be correctly created (see
<https://bugs.gnu.org/21108>).")
(value
(mlet* %store-monad ((image (run-install %separate-home-os
%separate-home-os-source
#:script
%simple-installation-script))
(command (qemu-command/writable-image image)))
(run-basic-test %separate-home-os command "separate-home-os")))))
;;; ;;;
;;; Separate /gnu/store partition. ;;; Separate /gnu/store partition.

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -19,7 +19,7 @@
(define-module (guix build-system gnu) (define-module (guix build-system gnu)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix combinators) #:use-module (guix memoization)
#:use-module (guix derivations) #:use-module (guix derivations)
#:use-module (guix search-paths) #:use-module (guix search-paths)
#:use-module (guix build-system) #:use-module (guix build-system)
@ -84,15 +84,15 @@ builder, or the distro's final Guile when GUILE is #f."
(let loop ((p p)) (let loop ((p p))
(define rewritten-input (define rewritten-input
(memoize (mlambda (input)
(match-lambda (match input
((name (? package? p) sub-drv ...) ((name (? package? p) sub-drv ...)
;; XXX: Check whether P's build system knows #:implicit-inputs, for ;; XXX: Check whether P's build system knows #:implicit-inputs, for
;; things like `cross-pkg-config'. ;; things like `cross-pkg-config'.
(if (eq? (package-build-system p) gnu-build-system) (if (eq? (package-build-system p) gnu-build-system)
(cons* name (loop p) sub-drv) (cons* name (loop p) sub-drv)
(cons* name p sub-drv))) (cons* name p sub-drv)))
(x x)))) (x x))))
(package (inherit p) (package (inherit p)
(location (if (pair? loc) (source-properties->location loc) loc)) (location (if (pair? loc) (source-properties->location loc) loc))
@ -393,22 +393,21 @@ packages that must not be referenced."
;;; ;;;
(define standard-cross-packages (define standard-cross-packages
(memoize (mlambda (target kind)
(lambda (target kind) "Return the list of name/package tuples to cross-build for TARGET. KIND
"Return the list of name/package tuples to cross-build for TARGET. KIND
is one of `host' or `target'." is one of `host' or `target'."
(let* ((cross (resolve-interface '(gnu packages cross-base))) (let* ((cross (resolve-interface '(gnu packages cross-base)))
(gcc (module-ref cross 'cross-gcc)) (gcc (module-ref cross 'cross-gcc))
(binutils (module-ref cross 'cross-binutils)) (binutils (module-ref cross 'cross-binutils))
(libc (module-ref cross 'cross-libc))) (libc (module-ref cross 'cross-libc)))
(case kind (case kind
((host) ((host)
`(("cross-gcc" ,(gcc target `(("cross-gcc" ,(gcc target
(binutils target) (binutils target)
(libc target))) (libc target)))
("cross-binutils" ,(binutils target)))) ("cross-binutils" ,(binutils target))))
((target) ((target)
`(("cross-libc" ,(libc target))))))))) `(("cross-libc" ,(libc target))))))))
(define* (gnu-cross-build store name (define* (gnu-cross-build store name
#:key #:key

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; ;;;
@ -21,7 +21,7 @@
(define-module (guix build-system python) (define-module (guix build-system python)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix combinators) #:use-module (guix memoization)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix derivations) #:use-module (guix derivations)
#:use-module (guix search-paths) #:use-module (guix search-paths)
@ -87,49 +87,48 @@ pre-defined variants."
;; Memoize the transformations. Failing to do that, we would build a huge ;; Memoize the transformations. Failing to do that, we would build a huge
;; object graph with lots of duplicates, which in turns prevents us from ;; object graph with lots of duplicates, which in turns prevents us from
;; benefiting from memoization in 'package-derivation'. ;; benefiting from memoization in 'package-derivation'.
(memoize ;FIXME: use 'eq?' (mlambdaq (p)
(lambda (p) (let* ((rewrite-if-package
(let* ((rewrite-if-package (lambda (content)
(lambda (content) ;; CONTENT may be a file name, in which case it is returned,
;; CONTENT may be a file name, in which case it is returned, ;; or a package, which is rewritten with the new PYTHON and
;; or a package, which is rewritten with the new PYTHON and ;; NEW-PREFIX.
;; NEW-PREFIX. (if (package? content)
(if (package? content) (transform content)
(transform content) content)))
content))) (rewrite
(rewrite (match-lambda
(match-lambda ((name content . rest)
((name content . rest) (append (list name (rewrite-if-package content)) rest)))))
(append (list name (rewrite-if-package content)) rest)))))
(cond (cond
;; If VARIANT-PROPERTY is present, use that. ;; If VARIANT-PROPERTY is present, use that.
((and variant-property ((and variant-property
(assoc-ref (package-properties p) variant-property)) (assoc-ref (package-properties p) variant-property))
=> force) => force)
;; Otherwise build the new package object graph. ;; Otherwise build the new package object graph.
((eq? (package-build-system p) python-build-system) ((eq? (package-build-system p) python-build-system)
(package (package
(inherit p) (inherit p)
(location (package-location p)) (location (package-location p))
(name (let ((name (package-name p))) (name (let ((name (package-name p)))
(string-append new-prefix (string-append new-prefix
(if (string-prefix? old-prefix name) (if (string-prefix? old-prefix name)
(substring name (substring name
(string-length old-prefix)) (string-length old-prefix))
name)))) name))))
(arguments (arguments
(let ((python (if (promise? python) (let ((python (if (promise? python)
(force python) (force python)
python))) python)))
(ensure-keyword-arguments (package-arguments p) (ensure-keyword-arguments (package-arguments p)
`(#:python ,python)))) `(#:python ,python))))
(inputs (map rewrite (package-inputs p))) (inputs (map rewrite (package-inputs p)))
(propagated-inputs (map rewrite (package-propagated-inputs p))) (propagated-inputs (map rewrite (package-propagated-inputs p)))
(native-inputs (map rewrite (package-native-inputs p))))) (native-inputs (map rewrite (package-native-inputs p)))))
(else (else
p)))))) p)))))
transform) transform)

View File

@ -1,6 +1,7 @@
;;; 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> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -105,6 +106,14 @@ characters."
((@ (guix build utils) dump-port) port (current-output-port)) ((@ (guix build utils) dump-port) port (current-output-port))
*unspecified*))) *unspecified*)))
(define (rm-command . args)
"Emit code for the 'rm' command."
(cond ((member "-r" args)
`(for-each (@ (guix build utils) delete-file-recursively)
(list ,@(delete "-r" args))))
(else
`(for-each delete-file (list ,@args)))))
(define (lines+chars port) (define (lines+chars port)
"Return the number of lines and number of chars read from PORT." "Return the number of lines and number of chars read from PORT."
(let loop ((lines 0) (chars 0)) (let loop ((lines 0) (chars 0))
@ -194,7 +203,7 @@ commands such as 'ls' and 'cd'; it lacks globbing, pipes---everything.\n"))
`(("echo" ,(lambda strings `(list ,@strings))) `(("echo" ,(lambda strings `(list ,@strings)))
("cd" ,(lambda (dir) `(chdir ,dir))) ("cd" ,(lambda (dir) `(chdir ,dir)))
("pwd" ,(lambda () `(getcwd))) ("pwd" ,(lambda () `(getcwd)))
("rm" ,(lambda (file) `(delete-file ,file))) ("rm" ,rm-command)
("cp" ,(lambda (source dest) `(copy-file ,source ,dest))) ("cp" ,(lambda (source dest) `(copy-file ,source ,dest)))
("help" ,help-command) ("help" ,help-command)
("ls" ,ls-command) ("ls" ,ls-command)

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -84,6 +84,7 @@
(params (append configure-flags (params (append configure-flags
(list "--install-tests" (list "--install-tests"
(string-append "--library=" site-library) (string-append "--library=" site-library)
"--built-timestamp=1970-01-01"
"."))) ".")))
(site-path (string-append site-library ":" (site-path (string-append site-library ":"
(generate-site-path inputs)))) (generate-site-path inputs))))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -20,8 +20,7 @@
(define-module (guix combinators) (define-module (guix combinators)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 vlist) #:use-module (ice-9 vlist)
#:export (memoize #:export (fold2
fold2
fold-tree fold-tree
fold-tree-leaves fold-tree-leaves
compile-time-value)) compile-time-value))
@ -33,19 +32,6 @@
;;; ;;;
;;; Code: ;;; Code:
(define (memoize proc)
"Return a memoizing version of PROC."
(let ((cache (make-hash-table)))
(lambda args
(let ((results (hash-ref cache args)))
(if results
(apply values results)
(let ((results (call-with-values (lambda ()
(apply proc args))
list)))
(hash-set! cache args results)
(apply values results)))))))
(define fold2 (define fold2
(case-lambda (case-lambda
((proc seed1 seed2 lst) ((proc seed1 seed2 lst)

View File

@ -31,6 +31,7 @@
#:use-module (ice-9 vlist) #:use-module (ice-9 vlist)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix memoization)
#:use-module (guix combinators) #:use-module (guix combinators)
#:use-module (guix monads) #:use-module (guix monads)
#:use-module (guix hash) #:use-module (guix hash)
@ -556,12 +557,11 @@ that form."
(display ")" port)))) (display ")" port))))
(define derivation->string (define derivation->string
(memoize (mlambda (drv)
(lambda (drv) "Return the external representation of DRV as a string."
"Return the external representation of DRV as a string." (with-fluids ((%default-port-encoding "UTF-8"))
(with-fluids ((%default-port-encoding "UTF-8")) (call-with-output-string
(call-with-output-string (cut write-derivation drv <>)))))
(cut write-derivation drv <>))))))
(define* (derivation->output-path drv #:optional (output "out")) (define* (derivation->output-path drv #:optional (output "out"))
"Return the store path of its output OUTPUT. Raise a "Return the store path of its output OUTPUT. Raise a
@ -583,12 +583,14 @@ DRV."
(define derivation-path->output-path (define derivation-path->output-path
;; This procedure is called frequently, so memoize it. ;; This procedure is called frequently, so memoize it.
(memoize (let ((memoized (mlambda (path output)
(lambda* (path #:optional (output "out")) (derivation->output-path (call-with-input-file path
"Read the derivation from PATH (`/gnu/store/xxx.drv'), and return the store read-derivation)
output))))
(lambda* (path #:optional (output "out"))
"Read the derivation from PATH (`/gnu/store/xxx.drv'), and return the store
path of its output OUTPUT." path of its output OUTPUT."
(derivation->output-path (call-with-input-file path read-derivation) (memoized path output))))
output))))
(define (derivation-path->output-paths path) (define (derivation-path->output-paths path)
"Read the derivation from PATH (`/gnu/store/xxx.drv'), and return the "Read the derivation from PATH (`/gnu/store/xxx.drv'), and return the
@ -615,23 +617,21 @@ in SIZE bytes."
(loop (+ 1 i)))))) (loop (+ 1 i))))))
(define derivation-path->base16-hash (define derivation-path->base16-hash
(memoize (mlambda (file)
(lambda (file) "Return a string containing the base16 representation of the hash of the
"Return a string containing the base16 representation of the hash of the
derivation at FILE." derivation at FILE."
(call-with-input-file file (call-with-input-file file
(compose bytevector->base16-string (compose bytevector->base16-string
derivation-hash derivation-hash
read-derivation))))) read-derivation))))
(define derivation-hash ; `hashDerivationModulo' in derivations.cc (define derivation-hash ; `hashDerivationModulo' in derivations.cc
(memoize (mlambda (drv)
(lambda (drv)
"Return the hash of DRV, modulo its fixed-output inputs, as a bytevector." "Return the hash of DRV, modulo its fixed-output inputs, as a bytevector."
(match drv (match drv
(($ <derivation> ((_ . ($ <derivation-output> path (($ <derivation> ((_ . ($ <derivation-output> path
(? symbol? hash-algo) (? bytevector? hash) (? symbol? hash-algo) (? bytevector? hash)
(? boolean? recursive?))))) (? boolean? recursive?)))))
;; A fixed-output derivation. ;; A fixed-output derivation.
(sha256 (sha256
(string->utf8 (string->utf8
@ -641,14 +641,14 @@ derivation at FILE."
":" (bytevector->base16-string hash) ":" (bytevector->base16-string hash)
":" path)))) ":" path))))
(($ <derivation> outputs inputs sources (($ <derivation> outputs inputs sources
system builder args env-vars) system builder args env-vars)
;; A regular derivation: replace the path of each input with that ;; A regular derivation: replace the path of each input with that
;; input's hash; return the hash of serialization of the resulting ;; input's hash; return the hash of serialization of the resulting
;; derivation. ;; derivation.
(let* ((inputs (map (match-lambda (let* ((inputs (map (match-lambda
(($ <derivation-input> path sub-drvs) (($ <derivation-input> path sub-drvs)
(let ((hash (derivation-path->base16-hash path))) (let ((hash (derivation-path->base16-hash path)))
(make-derivation-input hash sub-drvs)))) (make-derivation-input hash sub-drvs))))
inputs)) inputs))
(drv (make-derivation outputs (drv (make-derivation outputs
(sort (coalesce-duplicate-inputs inputs) (sort (coalesce-duplicate-inputs inputs)
@ -661,7 +661,7 @@ derivation at FILE."
;; the SHA256 port's `write' method gets called for every single ;; the SHA256 port's `write' method gets called for every single
;; character. ;; character.
(sha256 (sha256
(string->utf8 (derivation->string drv))))))))) (string->utf8 (derivation->string drv))))))))
(define (store-path type hash name) ; makeStorePath (define (store-path type hash name) ; makeStorePath
"Return the store path for NAME/HASH/TYPE." "Return the store path for NAME/HASH/TYPE."
@ -915,18 +915,17 @@ recursively."
(define rewritten-input (define rewritten-input
;; Rewrite the given input according to MAPPING, and return an input ;; Rewrite the given input according to MAPPING, and return an input
;; in the format used in 'derivation' calls. ;; in the format used in 'derivation' calls.
(memoize (mlambda (input loop)
(lambda (input loop) (match input
(match input (($ <derivation-input> path (sub-drvs ...))
(($ <derivation-input> path (sub-drvs ...)) (match (vhash-assoc path mapping)
(match (vhash-assoc path mapping) ((_ . (? derivation? replacement))
((_ . (? derivation? replacement)) (cons replacement sub-drvs))
(cons replacement sub-drvs)) ((_ . replacement)
((_ . replacement) (list replacement))
(list replacement)) (#f
(#f (let* ((drv (loop (call-with-input-file path read-derivation))))
(let* ((drv (loop (call-with-input-file path read-derivation)))) (cons drv sub-drvs))))))))
(cons drv sub-drvs)))))))))
(let loop ((drv drv)) (let loop ((drv drv))
(let* ((inputs (map (cut rewritten-input <> loop) (let* ((inputs (map (cut rewritten-input <> loop)
@ -1057,13 +1056,13 @@ system, imported, and appears under FINAL-PATH in the resulting store path."
(define search-path* (define search-path*
;; A memoizing version of 'search-path' so 'imported-modules' does not end ;; A memoizing version of 'search-path' so 'imported-modules' does not end
;; up looking for the same files over and over again. ;; up looking for the same files over and over again.
(memoize (lambda (path file) (mlambda (path file)
"Search for FILE in PATH and memoize the result. Raise a "Search for FILE in PATH and memoize the result. Raise a
'&file-search-error' condition if it could not be found." '&file-search-error' condition if it could not be found."
(or (search-path path file) (or (search-path path file)
(raise (condition (raise (condition
(&file-search-error (file file) (&file-search-error (file file)
(path path)))))))) (path path)))))))
(define (module->source-file-name module) (define (module->source-file-name module)
"Return the file name corresponding to MODULE, a Guile module name (a list "Return the file name corresponding to MODULE, a Guile module name (a list

View File

@ -4,6 +4,7 @@
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -35,6 +36,7 @@
#:export (%mirrors #:export (%mirrors
url-fetch url-fetch
url-fetch/tarbomb url-fetch/tarbomb
url-fetch/zipbomb
download-to-store)) download-to-store))
;;; Commentary: ;;; Commentary:
@ -86,6 +88,7 @@
"http://ftp.belnet.be/ftp.gnome.org/" "http://ftp.belnet.be/ftp.gnome.org/"
"http://ftp.linux.org.uk/mirrors/ftp.gnome.org/" "http://ftp.linux.org.uk/mirrors/ftp.gnome.org/"
"http://ftp.gnome.org/pub/GNOME/" "http://ftp.gnome.org/pub/GNOME/"
"https://download.gnome.org/"
"http://mirror.yandex.ru/mirrors/ftp.gnome.org/") "http://mirror.yandex.ru/mirrors/ftp.gnome.org/")
(hackage (hackage
"http://hackage.haskell.org/") "http://hackage.haskell.org/")
@ -485,17 +488,24 @@ in the store."
(guile (default-guile))) (guile (default-guile)))
"Similar to 'url-fetch' but unpack the file from URL in a directory of its "Similar to 'url-fetch' but unpack the file from URL in a directory of its
own. This helper makes it easier to deal with \"tar bombs\"." own. This helper makes it easier to deal with \"tar bombs\"."
(define file-name
(match url
((head _ ...)
(basename head))
(_
(basename url))))
(define gzip (define gzip
(module-ref (resolve-interface '(gnu packages compression)) 'gzip)) (module-ref (resolve-interface '(gnu packages compression)) 'gzip))
(define tar (define tar
(module-ref (resolve-interface '(gnu packages base)) 'tar)) (module-ref (resolve-interface '(gnu packages base)) 'tar))
(mlet %store-monad ((drv (url-fetch url hash-algo hash (mlet %store-monad ((drv (url-fetch url hash-algo hash
(string-append "tarbomb-" name) (string-append "tarbomb-"
(or name file-name))
#:system system #:system system
#:guile guile))) #:guile guile)))
;; Take the tar bomb, and simply unpack it as a directory. ;; Take the tar bomb, and simply unpack it as a directory.
(gexp->derivation name (gexp->derivation (or name file-name)
#~(begin #~(begin
(mkdir #$output) (mkdir #$output)
(setenv "PATH" (string-append #$gzip "/bin")) (setenv "PATH" (string-append #$gzip "/bin"))
@ -504,6 +514,35 @@ own. This helper makes it easier to deal with \"tar bombs\"."
"xf" #$drv))) "xf" #$drv)))
#:local-build? #t))) #:local-build? #t)))
(define* (url-fetch/zipbomb url hash-algo hash
#:optional name
#:key (system (%current-system))
(guile (default-guile)))
"Similar to 'url-fetch' but unpack the zip file at URL in a directory of its
own. This helper makes it easier to deal with \"zip bombs\"."
(define file-name
(match url
((head _ ...)
(basename head))
(_
(basename url))))
(define unzip
(module-ref (resolve-interface '(gnu packages zip)) 'unzip))
(mlet %store-monad ((drv (url-fetch url hash-algo hash
(string-append "zipbomb-"
(or name file-name))
#:system system
#:guile guile)))
;; Take the zip bomb, and simply unpack it as a directory.
(gexp->derivation (or name file-name)
#~(begin
(mkdir #$output)
(chdir #$output)
(zero? (system* (string-append #$unzip "/bin/unzip")
#$drv)))
#:local-build? #t)))
(define* (download-to-store store url #:optional (name (basename url)) (define* (download-to-store store url #:optional (name (basename url))
#:key (log (current-error-port)) recursive? #:key (log (current-error-port)) recursive?
(verify-certificate? #t)) (verify-certificate? #t))

View File

@ -30,7 +30,7 @@
#:use-module (guix http-client) #:use-module (guix http-client)
#:use-module (guix ftp-client) #:use-module (guix ftp-client)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix combinators) #:use-module (guix memoization)
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix upstream) #:use-module (guix upstream)
#:use-module (guix packages) #:use-module (guix packages)
@ -165,43 +165,48 @@ found."
(official-gnu-packages))) (official-gnu-packages)))
(define gnu-package? (define gnu-package?
(memoize (let ((official-gnu-packages (memoize official-gnu-packages)))
(let ((official-gnu-packages (memoize official-gnu-packages))) (mlambdaq (package)
(lambda (package) "Return true if PACKAGE is a GNU package. This procedure may access the
"Return true if PACKAGE is a GNU package. This procedure may access the
network to check in GNU's database." network to check in GNU's database."
(define (mirror-type url) (define (mirror-type url)
(let ((uri (string->uri url))) (let ((uri (string->uri url)))
(and (eq? (uri-scheme uri) 'mirror) (and (eq? (uri-scheme uri) 'mirror)
(cond (cond
((member (uri-host uri) ((member (uri-host uri)
'("gnu" "gnupg" "gcc" "gnome")) '("gnu" "gnupg" "gcc" "gnome"))
;; Definitely GNU. ;; Definitely GNU.
'gnu) 'gnu)
((equal? (uri-host uri) "cran") ((equal? (uri-host uri) "cran")
;; Possibly GNU: mirror://cran could be either GNU R itself ;; Possibly GNU: mirror://cran could be either GNU R itself
;; or a non-GNU package. ;; or a non-GNU package.
#f) #f)
(else (else
;; Definitely non-GNU. ;; Definitely non-GNU.
'non-gnu))))) 'non-gnu)))))
(define (gnu-home-page? package) (define (gnu-home-page? package)
(and=> (package-home-page package) (letrec-syntax ((>> (syntax-rules ()
(lambda (url) ((_ value proc)
(and=> (uri-host (string->uri url)) (and=> value proc))
(lambda (host) ((_ value proc rest ...)
(member host '("www.gnu.org" "gnu.org"))))))) (and=> value
(lambda (next)
(>> (proc next) rest ...)))))))
(>> package package-home-page
string->uri uri-host
(lambda (host)
(member host '("www.gnu.org" "gnu.org"))))))
(or (gnu-home-page? package) (or (gnu-home-page? package)
(let ((url (and=> (package-source package) origin-uri)) (let ((url (and=> (package-source package) origin-uri))
(name (package-name package))) (name (package-upstream-name package)))
(case (and (string? url) (mirror-type url)) (case (and (string? url) (mirror-type url))
((gnu) #t) ((gnu) #t)
((non-gnu) #f) ((non-gnu) #f)
(else (else
(and (member name (map gnu-package-name (official-gnu-packages))) (and (member name (map gnu-package-name (official-gnu-packages)))
#t))))))))) #t))))))))
;;; ;;;
@ -210,10 +215,11 @@ network to check in GNU's database."
(define (ftp-server/directory package) (define (ftp-server/directory package)
"Return the FTP server and directory where PACKAGE's tarball are stored." "Return the FTP server and directory where PACKAGE's tarball are stored."
(values (or (assoc-ref (package-properties package) 'ftp-server) (let ((name (package-upstream-name package)))
"ftp.gnu.org") (values (or (assoc-ref (package-properties package) 'ftp-server)
(or (assoc-ref (package-properties package) 'ftp-directory) "ftp.gnu.org")
(string-append "/gnu/" (package-name package))))) (or (assoc-ref (package-properties package) 'ftp-directory)
(string-append "/gnu/" name)))))
(define (sans-extension tarball) (define (sans-extension tarball)
"Return TARBALL without its .tar.* or .zip extension." "Return TARBALL without its .tar.* or .zip extension."
@ -423,11 +429,9 @@ hosted on ftp.gnu.org, or not under that name (this is the case for
\"emacs-auctex\", for instance.)" \"emacs-auctex\", for instance.)"
(let-values (((server directory) (let-values (((server directory)
(ftp-server/directory package))) (ftp-server/directory package)))
(let ((name (or (assoc-ref (package-properties package) 'upstream-name) (false-if-ftp-error (latest-release (package-upstream-name package)
(package-name package)))) #:server server
(false-if-ftp-error (latest-release name #:directory directory))))
#:server server
#:directory directory)))))
(define %package-name-rx (define %package-name-rx
;; Regexp for a package name, e.g., "foo-X.Y". Since TeXmacs uses ;; Regexp for a package name, e.g., "foo-X.Y". Since TeXmacs uses
@ -444,8 +448,10 @@ hosted on ftp.gnu.org, or not under that name (this is the case for
(define (pure-gnu-package? package) (define (pure-gnu-package? package)
"Return true if PACKAGE is a non-Emacs and non-GNOME GNU package. This "Return true if PACKAGE is a non-Emacs and non-GNOME GNU package. This
excludes AucTeX, for instance, whose releases are now uploaded to excludes AucTeX, for instance, whose releases are now uploaded to
elpa.gnu.org, and all the GNOME packages." elpa.gnu.org, and all the GNOME packages; EMMS is included though, because its
(and (not (string-prefix? "emacs-" (package-name package))) releases are on gnu.org."
(and (or (not (string-prefix? "emacs-" (package-name package)))
(gnu-hosted? package))
(not (gnome-package? package)) (not (gnome-package? package))
(gnu-package? package))) (gnu-package? package)))
@ -467,6 +473,9 @@ source URLs starts with PREFIX."
(_ #f))) (_ #f)))
(_ #f)))) (_ #f))))
(define gnu-hosted?
(url-prefix-predicate "mirror://gnu/"))
(define gnome-package? (define gnome-package?
(url-prefix-predicate "mirror://gnome/")) (url-prefix-predicate "mirror://gnome/"))
@ -491,8 +500,7 @@ source URLs starts with PREFIX."
(define upstream-name (define upstream-name
;; Some packages like "NetworkManager" have camel-case names. ;; Some packages like "NetworkManager" have camel-case names.
(or (assoc-ref (package-properties package) 'upstream-name) (package-upstream-name package))
(package-name package)))
(false-if-ftp-error (false-if-ftp-error
(latest-ftp-release upstream-name (latest-ftp-release upstream-name
@ -516,8 +524,7 @@ source URLs starts with PREFIX."
(let ((uri (string->uri (origin-uri (package-source package))))) (let ((uri (string->uri (origin-uri (package-source package)))))
(false-if-ftp-error (false-if-ftp-error
(latest-ftp-release (latest-ftp-release
(or (assoc-ref (package-properties package) 'upstream-name) (package-upstream-name package)
(package-name package))
#:server "mirrors.mit.edu" #:server "mirrors.mit.edu"
#:directory #:directory
(string-append "/kde" (dirname (dirname (uri-path uri)))) (string-append "/kde" (dirname (dirname (uri-path uri))))

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -27,7 +27,7 @@
#:use-module (srfi srfi-41) #:use-module (srfi srfi-41)
#:use-module (ice-9 receive) #:use-module (ice-9 receive)
#:use-module (web uri) #:use-module (web uri)
#:use-module (guix combinators) #:use-module (guix memoization)
#:use-module (guix http-client) #:use-module (guix http-client)
#:use-module (guix hash) #:use-module (guix hash)
#:use-module (guix store) #:use-module (guix store)

View File

@ -1,6 +1,6 @@
;;; 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 © 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -35,7 +35,6 @@
#:use-module (guix base32) #:use-module (guix base32)
#:use-module (guix upstream) #:use-module (guix upstream)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module ((guix combinators) #:select (memoize))
#:use-module ((guix utils) #:select (call-with-temporary-output-file)) #:use-module ((guix utils) #:select (call-with-temporary-output-file))
#:export (elpa->guix-package #:export (elpa->guix-package
%elpa-updater)) %elpa-updater))

View File

@ -49,7 +49,8 @@
"Return the extension of the archive e.g. '.tar.gz' given a URL, or "Return the extension of the archive e.g. '.tar.gz' given a URL, or
false if none is recognized" false if none is recognized"
(find (lambda (x) (string-suffix? x url)) (find (lambda (x) (string-suffix? x url))
(list ".tar.gz" ".tar.bz2" ".tar.xz" ".zip" ".tar" ".tgz" ".love"))) (list ".tar.gz" ".tar.bz2" ".tar.xz" ".zip" ".tar"
".tgz" ".tbz" ".love")))
(define (updated-github-url old-package new-version) (define (updated-github-url old-package new-version)
;; Return a url for the OLD-PACKAGE with NEW-VERSION. If no source url in ;; Return a url for the OLD-PACKAGE with NEW-VERSION. If no source url in
@ -57,7 +58,7 @@ false if none is recognized"
(define (updated-url url) (define (updated-url url)
(if (string-prefix? "https://github.com/" url) (if (string-prefix? "https://github.com/" url)
(let ((ext (find-extension url)) (let ((ext (or (find-extension url) ""))
(name (package-name old-package)) (name (package-name old-package))
(version (package-version old-package)) (version (package-version old-package))
(prefix (string-append "https://github.com/" (prefix (string-append "https://github.com/"

View File

@ -227,10 +227,8 @@ name/variable pairs describing the required inputs of this package."
(sort (sort
(map (lambda (input) (map (lambda (input)
(list input (list 'unquote (string->symbol input)))) (list input (list 'unquote (string->symbol input))))
(append '("python-setuptools") (remove (cut string=? "python-argparse" <>)
;; Argparse has been part of Python since 2.7. (guess-requirements source-url wheel-url tarball)))
(remove (cut string=? "python-argparse" <>)
(guess-requirements source-url wheel-url tarball))))
(lambda args (lambda args
(match args (match args
(((a _ ...) (b _ ...)) (((a _ ...) (b _ ...))

114
guix/memoization.scm Normal file
View File

@ -0,0 +1,114 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix memoization)
#:export (memoize
mlambda
mlambdaq))
(define-syntax-rule (call/mv thunk)
(call-with-values thunk list))
(define-syntax-rule (return/mv lst)
(apply values lst))
(define-syntax-rule (call/1 thunk)
(thunk))
(define-syntax-rule (return/1 value)
value)
(define %nothing ;nothingness
(list 'this 'is 'nothing))
(define-syntax define-cache-procedure
(syntax-rules ()
"Define a procedure NAME that implements a cache using HASH-REF and
HASH-SET!. Use CALL to invoke the thunk and RETURN to return its value; CALL
and RETURN are used to distinguish between multiple-value and single-value
returns."
((_ name hash-ref hash-set! call return)
(define (name cache key thunk)
"Cache the result of THUNK under KEY in CACHE, or return the
already-cached result."
(let ((results (hash-ref cache key %nothing)))
(if (eq? results %nothing)
(let ((results (call thunk)))
(hash-set! cache key results)
(return results))
(return results)))))
((_ name hash-ref hash-set!)
(define-cache-procedure name hash-ref hash-set!
call/mv return/mv))))
(define-cache-procedure cached/mv hash-ref hash-set!)
(define-cache-procedure cachedq/mv hashq-ref hashq-set!)
(define-cache-procedure cached hash-ref hash-set! call/1 return/1)
(define-cache-procedure cachedq hashq-ref hashq-set! call/1 return/1)
(define (memoize proc)
"Return a memoizing version of PROC.
This is a generic version of 'mlambda' what works regardless of the arity of
'proc'. It is more expensive since the argument list is always allocated, and
the result is returned via (apply values results)."
(let ((cache (make-hash-table)))
(lambda args
(cached/mv cache args
(lambda ()
(apply proc args))))))
(define-syntax %mlambda
(syntax-rules ()
"Return a memoizing lambda. This is restricted to procedures that return
exactly one value."
((_ cached () body ...)
;; The zero-argument case is equivalent to a promise.
(let ((result #f) (cached? #f))
(lambda ()
(unless cached?
(set! result (begin body ...))
(set! cached? #t))
result)))
;; Optimize the fixed-arity case such that there's no argument list
;; allocated. XXX: We can't really avoid the closure allocation since
;; Guile 2.0's compiler will always keep it.
((_ cached (arg) body ...) ;one argument
(let ((cache (make-hash-table))
(proc (lambda (arg) body ...)))
(lambda (arg)
(cached cache arg (lambda () (proc arg))))))
((_ _ (args ...) body ...) ;two or more arguments
(let ((cache (make-hash-table))
(proc (lambda (args ...) body ...)))
(lambda (args ...)
;; XXX: Always use 'cached', which uses 'equal?', to compare the
;; argument lists.
(cached cache (list args ...)
(lambda ()
(proc args ...))))))))
(define-syntax-rule (mlambda formals body ...)
"Define a memoizing lambda. The lambda's arguments are compared with
'equal?', and BODY is expected to yield a single return value."
(%mlambda cached formals body ...))
(define-syntax-rule (mlambdaq formals body ...)
"Define a memoizing lambda. If FORMALS lists a single argument, it is
compared using 'eq?'; otherwise, the argument list is compared using 'equal?'.
BODY is expected to yield a single return value."
(%mlambda cachedq formals body ...))

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