Browse Source

Merge branch 'master' into core-updates

wip-loongson2f
Ludovic Courtès 6 years ago
parent
commit
01497dfe6c
No known key found for this signature in database GPG Key ID: 90B11993D9AEBB5
  1. 1
      Makefile.am
  2. 15
      build-aux/hydra/evaluate.scm
  3. 37
      build-aux/hydra/gnu-system.scm
  4. 24
      build-aux/run-system-tests.scm
  5. 12
      build-aux/test-env.in
  6. 140
      doc/guix.texi
  7. 6
      gnu/build/vm.scm
  8. 11
      gnu/local.mk
  9. 9
      gnu/packages.scm
  10. 27
      gnu/packages/admin.scm
  11. 4
      gnu/packages/algebra.scm
  12. 114
      gnu/packages/assembly.scm
  13. 59
      gnu/packages/bioinformatics.scm
  14. 59
      gnu/packages/crypto.scm
  15. 6
      gnu/packages/dav.scm
  16. 4
      gnu/packages/debug.scm
  17. 25
      gnu/packages/dictionaries.scm
  18. 207
      gnu/packages/emacs.scm
  19. 4
      gnu/packages/enlightenment.scm
  20. 179
      gnu/packages/erlang.scm
  21. 27
      gnu/packages/game-development.scm
  22. 96
      gnu/packages/games.scm
  23. 8
      gnu/packages/gnome.scm
  24. 2
      gnu/packages/gnuzilla.scm
  25. 2
      gnu/packages/gstreamer.scm
  26. 119
      gnu/packages/guile.scm
  27. 647
      gnu/packages/haskell.scm
  28. 4
      gnu/packages/imagemagick.scm
  29. 8
      gnu/packages/java.scm
  30. 2
      gnu/packages/kodi.scm
  31. 44
      gnu/packages/lightning.scm
  32. 12
      gnu/packages/linux.scm
  33. 12
      gnu/packages/music.scm
  34. 76
      gnu/packages/package-management.scm
  35. 37
      gnu/packages/password-utils.scm
  36. 46
      gnu/packages/patches/beets-image-test-failure.patch
  37. 4
      gnu/packages/patches/hydra-automake-1.15.patch
  38. 20
      gnu/packages/patches/nasm-no-ps-pdf.patch
  39. 13
      gnu/packages/patches/ruby-puma-ignore-broken-test.patch
  40. 5
      gnu/packages/perl.scm
  41. 406
      gnu/packages/python.scm
  42. 64
      gnu/packages/ruby.scm
  43. 4
      gnu/packages/scheme.scm
  44. 4
      gnu/packages/screen.scm
  45. 53
      gnu/packages/serialization.scm
  46. 44
      gnu/packages/statistics.scm
  47. 20
      gnu/packages/tex.scm
  48. 6
      gnu/packages/version-control.scm
  49. 8
      gnu/packages/video.scm
  50. 5
      gnu/packages/web.scm
  51. 357
      gnu/packages/xorg.scm
  52. 55
      gnu/packages/yasm.scm
  53. 28
      gnu/services.scm
  54. 115
      gnu/services/mcron.scm
  55. 3
      gnu/system/install.scm
  56. 92
      gnu/tests.scm
  57. 297
      gnu/tests/base.scm
  58. 212
      gnu/tests/install.scm
  59. 2
      guix/build-system/python.scm
  60. 62
      guix/build/bournish.scm
  61. 11
      guix/build/emacs-build-system.scm
  62. 4
      guix/config.scm.in
  63. 6
      guix/gexp.scm
  64. 6
      guix/import/pypi.scm
  65. 28
      guix/scripts/substitute.scm
  66. 31
      guix/store.scm
  67. 36
      guix/utils.scm
  68. 2
      nix/libstore/globals.cc
  69. 2
      nix/local.mk
  70. 2170
      po/guix/fr.po
  71. 17
      tests/containers.scm
  72. 2
      tests/packages.scm

1
Makefile.am

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

15
build-aux/hydra/evaluate.scm

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

37
build-aux/hydra/gnu-system.scm

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

24
build-aux/run-system-tests.scm

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

12
build-aux/test-env.in

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

140
doc/guix.texi

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

6
gnu/build/vm.scm

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

11
gnu/local.mk

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

9
gnu/packages.scm

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

27
gnu/packages/admin.scm

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

4
gnu/packages/algebra.scm

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

114
gnu/packages/assembly.scm

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

59
gnu/packages/bioinformatics.scm

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

59
gnu/packages/crypto.scm

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

6
gnu/packages/dav.scm

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

4
gnu/packages/debug.scm

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

25
gnu/packages/dictionaries.scm

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

207
gnu/packages/emacs.scm

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

4
gnu/packages/enlightenment.scm

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

179
gnu/packages/erlang.scm

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

27
gnu/packages/game-development.scm

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

96
gnu/packages/games.scm

@ -2396,3 +2396,99 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
your way through an underground cave system in search of the Grue. Can you
capture it and get out alive?")
(license license:agpl3+)))
(define-public warzone2100
(package
(name "warzone2100")
(version "3.1.5")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/" name
"/releases/" version "/" name "-" version
".tar.xz"))
(sha256
(base32
"0hm49i2knvvg3wlnryv7h4m84s3qa7jfyym5yy6365sx8wzcrai1"))))
(build-system gnu-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(add-after 'set-paths 'set-sdl-paths
(lambda* (#:key inputs #:allow-other-keys)
(setenv "CPATH"
(string-append (assoc-ref inputs "sdl-union")
"/include/SDL"))
#t)))))
(native-inputs `(("pkg-config" ,pkg-config)
("unzip" ,unzip)
("zip" ,zip)))
(inputs `(("fontconfig" ,fontconfig)
("freetype" ,freetype)
("fribidi" ,fribidi)
("glew" ,glew)