diff options
author | Marius Bakke <mbakke@fastmail.com> | 2018-02-24 19:04:13 +0100 |
---|---|---|
committer | Marius Bakke <mbakke@fastmail.com> | 2018-02-24 19:04:13 +0100 |
commit | 5f9b018aa8334d5a38ac83ebe040ba36ce511305 (patch) | |
tree | 1e67a1fd0444e6073f7d33091322528ccc8c3849 | |
parent | fb6550058e167c25bbcbe0ebcf51590f83506f23 (diff) | |
parent | f09cb93e3a2310f7726cb98fa5679c1a8483c39f (diff) | |
download | guix-5f9b018aa8334d5a38ac83ebe040ba36ce511305.tar.gz |
Merge branch 'master' into staging
68 files changed, 3058 insertions, 1969 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 7ed39ff132..691164502b 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -30,7 +30,7 @@ Copyright @copyright{} 2016, 2017 ng0@* Copyright @copyright{} 2016, 2017 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@* Copyright @copyright{} 2016 Alex ter Weele@* -Copyright @copyright{} 2017 Clément Lassieur@* +Copyright @copyright{} 2017, 2018 Clément Lassieur@* Copyright @copyright{} 2017 Mathieu Othacehe@* Copyright @copyright{} 2017 Federico Beffa@* Copyright @copyright{} 2017 Carlo Zancanaro@* @@ -7231,6 +7231,15 @@ As an example, @var{file} might contain a definition like this @verbatiminclude environment-gdb.scm @end example +@item --manifest=@var{file} +@itemx -m @var{file} +Create an environment for the packages contained in the manifest object +returned by the Scheme code in @var{file}. + +This is similar to the same-named option in @command{guix package} +(@pxref{profile-manifest, @option{--manifest}}) and uses the same +manifest files. + @item --ad-hoc Include all specified packages in the resulting environment, as if an @i{ad hoc} package were defined with them as inputs. This option is @@ -11263,6 +11272,9 @@ The XAuth package to use. The Shepherd package used when invoking @command{halt} and @command{reboot}. +@item @code{sessreg} (default: @code{sessreg}) +The sessreg package used in order to register the session. + @item @code{slim} (default: @code{slim}) The SLiM package to use. @end table @@ -15721,14 +15733,48 @@ signature. The certbot service automates this process: the initial key generation, the initial certification request to the Let's Encrypt service, the web server challenge/response integration, writing the -certificate to disk, and the automated periodic renewals. +certificate to disk, the automated periodic renewals, and the deployment +tasks associated with the renewal (e.g. reloading services, copying keys +with different permissions). + +Certbot is run twice a day, at a random minute within the hour. It +won't do anything until your certificates are due for renewal or +revoked, but running it regularly would give your service a chance of +staying online in case a Let's Encrypt-initiated revocation happened for +some reason. + +By using this service, you agree to the ACME Subscriber Agreement, which +can be found there: +@url{https://acme-v01.api.letsencrypt.org/directory}. @defvr {Scheme Variable} certbot-service-type -A service type for the @code{certbot} Let's Encrypt client. +A service type for the @code{certbot} Let's Encrypt client. Its value +must be a @code{certbot-configuration} record as in this example: + +@example +(define %nginx-deploy-hook + (program-file + "nginx-deploy-hook" + #~(let ((pid (call-with-input-file "/var/run/nginx/pid" read))) + (kill pid SIGHUP)))) + +(service certbot-service-type + (certbot-configuration + (email "foo@@example.net") + (certificates + (list + (certificate-configuration + (domains '("example.net" "www.example.net")) + (deploy-hook %nginx-deploy-hook)) + (certificate-configuration + (domains '("bar.example.net"))))))) +@end example + +See below for details about @code{certbot-configuration}. @end defvr @deftp {Data Type} certbot-configuration -Data type representing the configuration of the @code{certbot} serice. +Data type representing the configuration of the @code{certbot} service. This type has the following parameters: @table @asis @@ -15739,16 +15785,24 @@ The certbot package to use. The directory from which to serve the Let's Encrypt challenge/response files. -@item @code{hosts} (default: @code{()}) -A list of hosts for which to generate certificates and request -signatures. +@item @code{certificates} (default: @code{()}) +A list of @code{certificates-configuration}s for which to generate +certificates and request signatures. Each certificate has a @code{name} +and several @code{domains}. + +@item @code{email} +Mandatory email used for registration, recovery contact, and important +account notifications. + +@item @code{rsa-key-size} (default: @code{2048}) +Size of the RSA key. @item @code{default-location} (default: @i{see below}) The default @code{nginx-location-configuration}. Because @code{certbot} needs to be able to serve challenges and responses, it needs to be able to run a web server. It does so by extending the @code{nginx} web service with an @code{nginx-server-configuration} listening on the -@var{hosts} on port 80, and which has a +@var{domains} on port 80, and which has a @code{nginx-location-configuration} for the @code{/.well-known/} URI path subspace used by Let's Encrypt. @xref{Web Services}, for more on these nginx configuration data types. @@ -15758,19 +15812,44 @@ Requests to other URL paths will be matched by the @code{nginx-server-configuration}s. By default, the @code{default-location} will issue a redirect from -@code{http://@var{host}/...} to @code{https://@var{host}/...}, leaving +@code{http://@var{domain}/...} to @code{https://@var{domain}/...}, leaving you to define what to serve on your site via @code{https}. Pass @code{#f} to not issue a default location. @end table @end deftp -The public key and its signatures will be written to -@code{/etc/letsencrypt/live/@var{host}/fullchain.pem}, for each -@var{host} in the configuration. The private key is written to -@code{/etc/letsencrypt/live/@var{host}/privkey.pem}. +@deftp {Data Type} certificate-configuration +Data type representing the configuration of a certificate. +This type has the following parameters: + +@table @asis +@item @code{name} (default: @i{see below}) +This name is used by Certbot for housekeeping and in file paths; it +doesn't affect the content of the certificate itself. To see +certificate names, run @code{certbot certificates}. + +Its default is the first provided domain. + +@item @code{domains} (default: @code{()}) +The first domain provided will be the subject CN of the certificate, and +all domains will be Subject Alternative Names on the certificate. + +@item @code{deploy-hook} (default: @code{#f}) +Command to be run in a shell once for each successfully issued +certificate. For this command, the shell variable +@code{$RENEWED_LINEAGE} will point to the config live subdirectory (for +example, @samp{"/etc/letsencrypt/live/example.com"}) containing the new +certificates and keys; the shell variable @code{$RENEWED_DOMAINS} will +contain a space-delimited list of renewed certificate domains (for +example, @samp{"example.com www.example.com"}. +@end table +@end deftp +For each @code{certificate-configuration}, the certificate is saved to +@code{/etc/letsencrypt/live/@var{name}/fullchain.pem} and the key is +saved to @code{/etc/letsencrypt/live/@var{name}/privkey.pem}. @node DNS Services @subsubsection DNS Services @cindex DNS (domain name system) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index 75cff68d8b..933492a338 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -2,6 +2,7 @@ # GNU Guix --- Functional package management for GNU # Copyright © 2017 sharlatan <sharlatanus@gmail.com> # Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> +# Copyright © 2018 Efraim Flashner <efraim@flashner.co.il> # # This file is part of GNU Guix. # @@ -153,6 +154,9 @@ chk_sys_arch() x86_64 | x86-64 | x64 | amd64) local arch=x86_64 ;; + aarch64) + local arch=aarch64 + ;; *) _err "${ERR}Unsupported CPU type: ${arch}" exit 1 diff --git a/gnu/local.mk b/gnu/local.mk index ce110516be..49aea157a1 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -13,7 +13,7 @@ # Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> # Copyright © 2016, 2017 Jan Nieuwenhuizen <janneke@gnu.org> # Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> -# Copyright © 2017 Clément Lassieur <clement@lassieur.org> +# Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org> # Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> # Copyright © 2017 Gábor Boskovits <boskovits@gmail.com> # Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net> @@ -142,6 +142,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/elixir.scm \ %D%/packages/embedded.scm \ %D%/packages/emacs.scm \ + %D%/packages/emulators.scm \ %D%/packages/enchant.scm \ %D%/packages/engineering.scm \ %D%/packages/enlightenment.scm \ @@ -248,6 +249,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/libffcall.scm \ %D%/packages/libffi.scm \ %D%/packages/libftdi.scm \ + %D%/packages/license.scm \ %D%/packages/calendar.scm \ %D%/packages/libidn.scm \ %D%/packages/libphidget.scm \ @@ -763,6 +765,7 @@ dist_patch_DATA = \ %D%/packages/patches/heimdal-CVE-2017-11103.patch \ %D%/packages/patches/hmmer-remove-cpu-specificity.patch \ %D%/packages/patches/higan-remove-march-native-flag.patch \ + %D%/packages/patches/htop-fix-process-tree.patch \ %D%/packages/patches/hubbub-sort-entities.patch \ %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \ %D%/packages/patches/hwloc-tests-without-sysfs.patch \ @@ -801,9 +804,8 @@ dist_patch_DATA = \ %D%/packages/patches/kobodeluxe-graphics-window-signed-char.patch \ %D%/packages/patches/laby-make-install.patch \ %D%/packages/patches/lcms-CVE-2016-10165.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/ldc-bootstrap-disable-tests.patch \ + %D%/packages/patches/ldc-1.7.0-disable-phobos-tests.patch \ %D%/packages/patches/ledger-fix-uninitialized.patch \ %D%/packages/patches/ledger-revert-boost-python-fix.patch \ %D%/packages/patches/liba52-enable-pic.patch \ @@ -948,7 +950,6 @@ dist_patch_DATA = \ %D%/packages/patches/openssl-runpath.patch \ %D%/packages/patches/openssl-1.1.0-c-rehash-in.patch \ %D%/packages/patches/openssl-c-rehash-in.patch \ - %D%/packages/patches/optipng-CVE-2017-1000229.patch \ %D%/packages/patches/orpheus-cast-errors-and-includes.patch \ %D%/packages/patches/osip-CVE-2017-7853.patch \ %D%/packages/patches/ots-no-include-missing-file.patch \ @@ -956,6 +957,7 @@ dist_patch_DATA = \ %D%/packages/patches/p7zip-CVE-2016-9296.patch \ %D%/packages/patches/p7zip-CVE-2017-17969.patch \ %D%/packages/patches/p7zip-remove-unused-code.patch \ + %D%/packages/patches/password-store-gnupg-compat.patch \ %D%/packages/patches/patchelf-page-size.patch \ %D%/packages/patches/patchelf-rework-for-arm.patch \ %D%/packages/patches/patchutils-xfail-gendiff-tests.patch \ @@ -1044,8 +1046,6 @@ dist_patch_DATA = \ %D%/packages/patches/python-unittest2-python3-compat.patch \ %D%/packages/patches/python-unittest2-remove-argparse.patch \ %D%/packages/patches/python-waitress-fix-tests.patch \ - %D%/packages/patches/qemu-CVE-2017-15038.patch \ - %D%/packages/patches/qemu-CVE-2017-15289.patch \ %D%/packages/patches/qt4-ldflags.patch \ %D%/packages/patches/qtbase-use-TZDIR.patch \ %D%/packages/patches/qtscript-disable-tests.patch \ @@ -1141,6 +1141,8 @@ dist_patch_DATA = \ %D%/packages/patches/vsearch-unbundle-cityhash.patch \ %D%/packages/patches/vte-CVE-2012-2738-pt1.patch \ %D%/packages/patches/vte-CVE-2012-2738-pt2.patch \ + %D%/packages/patches/wavpack-CVE-2018-7253.patch \ + %D%/packages/patches/wavpack-CVE-2018-7254.patch \ %D%/packages/patches/weechat-python.patch \ %D%/packages/patches/wicd-bitrate-none-fix.patch \ %D%/packages/patches/wicd-get-selected-profile-fix.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 6121402048..cf9524eb5f 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -269,7 +269,8 @@ graphs and can export its output to different formats.") version "/htop-" version ".tar.gz")) (sha256 (base32 - "0j07z0xm2gj1vzvbgh4323k4db9mr7drd7gw95mmpqi61ncvwq1j")))) + "0j07z0xm2gj1vzvbgh4323k4db9mr7drd7gw95mmpqi61ncvwq1j")) + (patches (search-patches "htop-fix-process-tree.patch")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses))) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 47179aea92..b1a15ed34d 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -2377,6 +2377,8 @@ stretching and pitch scaling of audio. This package contains the library.") (method url-fetch) (uri (string-append "http://www.wavpack.com/" name "-" version ".tar.bz2")) + (patches (search-patches "wavpack-CVE-2018-7253.patch" + "wavpack-CVE-2018-7254.patch")) (sha256 (base32 "0i19c6krc0p9krwrqy9s5xahaafigqzxcn31piidmlaqadyn4f8r")))) diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm index ae7279f286..77dcd78331 100644 --- a/gnu/packages/benchmark.scm +++ b/gnu/packages/benchmark.scm @@ -34,7 +34,7 @@ (define-public fio (package (name "fio") - (version "3.4") + (version "3.5") (source (origin (method url-fetch) (uri (string-append @@ -42,7 +42,7 @@ "fio-" version ".tar.bz2")) (sha256 (base32 - "01dqvg5mgb4fh1jqqmi179k2rb517p4h4sr3mhlnd0alk1x12w8a")))) + "1rrzcrn07db4pffvi2q0d0k884bwcapx6r1rfv4yx9066snvx240")))) (build-system gnu-build-system) (arguments '(#:test-target "test" diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 820bd84d66..c427a6d036 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -8111,7 +8111,7 @@ throughput genetic sequencing data sets using regression methods.") (define-public r-qtl (package (name "r-qtl") - (version "1.42-7") + (version "1.42-8") (source (origin (method url-fetch) @@ -8119,7 +8119,7 @@ throughput genetic sequencing data sets using regression methods.") version ".tar.gz")) (sha256 (base32 - "0hxij8v4my5x4pf5fn5327g7m3n7vjkbzrl580vcmp81n3n3nmrx")))) + "1l528dwvfpdlr05imrrm4rq32axp6hld9nqm6mm43kn5n7z2f5k6")))) (build-system r-build-system) (home-page "http://rqtl.org/") (synopsis "R package for analyzing QTL experiments in genetics") diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 59eb22f242..9ea8748a5b 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -71,6 +71,22 @@ (base32 "0p2vhnc18cnbmb39vq4m7hzv4mhnm2l0a2s7gx3ar277fwng3hys")))) +;; The GRUB test suite fails with later versions of Qemu, so we +;; keep it at 2.10 for now. See +;; <https://lists.gnu.org/archive/html/bug-grub/2018-02/msg00004.html>. +;; TODO: When grub no longer needs this version, move to gnu/packages/debug.scm. +(define qemu-minimal-2.10 + (package + (inherit qemu-minimal) + (version "2.10.2") + (source (origin + (method url-fetch) + (uri (string-append "https://download.qemu.org/qemu-" + version ".tar.xz")) + (sha256 + (base32 + "17w21spvaxaidi2am5lpsln8yjpyp2zi3s3gc6nsxj5arlgamzgw")))))) + (define-public grub (package (name "grub") @@ -144,7 +160,7 @@ ;; Dependencies for the test suite. The "real" QEMU is needed here, ;; because several targets are used. ("parted" ,parted) - ("qemu" ,qemu-minimal) + ("qemu" ,qemu-minimal-2.10) ("xorriso" ,xorriso))) (home-page "https://www.gnu.org/software/grub/") (synopsis "GRand Unified Boot loader") diff --git a/gnu/packages/cook.scm b/gnu/packages/cook.scm index e149968f24..17e090d725 100644 --- a/gnu/packages/cook.scm +++ b/gnu/packages/cook.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 John Darrington <jmd@gnu.org> +;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -41,26 +42,26 @@ (arguments `(#:parallel-build? #f ; There are some nasty racy rules in the Makefile. #:phases - (alist-cons-before - 'configure 'pre-conf - (lambda _ - (substitute* (append '("common/env.c") - (find-files "test" "\\.sh")) - (("/bin/sh") (which "sh"))) + (modify-phases %standard-phases + (add-before 'configure 'pre-conf + (lambda _ + (substitute* (append '("common/env.c") + (find-files "test" "\\.sh")) + (("/bin/sh") (which "sh"))) - ;; Guix's binutils (because it wants bit-reproducable builds) is - ;; is configured with the --enable-deterministic-archives flag. - ;; This means the timestamp of files appended to an ar archive - ;; are automatically and silently mutated to 00:00 1 Jan 1970 - ;; which plays havoc with this test, for which correct timestamps - ;; are very important. Adding the U flag undoes the effect of - ;; --enable-deterministic-archives and allows this test to work - ;; again. - (substitute* "test/00/t0077a.sh" - (("ar qc") "ar qcU")) + ;; Guix's binutils (because it wants bit-reproducable builds) is + ;; is configured with the --enable-deterministic-archives flag. + ;; This means the timestamp of files appended to an ar archive + ;; are automatically and silently mutated to 00:00 1 Jan 1970 + ;; which plays havoc with this test, for which correct timestamps + ;; are very important. Adding the U flag undoes the effect of + ;; --enable-deterministic-archives and allows this test to work + ;; again. + (substitute* "test/00/t0077a.sh" + (("ar qc") "ar qcU")) - (setenv "SH" (which "sh"))) - %standard-phases))) + (setenv "SH" (which "sh")) + #t))))) (native-inputs `(("bison" ,bison) ;; For building the documentation: ("groff" ,groff) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 108650d19a..e1fb1b6215 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -1109,14 +1109,14 @@ methods.") (define-public r-timedate (package (name "r-timedate") - (version "3042.101") + (version "3043.102") (source (origin (method url-fetch) (uri (cran-uri "timeDate" version)) (sha256 (base32 - "0vcckaw1gqz3j4v69r9jn41vlmk5a5c7572xam1nl75ki5v4r3bc")))) + "0wvl5pq261rvbgly7vilk3x3m9xk3ly6il1i5scwdf6srl1vlz1p")))) (properties `((upstream-name . "timeDate"))) (build-system r-build-system) (home-page "https://www.rmetrics.org") diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index 225c26378d..695f6ca088 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2016, 2017 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -663,3 +664,49 @@ that are faster than MD5, SHA-1, SHA-2, and SHA-3, yet are at least as secure as the latest standard, SHA-3. It is an improved version of the SHA-3 finalist BLAKE.") (license license:public-domain)))) + +(define-public rhash + (package + (name "rhash") + (version "1.3.5") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/rhash/RHash/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0bhz3xdl6r06k1bqigdjz42l31iqz2qdpg7zk316i7p2ra56iq4q")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags (list "CC=gcc" + (string-append "PREFIX=" %output)) + #:test-target "test" + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "Makefile" + (("\\$\\(DESTDIR\\)/etc") + (string-append (assoc-ref outputs "out") "/etc"))) + #t)) + (add-after 'build 'build-library + (lambda* (#:key make-flags #:allow-other-keys) + (apply invoke "make" "lib-shared" make-flags))) + (add-after 'install 'install-library + (lambda* (#:key make-flags #:allow-other-keys) + (apply invoke "make" "install-lib-shared" make-flags) + (apply invoke + "make" "-C" "librhash" "install-headers" + "install-so-link" make-flags))) + (add-after 'check 'check-library + (lambda* (#:key make-flags #:allow-other-keys) + (apply invoke "make" "test-shared-lib" make-flags)))))) + (home-page "https://sourceforge.net/projects/rhash/") + (synopsis "Utility for computing hash sums") + (description "RHash is a console utility for calculation and verification +of magnet links and a wide range of hash sums like CRC32, MD4, MD5, SHA1, +SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R +34.11-94, RIPEMD-160, HAS-160, EDON-R, Whirlpool and Snefru.") + (license (license:non-copyleft "file://COPYING")))) diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm index 09efcbdd6c..2354f0fbb9 100644 --- a/gnu/packages/debug.scm +++ b/gnu/packages/debug.scm @@ -169,7 +169,7 @@ tools that process C/C++ code.") (inputs `(("custom-qemu" ;; The afl-qemu tool builds qemu 2.10.0 with a few patches applied. - ,(package (inherit qemu-minimal) + ,(package (inherit (@@ (gnu packages bootloaders) qemu-minimal-2.10)) (name "afl-qemu") (inputs `(("afl-src" ,source) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 7d34bfafac..bf4b6a750e 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> +;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -74,7 +75,7 @@ (define-public calibre (package (name "calibre") - (version "3.11.1") + (version "3.17.0") (source (origin (method url-fetch) @@ -83,7 +84,7 @@ version ".tar.xz")) (sha256 (base32 - "0kwza7iyyyfhq476z5fk9962iyd0qpgmzm1k36nqcy8sfjbk8mrl")) + "1w6hw1s0d4daa4q2ykzhxdndiq61l8z7ls7rxh7k7p62ia0i5sxp")) ;; Remove non-free or doubtful code, see ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html (modules '((guix build utils))) @@ -175,7 +176,8 @@ (substitute* "setup/build_environment.py" (("sys.prefix") (string-append "'" pyqt "'"))) (setenv "PODOFO_INC_DIR" (string-append podofo "/include/podofo")) - (setenv "PODOFO_LIB_DIR" (string-append podofo "/lib"))))) + (setenv "PODOFO_LIB_DIR" (string-append podofo "/lib")) + #t))) (add-after 'install 'install-font-liberation (lambda* (#:key inputs outputs #:allow-other-keys) (for-each (lambda (file) @@ -194,11 +196,11 @@ #t))))) (home-page "http://calibre-ebook.com/") (synopsis "E-book library management software") - (description "Calibre is an ebook library manager. It can view, convert -and catalog ebooks in most of the major ebook formats. It can also talk -to many ebook reader devices. It can go out to the Internet and fetch + (description "Calibre is an e-book library manager. It can view, convert +and catalog e-books in most of the major e-book formats. It can also talk +to many e-book reader devices. It can go out to the Internet and fetch metadata for books. It can download newspapers and convert them into -ebooks for convenient reading.") +e-books for convenient reading.") ;; Calibre is largely GPL3+, but includes a number of components covered ;; by other licenses. See COPYRIGHT for more details. (license (list license:gpl3+ diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 94b371202c..81e6885f66 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -3844,6 +3844,26 @@ strings, and code folding.") in Emacs.") (license license:gpl3+))) +(define-public emacs-edit-indirect + (package + (name "emacs-edit-indirect") + (version "0.1.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/Fanael/edit-indirect/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "07kr58rd1p5j764wminsssazr73hy51yw8iqcsv5z2dwgj7msv71")))) + (build-system emacs-build-system) + (home-page "https://github.com/Fanael/edit-indirect") + (synopsis "Edit regions in separate buffers") + (description "This package allows you to edit regions in separate buffers, +like @code{org-edit-src-code} but for arbitrary regions.") + (license license:gpl3+))) + (define-public emacs-projectile (package (name "emacs-projectile") @@ -4266,6 +4286,52 @@ are pretty much the same (and SLIME served as the principle inspiration for CIDER).") (license license:gpl3+))) +;; There hasn't been a tag or release since 2015, so we take the latest +;; commit. +(define-public emacs-sly + (let ((commit "486bfbe95612bcdc0960c490207970a188e0fbb9") + (revision "1")) + (package + (name "emacs-sly") + (version (string-append "1.0.0-" revision "." (string-take commit 9))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/joaotavora/sly.git") + (commit commit))) + (sha256 + (base32 + "0ib4q4k3h3qn88pymyjjmlmnpizdn1mfg5gpk5a715nqsgxlg09l")))) + (build-system emacs-build-system) + (arguments + `(#:include (cons "^lib\\/" %default-include) + #:phases + ;; The package provides autoloads. + (modify-phases %standard-phases + (delete 'make-autoloads)))) + (home-page "https://github.com/joaotavora/sly") + (synopsis "Sylvester the Cat's Common Lisp IDE") + (description + "SLY is Sylvester the Cat's Common Lisp IDE. SLY is a fork of SLIME, and +contains the following improvements over it: + +@enumerate +@item Completely redesigned REPL based on Emacs's own full-featured + @code{comint.el} +@item Live code annotations via a new @code{sly-stickers} contrib +@item Consistent interactive button interface. Everything can be copied to + the REPL. +@item Multiple inspectors with independent history +@item Regexp-capable @code{M-x sly-apropos} +@item Contribs are first class SLY citizens and enabled by default +@item Use ASDF to loads contribs on demand. +@end enumerate + +SLY tracks SLIME's bugfixes and all its familar features (debugger, inspector, +xref, etc...) are still available, but with better integration.") + (license license:gpl3+)))) + (define-public emacs-lua-mode (let ((commit "652e299cb967fccca827dda381d61a9c144d97de") (revision "1")) diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm new file mode 100644 index 0000000000..142603b082 --- /dev/null +++ b/gnu/packages/emulators.scm @@ -0,0 +1,1111 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> +;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com> +;;; Copyright © 2015, 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> +;;; Copyright © 2015, 2018 David Thompson <dthompson2@worcester.edu> +;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> +;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com> +;;; +;;; 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 emulators) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix svn-download) + #:use-module (gnu packages) + #:use-module (gnu packages algebra) + #:use-module (gnu packages audio) + #:use-module (gnu packages autotools) + #:use-module (gnu packages base) + #:use-module (gnu packages boost) + #:use-module (gnu packages backup) + #:use-module (gnu packages compression) + #:use-module (gnu packages curl) + #:use-module (gnu packages databases) + #:use-module (gnu packages fonts) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages game-development) + #:use-module (gnu packages gettext) + #:use-module (gnu packages gl) + #:use-module (gnu packages glib) + #:use-module (gnu packages gtk) + #:use-module (gnu packages image) + #:use-module (gnu packages imagemagick) + #:use-module (gnu packages libedit) + #:use-module (gnu packages libusb) + #:use-module (gnu packages linux) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages python) + #:use-module (gnu packages qt) + #:use-module (gnu packages sdl) + #:use-module (gnu packages tls) + #:use-module (gnu packages upnp) + #:use-module (gnu packages video) + #:use-module (gnu packages vulkan) + #:use-module (gnu packages wxwidgets) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xiph) + #:use-module (gnu packages xml) + #:use-module (gnu packages xorg) + #:use-module (guix build-system cmake) + #:use-module (guix build-system gnu)) + +(define-public desmume + (package + (name "desmume") + (version "0.9.11") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/desmume/desmume/" + version "/desmume-" version ".tar.gz")) + (sha256 + (base32 + "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs")))) + (build-system gnu-build-system) + (arguments + ;; Enable support for WiFi and microphone. + `(#:configure-flags '("--enable-wifi" + "--enable-openal"))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("intltool" ,intltool))) + (inputs + `(("zlib" ,zlib) + ("sdl" ,sdl) + ("glib" ,glib) + ("gtk+" ,gtk+-2) + ("glu" ,glu))) + (home-page "http://desmume.org/") + (synopsis "Nintendo DS emulator") + (description + "DeSmuME is an emulator for the Nintendo DS handheld gaming console.") + (license license:gpl2))) + +;; Building from recent Git because the official 5.0 release no longer builds. +(define-public dolphin-emu + (let ((commit "d04b179111f8d863f360839474cb82c766f762b8") + (revision "0")) + (package + (name "dolphin-emu") + (version (git-version "5.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dolphin-emu/dolphin.git") + (commit commit))) + (file-name (git-file-name name version)) + (modules '((guix build utils))) + (snippet + '(begin + ;; Remove external stuff we don't need. + (for-each (lambda (dir) + (delete-file-recursively + (string-append "Externals/" dir))) + '("LZO" "OpenAL" "Qt" "SFML" "SOIL" "curl" "ffmpeg" + "gettext" "hidapi" "libpng" "libusb" "mbedtls" + "miniupnpc" "wxWidgets3" "zlib")) + ;; Clean up source. + (for-each delete-file (find-files "." ".*\\.(bin|dsy|exe|jar|rar)$")) + #t)) + (sha256 + (base32 + "0g725wmhlim73zrhi47wmr1bmplpy4b7sbimd5pm8xpfhj5nm10l")))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f + ;; The FindGTK2 cmake script only checks hardcoded directories for + ;; glib/gtk headers. + + #:phases + (modify-phases %standard-phases + (add-before 'configure 'generate-fonts&hardcore-libvulkan-path + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((fontfile + (string-append (assoc-ref inputs "font-wqy-microhei") + "/share/fonts/truetype/wqy-microhei.ttc")) + (libvulkan + (string-append (assoc-ref inputs "vulkan-icd-loader") + "/lib/libvulkan.so"))) + (chdir "docs") + (invoke "bash" "-c" "g++ -O2 -std=c++11 $(freetype-config \ +--cflags --libs) gc-font-tool.cpp -o gc-font-tool") + (invoke "./gc-font-tool" "a" fontfile "font_western.bin") + (invoke "./gc-font-tool" "s" fontfile "font_japanese.bin") + (copy-file "font_japanese.bin" "../Data/Sys/GC/font_japanese.bin") + (copy-file "font_western.bin" "../Data/Sys/GC/font_western.bin") + (chdir "..") + (substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp" + (("libvulkan.so") libvulkan)) + #t)))) + + #:configure-flags + (list (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR=" + (assoc-ref %build-inputs "gtk+") + "/lib/gtk-2.0/include") + (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR=" + (assoc-ref %build-inputs "glib") + "/lib/glib-2.0/include") + (string-append "-DX11_INCLUDE_DIR=" + (assoc-ref %build-inputs "libx11") + "/include") + (string-append "-DX11_LIBRARIES=" + (assoc-ref %build-inputs "libx11") + "/lib/libX11.so") + "-DX11_FOUND=1"))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("gettext" ,gnu-gettext))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("ao" ,ao) + ("bluez" ,bluez) + ("curl" ,curl) + ("eudev" ,eudev) + ("ffmpeg" ,ffmpeg) + ("font-wqy-microhei" ,font-wqy-microhei) + ("freetype" ,freetype) + ("glew" ,glew) + ("glib" ,glib) + ("glu" ,glu) + ("gtk+" ,gtk+-2) + ("hidapi" ,hidapi) + ("libevdev" ,libevdev) + ("libpng" ,libpng) + ("libusb" ,libusb) + ("libx11" ,libx11) + ("libxi" ,libxi) + ("libxrandr" ,libxrandr) + ("lzo" ,lzo) + ("mbedtls-apache" ,mbedtls-apache) + ("mesa" ,mesa) + ("miniupnpc" ,miniupnpc) + ("openal" ,openal) + ("pulseaudio" ,pulseaudio) + ("qtbase" ,qtbase) + ("sdl2" ,sdl2) + ("sfml" ,sfml) + ("soil" ,soil) + ("soundtouch" ,soundtouch) + ("vulkan-icd-loader" ,vulkan-icd-loader) + ("wxwidgets" ,wxwidgets-gtk2-3.1) + ("zlib" ,zlib))) + (home-page "https://dolphin-emu.org/") + (synopsis "Nintendo Wii and GameCube emulator") + (description + "Dolphin is an emulator for two Nintendo video game consoles: the +GameCube and the Wii. It provides compatibility with all PC controllers, +turbo speed, networked multiplayer, and graphical enhancements.") + (supported-systems '("x86_64-linux" "aarch64-linux")) + ; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0. + (license (list license:gpl2+ license:asl2.0 license:fdl1.2+))))) + +(define-public dosbox + (package + (name "dosbox") + (version "0.74.svn3947") + (source (origin + (method svn-fetch) + (uri (svn-reference + (url "http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk/") + (revision 3947))) + (file-name (string-append name "-" version "-checkout")) + ;; Use SVN head, since the last release (2010) is incompatible + ;; with GCC 4.8+ (see + ;; <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=624976>). + (sha256 + (base32 + "1p918j6090d1nkvgq7ifvmn506zrdmyi32y7p3ms40d5ssqjg8fj")))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after + 'unpack 'autogen.sh + (lambda _ + (zero? (system* "sh" "autogen.sh"))))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake))) + (inputs + `(("sdl" ,sdl) + ("libpng" ,libpng) + ("zlib" ,zlib) + ("alsa-lib" ,alsa-lib) + ("glu" ,glu) + ("mesa" ,mesa))) + (home-page "http://www.dosbox.com") + (synopsis "X86 emulator with CGA/EGA/VGA/etc. graphics and sound") + (description "DOSBox is a DOS-emulator that uses the SDL library. DOSBox +also emulates CPU:286/386 realmode/protected mode, Directory +FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a +SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with +older games.") + (license license:gpl2+))) + +(define-public emulation-station + (let ((commit "646bede3d9ec0acf0ae378415edac136774a66c5")) + (package + (name "emulation-station") + (version "2.0.1") + (source (origin + (method git-fetch) ; no tarball available + (uri (git-reference + (url "https://github.com/Aloshi/EmulationStation.git") + (commit commit))) ; no version tag + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v")))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f)) ; no tests + (inputs + `(("alsa-lib" ,alsa-lib) + ("boost" ,boost) + ("curl" ,curl) + ("eigin" ,eigen) + ("freeimage" ,freeimage) + ("freetype" ,freetype) + ("mesa" ,mesa) + ("sdl2" ,sdl2))) + (synopsis "Video game console emulator front-end") + (description "EmulationStation provides a graphical front-end to a large +number of video game console emulators. It features an interface that is +usable with any game controller that has at least 4 buttons, theming support, +and a game metadata scraper.") + (home-page "http://www.emulationstation.org") + (license license:expat)))) + +(define-public higan + (package + (name "higan") + (version "106") + (source + (origin + (method url-fetch) + (uri (string-append + "https://gitlab.com/higan/higan/repository/archive.tar.gz?ref=v" + version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0y42pra0dxzlbkyzcp3r8a39pji2bj3p9fl40425f60af2igr4rw")) + (patches (search-patches "higan-remove-march-native-flag.patch")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("ao" ,ao) + ("eudev" ,eudev) + ("gtk+" ,gtk+-2) + ("gtksourceview-2" ,gtksourceview-2) + ("libxv" ,libxv) + ("mesa" ,mesa) + ("openal" ,openal) + ("pulseaudio" ,pulseaudio) + ("sdl" ,sdl))) + (arguments + '(#:phases + (let ((build-phase (assoc-ref %standard-phases 'build)) + (install-phase (assoc-ref %standard-phases 'install))) + (modify-phases %standard-phases + ;; The higan build system has no configure phase. + (delete 'configure) + (add-before 'build 'chdir-to-higan + (lambda _ + (chdir "higan"))) + (add-before 'install 'create-/share/applications + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; It seems the author forgot to do this in the Makefile. + (mkdir-p (string-append out "/share/applications"))))) + (add-after 'install 'chdir-to-icarus + (lambda _ + (chdir "../icarus"))) + (add-after 'chdir-to-icarus 'build-icarus build-phase) + (add-after 'build-icarus 'install-icarus install-phase) + (add-after 'install-icarus 'wrap-higan-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (higan (string-append bin "/higan")) + (higan-original (string-append higan "-original")) + (bash (string-append (assoc-ref inputs "bash") + "/bin/bash")) + (coreutils (assoc-ref inputs "coreutils")) + (mkdir (string-append coreutils "/bin/mkdir")) + (cp (string-append coreutils "/bin/cp")) + (cp-r (string-append cp " -r --no-preserve=mode"))) + ;; First, have the executable make sure ~/.local/share/higan + ;; contains up to date files. Higan insists on looking there + ;; for these data files. + (rename-file higan higan-original) + (with-output-to-file higan + (lambda () + (display + (string-append + "#!" bash "\n" + ;; higan doesn't respect $XDG_DATA_HOME + mkdir " -p ~/.local/share\n" + cp-r " " out "/share/higan ~/.local/share\n" + "exec " higan-original)))) + (chmod higan #o555) + ;; Second, make sure higan will find icarus in PATH. + (wrap-program higan + `("PATH" ":" prefix (,bin)))))))) + #:make-flags + (list "compiler=g++" + (string-append "prefix=" (assoc-ref %outputs "out"))) + ;; There is no test suite. + #:tests? #f)) + (home-page "http://byuu.org/emulation/higan/") + (synopsis "Nintendo multi-system emulator") + (description + "higan (formerly bsnes) is an emulator for multiple Nintendo video game +consoles, including the Nintendo Entertainment System (NES/Famicom), Super +Nintendo Entertainment System (SNES/Super Famicom), Game Boy, Game Boy +Color (GBC), and Game Boy Advance (GBA). It also supports the subsystems +Super Game Boy, BS-X Satellaview, and Sufami Turbo.") + ;; As noted in these files among more: + ;; - icarus/icarus.cpp + ;; - higan/emulator/emulator.hpp + (license license:gpl3))) + +(define-public mgba + (package + (name "mgba") + (version "0.6.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/mgba-emu/mgba/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0xmq1q1j71hnpd49wm91cqq8w5zdhb921cm17jchp4qjmaqgwy3w")) + (modules '((guix build utils))) + (snippet + ;; Make sure we don't use the bundled software. + '(for-each + (lambda (subdir) + (let ((lib-subdir (string-append "src/third-party/" subdir))) + (delete-file-recursively lib-subdir))) + '("libpng" "lzma" "sqlite3" "zlib"))))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ;no "test" target + #:configure-flags + (list "-DUSE_LZMA=OFF" ;do not use bundled LZMA + "-DUSE_LIBZIP=OFF" ;use "zlib" instead + (string-append "-DCMAKE_INSTALL_LIBDIR=" + (assoc-ref %outputs "out") "/lib")))) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs `(("ffmpeg" ,ffmpeg) + ("imagemagick" ,imagemagick) + ("libedit" ,libedit) + ("libepoxy" ,libepoxy) + ("libpng" ,libpng) + ("mesa" ,mesa) + ("minizip" ,minizip) + ("ncurses" ,ncurses) + ("qtbase" ,qtbase) + ("qtmultimedia" ,qtmultimedia) + ("qttools" ,qttools) + ("sdl2" ,sdl2) + ("sqlite" ,sqlite) + ("zlib" ,zlib))) + (home-page "https://mgba.io") + (synopsis "Game Boy Advance emulator") + (description + "mGBA is an emulator for running Game Boy Advance games. It aims to be +faster and more accurate than many existing Game Boy Advance emulators, as +well as adding features that other emulators lack. It also supports Game Boy +and Game Boy Color games.") + ;; Code is mainly MPL 2.0. "blip_buf.c" is LGPL 2.1+ and "inih.c" is + ;; BSD-3. + (license (list license:mpl2.0 license:lgpl2.1+ license:bsd-3)))) + +(define-public mupen64plus-core + (package + (name "mupen64plus-core") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-core/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("freetype" ,freetype) + ("glu" ,glu) + ("libpng" ,libpng) + ("mesa" ,mesa) + ("sdl2" ,sdl2) + ("zlib" ,zlib))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags (let ((out (assoc-ref %outputs "out"))) + (list "all" (string-append "PREFIX=" out))) + ;; There are no tests. + #:tests? #f)) + ;; As per the Makefile (in projects/unix/Makefile): + (supported-systems '("i686-linux" "x86_64-linux")) + (home-page "http://www.mupen64plus.org/") + (synopsis "Nintendo 64 emulator core library") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +core library.") + (license license:gpl2+))) + +(define-public mupen64plus-audio-sdl + (package + (name "mupen64plus-audio-sdl") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +SDL audio plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-input-sdl + (package + (name "mupen64plus-input-sdl") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri")))) + (build-system gnu-build-system) + (native-inputs + `(("which" ,which))) + (inputs + `(("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +SDL input plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-rsp-hle + (package + (name "mupen64plus-rsp-hle") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv")))) + (build-system gnu-build-system) + (inputs + `(("mupen64plus-core" ,mupen64plus-core))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +high-level emulation (HLE) RSP processor plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-rsp-z64 + (package + (name "mupen64plus-rsp-z64") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi")))) + (build-system gnu-build-system) + (inputs + `(("mupen64plus-core" ,mupen64plus-core))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +Z64 RSP processor plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-arachnoid + (package + (name "mupen64plus-video-arachnoid") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("mesa" ,mesa) + ("mupen64plus-core" ,mupen64plus-core))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus Rice Video plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +Arachnoid video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-glide64 + (package + (name "mupen64plus-video-glide64") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("mesa" ,mesa) + ("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix"))) + ;; XXX Should be unnecessary with the next release. + (add-before + 'build 'use-sdl2 + (lambda _ + (substitute* "Makefile" + (("SDL_CONFIG = (.*)sdl-config" all prefix) + (string-append "SDL_CONFIG = " prefix "sdl2-config")))))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus Rice Video plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +Glide64 video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-glide64mk2 + (package + (name "mupen64plus-video-glide64mk2") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("boost" ,boost) + ("libpng" ,libpng) + ("mesa" ,mesa) + ("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2) + ("zlib" ,zlib))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus Rice Video plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +Glide64MK2 video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-rice + (package + (name "mupen64plus-video-rice") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-rice/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("libpng" ,libpng) + ("mesa" ,mesa) + ("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus Rice Video plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +Rice Video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-z64 + (package + (name "mupen64plus-video-z64") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-z64/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("glew" ,glew) + ("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix"))) + ;; XXX Should be unnecessary with the next release. + (add-before + 'build 'use-sdl2 + (lambda _ + (substitute* "Makefile" + (("SDL_CONFIG = (.*)sdl-config" all prefix) + (string-append "SDL_CONFIG = " prefix "sdl2-config")))))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus Z64 video plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +Z64 video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-ui-console + (package + (name "mupen64plus-ui-console") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-ui-console/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2")) + (patches (search-patches "mupen64plus-ui-console-notice.patch")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("sdl2" ,sdl2))) + ;; Mupen64Plus supports a single data directory and a single plugin + ;; directory in its configuration, yet we need data and plugin files from + ;; a variety of packages. The best way to deal with this is to install + ;; all packages from which data and plugin files are needed into one's + ;; profile, and point the configuration there. Hence, propagate the most + ;; important packages here to save the user from the bother. The patch + ;; mupen64plus-ui-console-notice also gives users instructions on what + ;; they need to do in order to point the configuration to their profile. + (propagated-inputs + `(("mupen64plus-core" ,mupen64plus-core) + ("mupen64plus-audio-sdl" ,mupen64plus-audio-sdl) + ("mupen64plus-input-sdl" ,mupen64plus-input-sdl) + ("mupen64plus-rsp-hle" ,mupen64plus-rsp-hle) + ("mupen64plus-video-glide64" ,mupen64plus-video-glide64) + ("mupen64plus-video-glide64mk2" ,mupen64plus-video-glide64mk2) + ("mupen64plus-video-rice" ,mupen64plus-video-rice))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus") + ;; Trailing slash matters here. + (string-append "COREDIR=" m64p "/lib/"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +command line user interface. Installing this package is the easiest way +towards a working Mupen64Plus for casual users.") + (license license:gpl2+))) + +(define-public nestopia-ue + (package + (name "nestopia-ue") + (version "1.47") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/rdanbrook/nestopia/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1dzrrjmvyqks64q5l5pfly80jb6qcsbj5b3dm40fijd5xnpbapci")) + (modules '((guix build utils))) + (snippet + '(begin + ;; We don't need libretro for the GNU/Linux build. + (delete-file-recursively "libretro") + ;; Use system zlib. + (delete-file-recursively "source/zlib") + (substitute* "source/core/NstZlib.cpp" + (("#include \"../zlib/zlib.h\"") "#include <zlib.h>")))))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("ao" ,ao) + ("glu" ,glu) + ("gtk+" ,gtk+) + ("libarchive" ,libarchive) + ("mesa" ,mesa) + ("sdl2" ,sdl2) + ("zlib" ,zlib))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The Nestopia build system consists solely of a Makefile. + (delete 'configure) + (add-before 'build 'remove-xdg-desktop-menu-call + (lambda _ + (substitute* "Makefile" + (("xdg-desktop-menu install .*") "")))) + (add-before 'build 'remove-gdkwayland-include + (lambda _ + (substitute* "source/unix/gtkui/gtkui.h" + (("#include <gdk/gdkwayland\\.h>") ""))))) + #:make-flags (let ((out (assoc-ref %outputs "out"))) + (list "CC=gcc" "CXX=g++" (string-append "PREFIX=" out))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://0ldsk00l.ca/nestopia/") + (synopsis "Nintendo Entertainment System (NES/Famicom) emulator") + (description + "Nestopia UE (Undead Edition) is a fork of the Nintendo Entertainment +System (NES/Famicom) emulator Nestopia, with enhancements from members of the +emulation community. It provides highly accurate emulation.") + (license license:gpl2+))) + +(define-public retroarch + (package + (name "retroarch") + (version "1.7.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/libretro/RetroArch/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0fdribjfc5zz9brzhqcxw6m76kvyg13l67aiigszv4wsjd5j3gpz")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (etc (string-append out "/etc")) + (vulkan (assoc-ref inputs "vulkan-icd-loader"))) + ;; Hard-code the path to libvulkan.so. + (substitute* "gfx/common/vulkan_common.c" + (("libvulkan.so") (string-append vulkan "/lib/libvulkan.so"))) + (substitute* "qb/qb.libs.sh" + (("/bin/true") (which "true"))) + ;; The configure script does not yet accept the extra arguments + ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase. + (zero? (system* + "./configure" + (string-append "--prefix=" out) + (string-append "--global-config-dir=" etc))))))))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("ffmpeg" ,ffmpeg) + ("freetype" ,freetype) + ("libxinerama" ,libxinerama) + ("libxkbcommon" ,libxkbcommon) + ("libxml2" ,libxml2) + ("libxv" ,libxv) + ("mesa" ,mesa) + ("openal" ,openal) + ("pulseaudio" ,pulseaudio) + ("python" ,python) + ("sdl" ,sdl2) + ("udev" ,eudev) + ("vulkan-icd-loader" ,vulkan-icd-loader) + ("wayland", wayland) + ("zlib" ,zlib))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (home-page "https://www.libretro.com/") + (synopsis "Reference frontend for the libretro API") + (description + "Libretro is a simple but powerful development interface that allows for +the easy creation of emulators, games and multimedia applications that can plug +straight into any libretro-compatible frontend. RetroArch is the official +reference frontend for the libretro API, currently used by most as a modular +multi-system game/emulator system.") + (license license:gpl3+))) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 0ac7d992c9..272e9bce96 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 John Darrington <jmd@gnu.org> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> -;;; Copyright © 2014, 2015, 2016 David Thompson <dthompson2@worcester.edu> +;;; Copyright © 2014, 2016 David Thompson <dthompson2@worcester.edu> ;;; Copyright © 2014, 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com> ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net> @@ -14,9 +14,7 @@ ;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> -;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org> -;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> ;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is> ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org> ;;; Copyright © 2016, 2017, 2018 Kei Kebreau <kkebreau@posteo.net> @@ -1619,69 +1617,6 @@ interactive fiction, also known as text adventures, which were implemented either by Infocom or created using the Inform compiler.") (license license:bsd-3))) -(define-public retroarch - (package - (name "retroarch") - (version "1.7.1") - (source - (origin - (method url-fetch) - (uri (string-append "https://github.com/libretro/RetroArch/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0fdribjfc5zz9brzhqcxw6m76kvyg13l67aiigszv4wsjd5j3gpz")))) - (build-system gnu-build-system) - (arguments - '(#:tests? #f ; no tests - #:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (etc (string-append out "/etc")) - (vulkan (assoc-ref inputs "vulkan-icd-loader"))) - ;; Hard-code the path to libvulkan.so. - (substitute* "gfx/common/vulkan_common.c" - (("libvulkan.so") (string-append vulkan "/lib/libvulkan.so"))) - (substitute* "qb/qb.libs.sh" - (("/bin/true") (which "true"))) - ;; The configure script does not yet accept the extra arguments - ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase. - (zero? (system* - "./configure" - (string-append "--prefix=" out) - (string-append "--global-config-dir=" etc))))))))) - (inputs - `(("alsa-lib" ,alsa-lib) - ("ffmpeg" ,ffmpeg) - ("freetype" ,freetype) - ("libxinerama" ,libxinerama) - ("libxkbcommon" ,libxkbcommon) - ("libxml2" ,libxml2) - ("libxv" ,libxv) - ("mesa" ,mesa) - ("openal" ,openal) - ("pulseaudio" ,pulseaudio) - ("python" ,python) - ("sdl" ,sdl2) - ("udev" ,eudev) - ("vulkan-icd-loader" ,vulkan-icd-loader) - ("wayland", wayland) - ("zlib" ,zlib))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (home-page "https://www.libretro.com/") - (synopsis "Reference frontend for the libretro API") - (description - "Libretro is a simple but powerful development interface that allows for -the easy creation of emulators, games and multimedia applications that can plug -straight into any libretro-compatible frontend. RetroArch is the official -reference frontend for the libretro API, currently used by most as a modular -multi-system game/emulator system.") - (license license:gpl3+))) - (define-public gnugo (package (name "gnugo") @@ -1922,48 +1857,6 @@ next campaign.") (description "This package contains a dedicated server for @emph{The Battle for Wesnoth}."))) -(define-public dosbox - (package - (name "dosbox") - (version "0.74.svn3947") - (source (origin - (method svn-fetch) - (uri (svn-reference - (url "http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk/") - (revision 3947))) - (file-name (string-append name "-" version "-checkout")) - ;; Use SVN head, since the last release (2010) is incompatible - ;; with GCC 4.8+ (see - ;; <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=624976>). - (sha256 - (base32 - "1p918j6090d1nkvgq7ifvmn506zrdmyi32y7p3ms40d5ssqjg8fj")))) - (build-system gnu-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (add-after - 'unpack 'autogen.sh - (lambda _ - (zero? (system* "sh" "autogen.sh"))))))) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake))) - (inputs - `(("sdl" ,sdl) - ("libpng" ,libpng) - ("zlib" ,zlib) - ("alsa-lib" ,alsa-lib) - ("glu" ,glu) - ("mesa" ,mesa))) - (home-page "http://www.dosbox.com") - (synopsis "X86 emulator with CGA/EGA/VGA/etc. graphics and sound") - (description "DOSBox is a DOS-emulator that uses the SDL library. DOSBox -also emulates CPU:286/386 realmode/protected mode, Directory -FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a -SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with -older games.") - (license license:gpl2+))) - (define-public gamine (package (name "gamine") @@ -2082,638 +1975,6 @@ world}, @uref{http://evolonline.org, Evol Online} and ;; The rest is under GPL2+. (license (list license:gpl2+ license:zlib license:cc-by-sa4.0)))) -(define-public mupen64plus-core - (package - (name "mupen64plus-core") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-core/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("freetype" ,freetype) - ("glu" ,glu) - ("libpng" ,libpng) - ("mesa" ,mesa) - ("sdl2" ,sdl2) - ("zlib" ,zlib))) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; The mupen64plus build system has no configure phase. - (delete 'configure) - ;; Makefile is in a subdirectory. - (add-before - 'build 'cd-to-project-dir - (lambda _ - (chdir "projects/unix")))) - #:make-flags (let ((out (assoc-ref %outputs "out"))) - (list "all" (string-append "PREFIX=" out))) - ;; There are no tests. - #:tests? #f)) - ;; As per the Makefile (in projects/unix/Makefile): - (supported-systems '("i686-linux" "x86_64-linux")) - (home-page "http://www.mupen64plus.org/") - (synopsis "Nintendo 64 emulator core library") - (description - "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator -which is capable of accurately playing many games. This package contains the -core library.") - (license license:gpl2+))) - -(define-public mupen64plus-audio-sdl - (package - (name "mupen64plus-audio-sdl") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("mupen64plus-core" ,mupen64plus-core) - ("sdl2" ,sdl2))) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; The mupen64plus build system has no configure phase. - (delete 'configure) - ;; Makefile is in a subdirectory. - (add-before - 'build 'cd-to-project-dir - (lambda _ - (chdir "projects/unix")))) - #:make-flags - (let ((out (assoc-ref %outputs "out")) - (m64p (assoc-ref %build-inputs "mupen64plus-core"))) - (list "all" - (string-append "PREFIX=" out) - (string-append "APIDIR=" m64p "/include/mupen64plus"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus SDL input plugin") - (description - "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator -which is capable of accurately playing many games. This package contains the -SDL audio plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-input-sdl - (package - (name "mupen64plus-input-sdl") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri")))) - (build-system gnu-build-system) - (native-inputs - `(("which" ,which))) - (inputs - `(("mupen64plus-core" ,mupen64plus-core) - ("sdl2" ,sdl2))) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; The mupen64plus build system has no configure phase. - (delete 'configure) - ;; Makefile is in a subdirectory. - (add-before - 'build 'cd-to-project-dir - (lambda _ - (chdir "projects/unix")))) - #:make-flags - (let ((out (assoc-ref %outputs "out")) - (m64p (assoc-ref %build-inputs "mupen64plus-core"))) - (list "all" - (string-append "PREFIX=" out) - (string-append "APIDIR=" m64p "/include/mupen64plus"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus SDL input plugin") - (description - "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator -which is capable of accurately playing many games. This package contains the -SDL input plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-rsp-hle - (package - (name "mupen64plus-rsp-hle") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv")))) - (build-system gnu-build-system) - (inputs - `(("mupen64plus-core" ,mupen64plus-core))) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; The mupen64plus build system has no configure phase. - (delete 'configure) - ;; Makefile is in a subdirectory. - (add-before - 'build 'cd-to-project-dir - (lambda _ - (chdir "projects/unix")))) - #:make-flags - (let ((out (assoc-ref %outputs "out")) - (m64p (assoc-ref %build-inputs "mupen64plus-core"))) - (list "all" - (string-append "PREFIX=" out) - (string-append "APIDIR=" m64p "/include/mupen64plus"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus SDL input plugin") - (description - "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator -which is capable of accurately playing many games. This package contains the -high-level emulation (HLE) RSP processor plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-rsp-z64 - (package - (name "mupen64plus-rsp-z64") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi")))) - (build-system gnu-build-system) - (inputs - `(("mupen64plus-core" ,mupen64plus-core))) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; The mupen64plus build system has no configure phase. - (delete 'configure) - ;; Makefile is in a subdirectory. - (add-before - 'build 'cd-to-project-dir - (lambda _ - (chdir "projects/unix")))) - #:make-flags - (let ((out (assoc-ref %outputs "out")) - (m64p (assoc-ref %build-inputs "mupen64plus-core"))) - (list "all" - (string-append "PREFIX=" out) - (string-append "APIDIR=" m64p "/include/mupen64plus"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus SDL input plugin") - (description - "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator -which is capable of accurately playing many games. This package contains the -Z64 RSP processor plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-video-arachnoid - (package - (name "mupen64plus-video-arachnoid") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("mesa" ,mesa) - ("mupen64plus-core" ,mupen64plus-core))) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; The mupen64plus build system has no configure phase. - (delete 'configure) - ;; Makefile is in a subdirectory. - (add-before - 'build 'cd-to-project-dir - (lambda _ - (chdir "projects/unix")))) - #:make-flags - (let ((out (assoc-ref %outputs "out")) - (m64p (assoc-ref %build-inputs "mupen64plus-core"))) - (list "all" - (string-append "PREFIX=" out) - (string-append "APIDIR=" m64p "/include/mupen64plus"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus Rice Video plugin") - (description - "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator -which is capable of accurately playing many games. This package contains the -Arachnoid video plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-video-glide64 - (package - (name "mupen64plus-video-glide64") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("mesa" ,mesa) - ("mupen64plus-core" ,mupen64plus-core) - ("sdl2" ,sdl2))) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; The mupen64plus build system has no configure phase. - (delete 'configure) - ;; Makefile is in a subdirectory. - (add-before - 'build 'cd-to-project-dir - (lambda _ - (chdir "projects/unix"))) - ;; XXX Should be unnecessary with the next release. - (add-before - 'build 'use-sdl2 - (lambda _ - (substitute* "Makefile" - (("SDL_CONFIG = (.*)sdl-config" all prefix) - (string-append "SDL_CONFIG = " prefix "sdl2-config")))))) - #:make-flags - (let ((out (assoc-ref %outputs "out")) - (m64p (assoc-ref %build-inputs "mupen64plus-core"))) - (list "all" - (string-append "PREFIX=" out) - (string-append "APIDIR=" m64p "/include/mupen64plus"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus Rice Video plugin") - (description - "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator -which is capable of accurately playing many games. This package contains the -Glide64 video plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-video-glide64mk2 - (package - (name "mupen64plus-video-glide64mk2") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("boost" ,boost) - ("libpng" ,libpng) - ("mesa" ,mesa) - ("mupen64plus-core" ,mupen64plus-core) - ("sdl2" ,sdl2) - ("zlib" ,zlib))) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; The mupen64plus build system has no configure phase. - (delete 'configure) - ;; Makefile is in a subdirectory. - (add-before - 'build 'cd-to-project-dir - (lambda _ - (chdir "projects/unix")))) - #:make-flags - (let ((out (assoc-ref %outputs "out")) - (m64p (assoc-ref %build-inputs "mupen64plus-core"))) - (list "all" - (string-append "PREFIX=" out) - (string-append "APIDIR=" m64p "/include/mupen64plus"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus Rice Video plugin") - (description - "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator -which is capable of accurately playing many games. This package contains the -Glide64MK2 video plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-video-rice - (package - (name "mupen64plus-video-rice") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-video-rice/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("libpng" ,libpng) - ("mesa" ,mesa) - ("mupen64plus-core" ,mupen64plus-core) - ("sdl2" ,sdl2))) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; The mupen64plus build system has no configure phase. - (delete 'configure) - ;; Makefile is in a subdirectory. - (add-before - 'build 'cd-to-project-dir - (lambda _ - (chdir "projects/unix")))) - #:make-flags - (let ((out (assoc-ref %outputs "out")) - (m64p (assoc-ref %build-inputs "mupen64plus-core"))) - (list "all" - (string-append "PREFIX=" out) - (string-append "APIDIR=" m64p "/include/mupen64plus"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus Rice Video plugin") - (description - "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator -which is capable of accurately playing many games. This package contains the -Rice Video plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-video-z64 - (package - (name "mupen64plus-video-z64") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-video-z64/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("glew" ,glew) - ("mupen64plus-core" ,mupen64plus-core) - ("sdl2" ,sdl2))) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; The mupen64plus build system has no configure phase. - (delete 'configure) - ;; Makefile is in a subdirectory. - (add-before - 'build 'cd-to-project-dir - (lambda _ - (chdir "projects/unix"))) - ;; XXX Should be unnecessary with the next release. - (add-before - 'build 'use-sdl2 - (lambda _ - (substitute* "Makefile" - (("SDL_CONFIG = (.*)sdl-config" all prefix) - (string-append "SDL_CONFIG = " prefix "sdl2-config")))))) - #:make-flags - (let ((out (assoc-ref %outputs "out")) - (m64p (assoc-ref %build-inputs "mupen64plus-core"))) - (list "all" - (string-append "PREFIX=" out) - (string-append "APIDIR=" m64p "/include/mupen64plus"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus Z64 video plugin") - (description - "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator -which is capable of accurately playing many games. This package contains the -Z64 video plugin.") - (license license:gpl2+))) - -(define-public mupen64plus-ui-console - (package - (name "mupen64plus-ui-console") - (version "2.5") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/mupen64plus/mupen64plus-ui-console/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2")) - (patches (search-patches "mupen64plus-ui-console-notice.patch")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("which" ,which))) - (inputs - `(("sdl2" ,sdl2))) - ;; Mupen64Plus supports a single data directory and a single plugin - ;; directory in its configuration, yet we need data and plugin files from - ;; a variety of packages. The best way to deal with this is to install - ;; all packages from which data and plugin files are needed into one's - ;; profile, and point the configuration there. Hence, propagate the most - ;; important packages here to save the user from the bother. The patch - ;; mupen64plus-ui-console-notice also gives users instructions on what - ;; they need to do in order to point the configuration to their profile. - (propagated-inputs - `(("mupen64plus-core" ,mupen64plus-core) - ("mupen64plus-audio-sdl" ,mupen64plus-audio-sdl) - ("mupen64plus-input-sdl" ,mupen64plus-input-sdl) - ("mupen64plus-rsp-hle" ,mupen64plus-rsp-hle) - ("mupen64plus-video-glide64" ,mupen64plus-video-glide64) - ("mupen64plus-video-glide64mk2" ,mupen64plus-video-glide64mk2) - ("mupen64plus-video-rice" ,mupen64plus-video-rice))) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; The mupen64plus build system has no configure phase. - (delete 'configure) - ;; Makefile is in a subdirectory. - (add-before - 'build 'cd-to-project-dir - (lambda _ - (chdir "projects/unix")))) - #:make-flags - (let ((out (assoc-ref %outputs "out")) - (m64p (assoc-ref %build-inputs "mupen64plus-core"))) - (list "all" - (string-append "PREFIX=" out) - (string-append "APIDIR=" m64p "/include/mupen64plus") - ;; Trailing slash matters here. - (string-append "COREDIR=" m64p "/lib/"))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://www.mupen64plus.org/") - (synopsis "Mupen64Plus SDL input plugin") - (description - "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator -which is capable of accurately playing many games. This package contains the -command line user interface. Installing this package is the easiest way -towards a working Mupen64Plus for casual users.") - (license license:gpl2+))) - -(define-public nestopia-ue - (package - (name "nestopia-ue") - (version "1.47") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/rdanbrook/nestopia/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1dzrrjmvyqks64q5l5pfly80jb6qcsbj5b3dm40fijd5xnpbapci")) - (modules '((guix build utils))) - (snippet - '(begin - ;; We don't need libretro for the GNU/Linux build. - (delete-file-recursively "libretro") - ;; Use system zlib. - (delete-file-recursively "source/zlib") - (substitute* "source/core/NstZlib.cpp" - (("#include \"../zlib/zlib.h\"") "#include <zlib.h>")))))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) - (inputs - `(("ao" ,ao) - ("glu" ,glu) - ("gtk+" ,gtk+) - ("libarchive" ,libarchive) - ("mesa" ,mesa) - ("sdl2" ,sdl2) - ("zlib" ,zlib))) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; The Nestopia build system consists solely of a Makefile. - (delete 'configure) - (add-before 'build 'remove-xdg-desktop-menu-call - (lambda _ - (substitute* "Makefile" - (("xdg-desktop-menu install .*") "")))) - (add-before 'build 'remove-gdkwayland-include - (lambda _ - (substitute* "source/unix/gtkui/gtkui.h" - (("#include <gdk/gdkwayland\\.h>") ""))))) - #:make-flags (let ((out (assoc-ref %outputs "out"))) - (list "CC=gcc" "CXX=g++" (string-append "PREFIX=" out))) - ;; There are no tests. - #:tests? #f)) - (home-page "http://0ldsk00l.ca/nestopia/") - (synopsis "Nintendo Entertainment System (NES/Famicom) emulator") - (description - "Nestopia UE (Undead Edition) is a fork of the Nintendo Entertainment -System (NES/Famicom) emulator Nestopia, with enhancements from members of the -emulation community. It provides highly accurate emulation.") - (license license:gpl2+))) - -(define-public emulation-station - (let ((commit "646bede3d9ec0acf0ae378415edac136774a66c5")) - (package - (name "emulation-station") - (version "2.0.1") - (source (origin - (method git-fetch) ; no tarball available - (uri (git-reference - (url "https://github.com/Aloshi/EmulationStation.git") - (commit commit))) ; no version tag - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v")))) - (build-system cmake-build-system) - (arguments - '(#:tests? #f)) ; no tests - (inputs - `(("alsa-lib" ,alsa-lib) - ("boost" ,boost) - ("curl" ,curl) - ("eigin" ,eigen) - ("freeimage" ,freeimage) - ("freetype" ,freetype) - ("mesa" ,mesa) - ("sdl2" ,sdl2))) - (synopsis "Video game console emulator front-end") - (description "EmulationStation provides a graphical front-end to a large -number of video game console emulators. It features an interface that is -usable with any game controller that has at least 4 buttons, theming support, -and a game metadata scraper.") - (home-page "http://www.emulationstation.org") - (license license:expat)))) - (define openttd-engine (package (name "openttd-engine") @@ -3055,39 +2316,6 @@ players.") (home-page "http://pio.sourceforge.net/") (license license:gpl2+))) -(define-public desmume - (package - (name "desmume") - (version "0.9.11") - (source - (origin - (method url-fetch) - (uri (string-append - "mirror://sourceforge/desmume/desmume/" - version "/desmume-" version ".tar.gz")) - (sha256 - (base32 - "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs")))) - (build-system gnu-build-system) - (arguments - ;; Enable support for WiFi and microphone. - `(#:configure-flags '("--enable-wifi" - "--enable-openal"))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("intltool" ,intltool))) - (inputs - `(("zlib" ,zlib) - ("sdl" ,sdl) - ("glib" ,glib) - ("gtk+" ,gtk+-2) - ("glu" ,glu))) - (home-page "http://desmume.org/") - (synopsis "Nintendo DS emulator") - (description - "DeSmuME is an emulator for the Nintendo DS handheld gaming console.") - (license license:gpl2))) - (define-public einstein (package (name "einstein") @@ -3343,155 +2571,6 @@ Red Eclipse provides fast paced and accessible gameplay.") license:cc-by3.0 license:cc0))))) -(define-public higan - (package - (name "higan") - (version "106") - (source - (origin - (method url-fetch) - (uri (string-append - "https://gitlab.com/higan/higan/repository/archive.tar.gz?ref=v" - version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0y42pra0dxzlbkyzcp3r8a39pji2bj3p9fl40425f60af2igr4rw")) - (patches (search-patches "higan-remove-march-native-flag.patch")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) - (inputs - `(("alsa-lib" ,alsa-lib) - ("ao" ,ao) - ("eudev" ,eudev) - ("gtk+" ,gtk+-2) - ("gtksourceview-2" ,gtksourceview-2) - ("libxv" ,libxv) - ("mesa" ,mesa) - ("openal" ,openal) - ("pulseaudio" ,pulseaudio) - ("sdl" ,sdl))) - (arguments - '(#:phases - (let ((build-phase (assoc-ref %standard-phases 'build)) - (install-phase (assoc-ref %standard-phases 'install))) - (modify-phases %standard-phases - ;; The higan build system has no configure phase. - (delete 'configure) - (add-before 'build 'chdir-to-higan - (lambda _ - (chdir "higan"))) - (add-before 'install 'create-/share/applications - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - ;; It seems the author forgot to do this in the Makefile. - (mkdir-p (string-append out "/share/applications"))))) - (add-after 'install 'chdir-to-icarus - (lambda _ - (chdir "../icarus"))) - (add-after 'chdir-to-icarus 'build-icarus build-phase) - (add-after 'build-icarus 'install-icarus install-phase) - (add-after 'install-icarus 'wrap-higan-executable - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (higan (string-append bin "/higan")) - (higan-original (string-append higan "-original")) - (bash (string-append (assoc-ref inputs "bash") - "/bin/bash")) - (coreutils (assoc-ref inputs "coreutils")) - (mkdir (string-append coreutils "/bin/mkdir")) - (cp (string-append coreutils "/bin/cp")) - (cp-r (string-append cp " -r --no-preserve=mode"))) - ;; First, have the executable make sure ~/.local/share/higan - ;; contains up to date files. Higan insists on looking there - ;; for these data files. - (rename-file higan higan-original) - (with-output-to-file higan - (lambda () - (display - (string-append - "#!" bash "\n" - ;; higan doesn't respect $XDG_DATA_HOME - mkdir " -p ~/.local/share\n" - cp-r " " out "/share/higan ~/.local/share\n" - "exec " higan-original)))) - (chmod higan #o555) - ;; Second, make sure higan will find icarus in PATH. - (wrap-program higan - `("PATH" ":" prefix (,bin)))))))) - #:make-flags - (list "compiler=g++" - (string-append "prefix=" (assoc-ref %outputs "out"))) - ;; There is no test suite. - #:tests? #f)) - (home-page "http://byuu.org/emulation/higan/") - (synopsis "Nintendo multi-system emulator") - (description - "higan (formerly bsnes) is an emulator for multiple Nintendo video game -consoles, including the Nintendo Entertainment System (NES/Famicom), Super -Nintendo Entertainment System (SNES/Super Famicom), Game Boy, Game Boy -Color (GBC), and Game Boy Advance (GBA). It also supports the subsystems -Super Game Boy, BS-X Satellaview, and Sufami Turbo.") - ;; As noted in these files among more: - ;; - icarus/icarus.cpp - ;; - higan/emulator/emulator.hpp - (license license:gpl3))) - -(define-public mgba - (package - (name "mgba") - (version "0.6.1") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/mgba-emu/mgba/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0xmq1q1j71hnpd49wm91cqq8w5zdhb921cm17jchp4qjmaqgwy3w")) - (modules '((guix build utils))) - (snippet - ;; Make sure we don't use the bundled software. - '(for-each - (lambda (subdir) - (let ((lib-subdir (string-append "src/third-party/" subdir))) - (delete-file-recursively lib-subdir))) - '("libpng" "lzma" "sqlite3" "zlib"))))) - (build-system cmake-build-system) - (arguments - `(#:tests? #f ;no "test" target - #:configure-flags - (list "-DUSE_LZMA=OFF" ;do not use bundled LZMA - "-DUSE_LIBZIP=OFF" ;use "zlib" instead - (string-append "-DCMAKE_INSTALL_LIBDIR=" - (assoc-ref %outputs "out") "/lib")))) - (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("ffmpeg" ,ffmpeg) - ("imagemagick" ,imagemagick) - ("libedit" ,libedit) - ("libepoxy" ,libepoxy) - ("libpng" ,libpng) - ("mesa" ,mesa) - ("minizip" ,minizip) - ("ncurses" ,ncurses) - ("qtbase" ,qtbase) - ("qtmultimedia" ,qtmultimedia) - ("qttools" ,qttools) - ("sdl2" ,sdl2) - ("sqlite" ,sqlite) - ("zlib" ,zlib))) - (home-page "https://mgba.io") - (synopsis "Game Boy Advance emulator") - (description - "mGBA is an emulator for running Game Boy Advance games. It aims to be -faster and more accurate than many existing Game Boy Advance emulators, as -well as adding features that other emulators lack. It also supports Game Boy -and Game Boy Color games.") - ;; Code is mainly MPL 2.0. "blip_buf.c" is LGPL 2.1+ and "inih.c" is - ;; BSD-3. - (license (list license:mpl2.0 license:lgpl2.1+ license:bsd-3)))) - (define-public grue-hunter (package (name "grue-hunter") diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm index d75416415c..9014cc3206 100644 --- a/gnu/packages/geo.scm +++ b/gnu/packages/geo.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> -;;; Copyright © 2017 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> +;;; Copyright © 2017, 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> @@ -43,6 +43,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages webkit) + #:use-module (gnu packages wxwidgets) #:use-module (gnu packages xml)) (define-public geos @@ -153,6 +154,36 @@ and driving.") (home-page "https://wiki.gnome.org/Apps/Maps") (license license:gpl2+))) +(define-public libgaiagraphics + (package + (name "libgaiagraphics") + (version "0.5") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.gaia-gis.it/gaia-sins/libgaiagraphics-" + version ".tar.gz")) + (sha256 + (base32 + "076afqv417ag3hfvnif0qc7qscmnq1dsf6y431yygwgf34rjkayc")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("cairo" ,cairo) + ("libpng" ,libpng) + ("libjepeg-turbo" ,libjpeg-turbo) + ("libtiff" ,libtiff) + ("libgeotiff" ,libgeotiff) + ("proj.4" ,proj.4) + ("libxml2" ,libxml2) + ("zlib" ,zlib))) + (synopsis "Gaia common graphics support") + (description "libgaiagraphics is a library supporting + common-utility raster handling methods.") + (home-page "https://www.gaia-gis.it/fossil/libgaiagraphics/index") + (license license:lgpl3+))) + (define-public libgeotiff (package (name "libgeotiff") @@ -202,6 +233,54 @@ writing GeoTIFF information tags.") (license:non-copyleft "file://LICENSE" "See LICENSE in the distribution."))))) +(define-public libspatialite + (package + (name "libspatialite") + (version "4.3.0a") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.gaia-gis.it/gaia-sins/libspatialite-" + version ".tar.gz")) + (sha256 + (base32 + "16d4lpl7xrm9zy4gphy6nwanpjp8wn9g4wq2i2kh8abnlhq01448")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("freexl" ,freexl) + ("geos" ,geos) + ("libxml2" ,libxml2) + ("proj.4" ,proj.4) + ("sqlite" ,sqlite) + ("zlib" ,zlib))) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; 3 tests are failing, ignore them: + (add-after 'unpack 'ignore-broken-tests + (lambda _ + (substitute* '("test/Makefile.in") + (("\tcheck_sql_stm.*" all) "\tcheck_multithread$(EXEEXT) \\\n") + (("(\tch.*) check_v.*ble2.*$" all vt1) (string-append vt1 " \\\n")) + (("\tch.* (check_v.*ble4.*)$" all vt4) (string-append "\t" vt4))) + #t))))) + (synopsis "Extend SQLite to support Spatial SQL capabilities") + (description + "SpatiaLite is a library intended to extend the SQLite core to support +fully fledged Spatial SQL capabilities.") + (home-page "https://www.gaia-gis.it/fossil/libspatialite/index") + ;; For the genuine libspatialite-sources holds: + ;; Any of the licenses MPL1.1, GPL2+ or LGPL2.1+ may be picked. + ;; Files under src/control_points are from GRASS + ;; and are licensed under GPL2+ only. + ;; src/md5.[ch]: Placed into the public domain by Alexander Peslyak. + (license (list license:gpl2+ + license:lgpl2.1+ + license:mpl1.1 + license:public-domain)))) + (define-public proj.4 (package (name "proj.4") @@ -378,3 +457,36 @@ development.") (synopsis "Python bindings for Mapnik") (description "This package provides Python bindings for Mapnik.") (license license:lgpl2.1+))) + +(define-public spatialite-gui + (package + (name "spatialite-gui") + (version "1.7.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.gaia-gis.it/gaia-sins/spatialite_gui-" + version ".tar.gz")) + (sha256 + (base32 + "1r05dz9pyc8vsd2wbqxcsracpfbaamz470rcyp2myfpqwznv376b")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("freexl" ,freexl) + ("geos" ,geos) + ("libgaiagraphics" ,libgaiagraphics) + ("libspatialite" ,libspatialite) + ("libxml2" ,libxml2) + ("proj.4" ,proj.4) + ("sqlite" ,sqlite) + ("wxwidgets" ,wxwidgets-2) + ("zlib" ,zlib))) + (synopsis "Graphical user interface for SpatiaLite") + (description "Spatialite-gui provides a visual interface for viewing and + maintaining a spatialite database. You can easily see the structure of the + tables and data contents using point and click functions, many of which + construct common SQL queries, or craft your own SQL queries.") + (home-page "https://www.gaia-gis.it/fossil/spatialite_gui/index") + (license license:gpl3+))) diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm index 51b772a586..f14ca27810 100644 --- a/gnu/packages/gettext.scm +++ b/gnu/packages/gettext.scm @@ -198,7 +198,7 @@ translated messages from the catalogs. Nearly all GNU packages use Gettext.") ("texlive" ,texlive-tiny) ;for tests ("libxml2" ,libxml2) ("xsltproc" ,libxslt))) - (home-page "http://po4a.alioth.debian.org/") + (home-page "https://po4a.org/") (synopsis "Scripts to ease maintenance of translations") (description "The po4a (PO for anything) project goal is to ease translations (and diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index cb65c9a286..6ce7fbc9b8 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -428,14 +428,14 @@ from software emulation to complete hardware acceleration for modern GPUs.") (define (mesa-demos-source version) (origin (method url-fetch) - (uri (string-append "ftp://ftp.freedesktop.org/pub/mesa/demos/" version + (uri (string-append "ftp://ftp.freedesktop.org/pub/mesa/demos" "/mesa-demos-" version ".tar.bz2")) - (sha256 (base32 "1vqb7s5m3fcg2csbiz45mha1pys2xx6rhw94fcyvapqdpm5iawy1")))) + (sha256 (base32 "0zgzbz55a14hz83gbmm0n9gpjnf5zadzi2kjjvkn6khql2a9rs81")))) (define-public mesa-utils (package (name "mesa-utils") - (version "8.3.0") + (version "8.4.0") (source (mesa-demos-source version)) (build-system gnu-build-system) (inputs diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index fcbb7f31a8..c45c821a91 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -2449,7 +2449,7 @@ libxml to ease remote use of the RESTful API.") (define-public libsoup (package (name "libsoup") - (version "2.60.2") + (version "2.60.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/libsoup/" @@ -2457,7 +2457,7 @@ libxml to ease remote use of the RESTful API.") name "-" version ".tar.xz")) (sha256 (base32 - "00fsy12mz9b55algq7c6gk4xj5j6a5z6dxcnq59fdqkji3hwyqvj")))) + "08lawrdkkzycvpb1h0wfiqfz6dgx77jp0wxp546lxgisy9icf38v")))) (build-system gnu-build-system) (outputs '("out" "doc")) (arguments diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 16685f6986..eeab5c5afd 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -214,14 +214,14 @@ compatible to GNU Pth.") (define-public gnupg (package (name "gnupg") - (version "2.2.4") + (version "2.2.5") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) (sha256 (base32 - "1v7j8v2ww1knknbrhw3svfrqkmf9ll58iq0dczbsdpqgg1j3w6j0")))) + "0mzgibq4dpxh3i9anmwg12xdjry28y83icafhx3j3djg5niqk89z")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 9052a34e96..93114d8e07 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -10,7 +10,7 @@ ;;; 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 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net> @@ -1091,29 +1091,28 @@ installed as @code{stb_image}.") (define-public optipng (package (name "optipng") - (version "0.7.6") + (version "0.7.7") (source (origin (method url-fetch) (uri (string-append "http://prdownloads.sourceforge.net/optipng/optipng-" version ".tar.gz")) - (patches (search-patches "optipng-CVE-2017-1000229.patch")) (sha256 (base32 - "105yk5qykvhiahzag67gm36s2kplxf6qn5hay02md0nkrcgn6w28")))) + "0lj4clb851fzpaq446wgj0sfy922zs5l5misbpwv6w7qrqrz4cjg")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib))) (arguments '(#:phases (modify-phases %standard-phases - ;; configure script does not accept arguments CONFIG_SHELL and SHELL (replace 'configure (lambda* (#:key outputs #:allow-other-keys) - (zero? (system* "sh" "configure" - (string-append "--prefix=" (assoc-ref outputs "out"))))))))) - (synopsis "Optimizer that recompresses PNG image files to a -smaller size") + ;; configure script doesn't accept arguments CONFIG_SHELL and SHELL + (invoke "sh" "configure" + (string-append "--prefix=" (assoc-ref outputs "out"))) + #t))))) + (synopsis "Optimizer that recompresses PNG image files to a smaller size") (description "OptiPNG is a PNG optimizer that recompresses image files to a smaller size, without losing any information. This program also converts external formats (BMP, GIF, PNM and TIFF) to optimized diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm index 8fe59679f8..aca2cab0a2 100644 --- a/gnu/packages/ldc.scm +++ b/gnu/packages/ldc.scm @@ -41,14 +41,14 @@ (define-public rdmd (package (name "rdmd") - (version "2.073.0") + (version "2.077.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/dlang/tools/archive/v" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "01if3ivnb7g2myfhymp4d9346s4vmvcl82i1kxfs5iza45almh7v")))) + "0c8w373rv6iz3xfid94w40ncv2lr2ncxi662qsr4lda4aghczmq7")))) (build-system gnu-build-system) (arguments '(#:phases @@ -58,7 +58,7 @@ (replace 'build (lambda _ - (zero? (system* "ldc2" "rdmd.d")))) + (invoke "ldc2" "rdmd.d"))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) @@ -77,7 +77,6 @@ and freshness without requiring additional information from the user.") (license license:boost1.0))) (define-public ldc-bootstrap - (let ((runtime-version "0.17.3")) (package (name "ldc") (version "0.17.4") @@ -92,6 +91,10 @@ and freshness without requiring additional information from the user.") "1kw0j378k6bh0k66dvx99bjq8ilp8bb24w3jrmibn8rhmqv0d5q8")))) (build-system cmake-build-system) (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux")) + (properties + ;; Some of the tests take a very long time on ARMv7. See + ;; <https://lists.gnu.org/archive/html/guix-devel/2018-02/msg00312.html>. + `((max-silent-time . ,(* 3600 3)))) (arguments `(#:phases (modify-phases %standard-phases @@ -120,12 +123,15 @@ and freshness without requiring additional information from the user.") (("echo") (which "echo"))) (substitute* "runtime/phobos/std/datetime.d" (("/usr/share/zoneinfo/") - (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))) + (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")) + (("tzName == \"[+]VERSION\"") + "(tzName == \"+VERSION\" || std.algorithm.endsWith(tzName, \"/leapseconds\"))")) (substitute* "tests/d2/dmd-testsuite/Makefile" (("/bin/bash") (which "bash"))) ;; FIXME: this test cannot be linked. (delete-file "tests/d2/dmd-testsuite/runnable/cppa.d") - #t))))) + ;; the following two tests fail on i686 + (for-each delete-file '("tests/ir/attributes.d" "tests/ir/align.d"))))))) (inputs `(("libconfig" ,libconfig) ("libedit" ,libedit) @@ -142,59 +148,51 @@ and freshness without requiring additional information from the user.") (method url-fetch) (uri (string-append "https://github.com/ldc-developers/phobos/archive/ldc-v" - runtime-version ".tar.gz")) + version ".tar.gz")) (sha256 (base32 - "0qywnvnp019mmmr74aw90ir9f03iz0hc7cgzna609agsar0b27jl")) - (patches (search-patches "ldc-disable-tests.patch")))) + "16x36kp46mqiihxx7jvr1d3mv3b96yfmhinb9lzinh2m4clr85wz")) + (patches (search-patches "ldc-bootstrap-disable-tests.patch")))) ("druntime-src" ,(origin (method url-fetch) (uri (string-append "https://github.com/ldc-developers/druntime/archive/ldc-v" - runtime-version ".tar.gz")) + version ".tar.gz")) (sha256 (base32 - "0z418n6x2fxac07sxpi4rl69069qiym4w6r9sjppn91q58qh8hjs")))) + "0iw2xxhcbsc5f1707dgdzhff528363l4faqdk513gaxs2dhfx8vx")))) ("dmd-testsuite-src" ,(origin (method url-fetch) (uri (string-append "https://github.com/ldc-developers/dmd-testsuite/archive/ldc-v" - runtime-version ".tar.gz")) + version ".tar.gz")) (sha256 (base32 - "196mkfax5y3yqm3gz7jhqhnkjwrvr2m4a8nc9k41l0511ldzsk9x")))))) - - (properties - ;; Some of the tests take a very long time on ARMv7. See - ;; <https://lists.gnu.org/archive/html/guix-devel/2018-02/msg00312.html>. - `((max-silent-time . ,(* 3600 3)))) - + "0z6ch930wjkg2vlnqkbliwxxxifad6ydsdpwdxwnajkb2kaxsjx4")))))) (home-page "http://wiki.dlang.org/LDC") (synopsis "LLVM compiler for the D programming language") (description - "LDC is a compiler for the D programming language. It is based on the -latest DMD frontend and uses LLVM as backend.") + "LDC is a compiler for the D programming language. It is based on +the latest DMD compiler that was written in C and is used for +bootstrapping more recent compilers written in D.") ;; Most of the code is released under BSD-3, except for code originally ;; written for GDC, which is released under GPLv2+, and the DMD frontend, ;; which is released under the "Boost Software License version 1.0". (license (list license:bsd-3 license:gpl2+ - license:boost1.0))))) + license:boost1.0)))) (define-public ldc - ;; 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")) + ;; Phobos, druntime and dmd-testsuite library dependencies do + ;; not always have a newer release than the compiler, hence we + ;; retain this variable. + (let ((older-version "1.7.0")) (package (inherit ldc-bootstrap) (name "ldc") - (version "1.1.1") - ;; Beta version needed to compile various scientific tools that require - ;; the newer beta versions, and won't compile successfully with the - ;; older stable version. + (version "1.7.0") (source (origin (method url-fetch) (uri (string-append @@ -203,7 +201,7 @@ latest DMD frontend and uses LLVM as backend.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0yjiwg8pnlm2286bwdkwasaqw6ys7lymrqvhh5xyb1adha1ndcav")))) + "0rqchmlbhz1pd8ksl1vfhfd5s3cp9h9pqi4k4w2np9sq0zr7abwn")))) (arguments `(#:phases (modify-phases %standard-phases @@ -217,20 +215,36 @@ latest DMD frontend and uses LLVM as backend.") (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" + (substitute* '("runtime/phobos/std/process.d" + "tests/linking/linker_switches.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))))) + (("/bin/bash") (which "bash"))) + ;; disable unittests in the following files. We are discussing with + ;; upstream + (substitute* '("runtime/phobos/std/net/curl.d" + "runtime/phobos/std/datetime/systime.d" + "runtime/phobos/std/datetime/timezone.d" + ) + (("version(unittest)") "version(skipunittest)") + ((" unittest") " version(skipunittest) unittest")) + ;; the following tests require a more recent LLVM + (delete-file "tests/compilable/ctfe_math.d") + (delete-file "tests/debuginfo/nested_gdb.d") + (delete-file "tests/debuginfo/classtypes_gdb.d") + ;; the following tests requires AVX instruction set in the CPU. + (substitute* "tests/d2/dmd-testsuite/runnable/test_cdvecfill.d" + (("^// DISABLED: ") "^// DISABLED: linux64 ")) + #t)) + (replace 'check + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; some tests call into gdb binary which needs SHELL and CC set + (setenv "SHELL" (which "sh")) + (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")) + (invoke "make" "test" "-j" (number->string (parallel-job-count)))))))) (native-inputs `(("llvm" ,llvm) ("clang" ,clang) @@ -247,7 +261,7 @@ latest DMD frontend and uses LLVM as backend.") older-version ".tar.gz")) (sha256 (base32 - "0z5v55b9s1ppf0c2ivjq7sbmq688c37c92ihc3qwrbxnqvkkvrlk")) + "042hn3v0zk353r0h6yclq56z86hi437y969bckyb2qsnv00h60hi")) ;; This patch deactivates some tests that depend on network access ;; to pass. It also deactivates some tests that have some reliance ;; on timezone. @@ -257,7 +271,7 @@ latest DMD frontend and uses LLVM as backend.") ;; 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")))) + (patches (search-patches "ldc-1.7.0-disable-phobos-tests.patch")))) ("druntime-src" ,(origin (method url-fetch) @@ -266,7 +280,7 @@ latest DMD frontend and uses LLVM as backend.") older-version ".tar.gz")) (sha256 (base32 - "07qvrqj6vgakd6qr4x5f70w6zwkzd1li5x8i1b5ywnds1z5lnfp6")))) + "0pvabk70zw8c1gbmvy2i486bg22bn0l5nbacjz0qwmhf0w9y9ylh")))) ("dmd-testsuite-src" ,(origin (method url-fetch) @@ -275,18 +289,12 @@ latest DMD frontend and uses LLVM as backend.") older-version ".tar.gz")) (sha256 (base32 - "12cak7yqmsgjlflx0dp6fwmwb9dac25amgi86n0bb95ard3547wy")) - ;; 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) + "1i8j1raah7b26bprwkdick443ivdsihgi1l14sn9rh4a95rnrpd9"))))))))) (define-public dub (package (name "dub") - (version "1.5.0") + (version "1.7.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/dlang/dub/archive/" @@ -294,7 +302,7 @@ latest DMD frontend and uses LLVM as backend.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1p9pmzjsmd7v3jpilv0z0c8ar1ykvri6nn5fv95f8d2vriczj29m")))) + "1jvr1mmq8j77wnsrsg7x2xv8yfljqd6x8gn6yy7dd6h6y3cf408q")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; it would have tested itself by installing some packages (vibe etc) @@ -303,7 +311,7 @@ latest DMD frontend and uses LLVM as backend.") (delete 'configure) ; no configure script (replace 'build (lambda _ - (zero? (system* "./build.sh")))) + (invoke "./build.sh"))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -317,10 +325,12 @@ latest DMD frontend and uses LLVM as backend.") (home-page "https://code.dlang.org/getting_started") (synopsis "Package and build manager for D projects") (description - "DUB is a package and build manager for applications and libraries written -in the D programming language. It can automatically retrieve a project's -dependencies and integrate them in the build process. + "DUB is a package and build manager for applications and +libraries written in the D programming language. It can +automatically retrieve a project's dependencies and integrate +them in the build process. -The design emphasis is on maximum simplicity for simple projects, while -providing the opportunity to customize things when needed. ") +The design emphasis is on maximum simplicity for simple projects, +while providing the opportunity to customize things when +needed.") (license license:expat))) diff --git a/gnu/packages/license.scm b/gnu/packages/license.scm new file mode 100644 index 0000000000..2ef2108df2 --- /dev/null +++ b/gnu/packages/license.scm @@ -0,0 +1,160 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> +;;; +;;; 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 license) + #:use-module (guix licenses) + #:use-module (gnu packages) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system perl) + #:use-module (gnu packages perl) + #:use-module (gnu packages perl-check)) + +;;; +;;; Please: Try to add new module packages in alphabetic order. +;;; + +(define-public perl-regexp-pattern-license + (package + (name "perl-regexp-pattern-license") + (version "3.1.0") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/J/JO/JONASS/Regexp-Pattern-License-" + "v" version ".tar.gz")) + (sha256 + (base32 + "1479ismcgq1mx712yhw0qswb4z75spc81f9k621vfpkji0smpyk2")))) + (build-system perl-build-system) + (native-inputs + `(("perl-regexp-pattern" ,perl-regexp-pattern) + ("perl-test-exception" ,perl-test-exception))) + (propagated-inputs + `(("perl-strictures" ,perl-strictures-2))) + (home-page "http://search.cpan.org/dist/Regexp-Pattern-License/") + (synopsis "Regular expressions for legal licenses") + (description "Regexp::Pattern::License provides a hash of regular +expression patterns related to legal software licenses. + +Regexp::Pattern is a convention for organizing reusable regex patterns.") + (license gpl3+))) + +(define-public perl-string-copyright + (package + (name "perl-string-copyright") + (version "0.003005") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/J/JO/JONASS/String-Copyright-" + version ".tar.gz")) + (sha256 + (base32 + "12c6x4c10gr46ryc3dpwgfi6wggmgy4a1ls2hwhcpdm3wvzy5619")))) + (build-system perl-build-system) + (native-inputs + `(("perl-number-range" ,perl-number-range))) + (propagated-inputs + `(("perl-exporter-tiny" ,perl-exporter-tiny))) + (home-page "http://search.cpan.org/dist/String-Copyright/") + (synopsis "Representation of text-based copyright statements") + (description "String::Copyright Parses common styles of copyright +statements and serializes in normalized format.") + (license gpl3+))) + +(define-public perl-software-license + (package + (name "perl-software-license") + (version "0.103013") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/L/LE/LEONT/Software-License-" + version ".tar.gz")) + (sha256 + (base32 + "1wqgh7vdlc966amlrq0b2szz18lnrl9rfh8wlf7v0hqg74vxjh96")))) + (build-system perl-build-system) + (native-inputs + `(("perl-try-tiny" ,perl-try-tiny))) + (propagated-inputs + `(("perl-data-section" ,perl-data-section) + ("perl-text-template" ,perl-text-template))) + (home-page "http://search.cpan.org/dist/Software-License/") + (synopsis "Templated software licenses") + (description "This package provides templated software licenses.") + (license (package-license perl)))) + +(define-public licensecheck + (package + (name "licensecheck") + (version "3.0.33") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/J/JO/JONASS/App-Licensecheck-" + "v" version ".tar.gz")) + (sha256 + (base32 + "0wydxb2jks1k3bxkcp7p0pazh5v3awbbcf6haplvwzkkayszhgs4")))) + (build-system perl-build-system) + (native-inputs + `(("perl-regexp-pattern" ,perl-regexp-pattern) + ("perl-software-license" ,perl-software-license) + ("perl-test-requires" ,perl-test-requires) + ("perl-test-roo" ,perl-test-roo) + ("perl-test-script" ,perl-test-script) + ("perl-universal-require" ,perl-universal-require) + ("perl-number-range" ,perl-number-range) + ("perl-sub-quote" ,perl-sub-quote))) + (propagated-inputs + `(("perl-getopt-long-descriptive" ,perl-getopt-long-descriptive) + ("perl-moo" ,perl-moo-2) + ("perl-namespace-clean" ,perl-namespace-clean) + ("perl-path-iterator-rule" ,perl-path-iterator-rule) + ("perl-path-tiny" ,perl-path-tiny) + ("perl-pod-constants" ,perl-pod-constants) + ("perl-regexp-pattern-license" ,perl-regexp-pattern-license) + ("perl-sort-key" ,perl-sort-key) + ("perl-strictures" ,perl-strictures-2) + ("perl-string-copyright" ,perl-string-copyright) + ("perl-string-escape" ,perl-string-escape) + ("perl-try-tiny" ,perl-try-tiny) + ("perl-module-runtime" ,perl-module-runtime))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (perllib (string-append out "/lib/perl5/site_perl/" + ,(package-version perl)))) + (wrap-program (string-append out "/bin/licensecheck") + `("PERL5LIB" ":" + prefix (,(string-append perllib ":" (getenv "PERL5LIB"))))) + #t)))))) + (home-page "http://search.cpan.org/dist/App-Licensecheck/") + (synopsis "License checker for source files") + (description "Licensecheck attempts to determine the license that applies +to each file passed to it, by searching the start of the file for text +belonging to various licenses.") + (license (package-license perl)))) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 6ee78b457e..09c84e2e10 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -383,8 +383,8 @@ It has been modified to remove all non-free binary blobs.") ;; supports qemu "virt" machine and possibly a large number of ARM boards. ;; See : https://wiki.debian.org/DebianKernel/ARMMP. -(define %linux-libre-version "4.15.4") -(define %linux-libre-hash "0dg5b2vgp2ph0l63cxyq6bz05hvc90wab05f8y3a8731c9xsxmzq") +(define %linux-libre-version "4.15.5") +(define %linux-libre-hash "1vrqya5zkhzl37fpj5v0v1igm7jf2gi13apkpak90l51xiw592cs") (define-public linux-libre (make-linux-libre %linux-libre-version @@ -392,8 +392,8 @@ It has been modified to remove all non-free binary blobs.") %linux-compatible-systems #:configuration-file kernel-config)) -(define %linux-libre-4.14-version "4.14.20") -(define %linux-libre-4.14-hash "1xc5g2kq3wpn6i61rpypnlb0f82f05b8jac2lg62rv4v46bsvfwv") +(define %linux-libre-4.14-version "4.14.21") +(define %linux-libre-4.14-hash "07d27mph514jxxkzil4b3c848ywfd4r4js0wl5wsfy7a3j757278") (define-public linux-libre-4.14 (make-linux-libre %linux-libre-4.14-version @@ -402,14 +402,14 @@ It has been modified to remove all non-free binary blobs.") #:configuration-file kernel-config)) (define-public linux-libre-4.9 - (make-linux-libre "4.9.82" - "1x2hbn2kf7ikgdiqwj2d6d0s1pa1xh4xywliyj3rfsilanny2ipw" + (make-linux-libre "4.9.83" + "09mw2r2fbn0g6xfhyxk0n54c7sg0vk9nlp7k2ca3v0v24n7lrfza" %intel-compatible-systems #:configuration-file kernel-config)) (define-public linux-libre-4.4 - (make-linux-libre "4.4.116" - "00y5xhgqiyf7ivivnphwvkjgszk8rzn4s8q3sgshswz3kdic55hj" + (make-linux-libre "4.4.117" + "1mlq9npyriwj0wpj24zah55bkxil31l182ypbn6b3x4yvmr8lhz0" %intel-compatible-systems #:configuration-file kernel-config)) @@ -1089,7 +1089,7 @@ external rate conversion.") (define-public iptables (package (name "iptables") - (version "1.6.1") + (version "1.6.2") (source (origin (method url-fetch) (uri (string-append @@ -1097,7 +1097,7 @@ external rate conversion.") version ".tar.bz2")) (sha256 (base32 - "1x8c9y340x79djsq54bc1674ryv59jfphrk4f88i7qbvbnyxghhg")))) + "0crp0lvh5m2f15pr8cw97h8yb8zjj10x95zj06j46cr68vx2vl2m")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -1111,14 +1111,17 @@ external rate conversion.") #:configure-flags ; add $libdir to the RUNPATH of executables (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")))) (home-page "https://www.netfilter.org/projects/iptables/index.html") - (synopsis "Program to configure the Linux IP packet filtering rules") + (synopsis "Programs to configure Linux IP packet filtering rules") (description - "iptables is the userspace command line program used to configure the -Linux 2.4.x and later IPv4 packet filtering ruleset (firewall). It is targeted at -system administrators. Since Network Address Translation is also configured -from the packet filter ruleset, iptables is used for this, too. The iptables -package also includes ip6tables. ip6tables is used for configuring the IPv6 -packet filter.") + "@command{iptables} is the user-space command line program used to +configure the Linux 2.4.x and later IPv4 packet filtering ruleset +(@dfn{firewall}), including @dfn{NAT} (Network Address Translation). + +This package also includes @command{ip6tables}, which is used to configure the +IPv6 packet filter. + +Both commands are targeted at system administrators. +") (license license:gpl2+))) (define-public ebtables diff --git a/gnu/packages/lout.scm b/gnu/packages/lout.scm index 1a1d0b3274..ac66b4ecfc 100644 --- a/gnu/packages/lout.scm +++ b/gnu/packages/lout.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,91 +25,81 @@ #:use-module (gnu packages ghostscript)) (define-public lout - ;; This one is a bit tricky, because it doesn't follow the GNU Build System - ;; rules. Instead, it has a makefile that has to be patched to set the - ;; prefix, etc., and it has no makefile rules to build its doc. - (let ((configure-phase - '(lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (doc (assoc-ref outputs "doc"))) - (substitute* "makefile" - (("^PREFIX[[:blank:]]*=.*$") - (string-append "PREFIX = " out "\n")) - (("^LOUTLIBDIR[[:blank:]]*=.*$") - (string-append "LOUTLIBDIR = " out "/lib/lout\n")) - (("^LOUTDOCDIR[[:blank:]]*=.*$") - (string-append "LOUTDOCDIR = " doc "/share/doc/lout\n")) - (("^MANDIR[[:blank:]]*=.*$") - (string-append "MANDIR = " out "/man\n"))) - (mkdir out) - (mkdir (string-append out "/bin")) - (mkdir (string-append out "/lib")) - (mkdir (string-append out "/man")) - (mkdir-p (string-append doc "/share/doc/lout"))))) - (install-man-phase - '(lambda* (#:key outputs #:allow-other-keys) - (zero? (system* "make" "installman")))) - (doc-phase - '(lambda* (#:key outputs #:allow-other-keys) - (define out - (assoc-ref outputs "doc")) - - (setenv "PATH" - (string-append (assoc-ref outputs "out") - "/bin:" (getenv "PATH"))) - (chdir "doc") - (every (lambda (doc) - (format #t "doc: building `~a'...~%" doc) - (with-directory-excursion doc - (let ((file (string-append out "/share/doc/lout/" - doc ".ps"))) - (and (or (file-exists? "outfile.ps") - (zero? (system* "lout" "-r4" "-o" - "outfile.ps" "all"))) - (begin - (copy-file "outfile.ps" file) - #t) - (zero? (system* "ps2pdf" - "-dPDFSETTINGS=/prepress" - "-sPAPERSIZE=a4" - file - (string-append out "/share/doc/lout/" - doc ".pdf"))))))) - '("design" "expert" "slides" "user"))))) - (package + (package (name "lout") (version "3.40") (source (origin - (method url-fetch) - (uri (string-append "mirror://savannah/lout/lout-" - version ".tar.gz")) - (sha256 - (base32 - "1gb8vb1wl7ikn269dd1c7ihqhkyrwk19jwx5kd0rdvbk6g7g25ix")))) - (build-system gnu-build-system) ; actually, just a makefile + (method url-fetch) + (uri (string-append "mirror://savannah/lout/lout-" + version ".tar.gz")) + (sha256 + (base32 + "1gb8vb1wl7ikn269dd1c7ihqhkyrwk19jwx5kd0rdvbk6g7g25ix")))) + (build-system gnu-build-system) ; actually, just a makefile (outputs '("out" "doc")) (native-inputs `(("ghostscript" ,ghostscript))) - (arguments `(#:modules ((guix build utils) - (guix build gnu-build-system) - (srfi srfi-1)) ; we need SRFI-1 - #:tests? #f ; no "check" target - - ;; Customize the build phases. - #:phases (alist-replace - 'configure ,configure-phase - - (alist-cons-after - 'install 'install-man-pages - ,install-man-phase - - (alist-cons-after - 'install 'install-doc - ,doc-phase - %standard-phases))))) + (arguments + `(#:modules ((guix build utils) + (guix build gnu-build-system) + (srfi srfi-1)) ; we need SRFI-1 + #:tests? #f ; no "check" target + #:phases + (modify-phases %standard-phases + ;; This package is a bit tricky, because it doesn't follow the GNU + ;; Build System rules. Instead, it has a makefile that has to be + ;; patched to set the prefix, etc., and it has no makefile rules to + ;; build its documentation. + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc"))) + (substitute* "makefile" + (("^PREFIX[[:blank:]]*=.*$") + (string-append "PREFIX = " out "\n")) + (("^LOUTLIBDIR[[:blank:]]*=.*$") + (string-append "LOUTLIBDIR = " out "/lib/lout\n")) + (("^LOUTDOCDIR[[:blank:]]*=.*$") + (string-append "LOUTDOCDIR = " doc "/share/doc/lout\n")) + (("^MANDIR[[:blank:]]*=.*$") + (string-append "MANDIR = " out "/man\n"))) + (mkdir out) + (mkdir (string-append out "/bin")) + (mkdir (string-append out "/lib")) + (mkdir (string-append out "/man")) + (mkdir-p (string-append doc "/share/doc/lout")) + #t))) + (add-after 'install 'install-man-pages + (lambda* (#:key outputs #:allow-other-keys) + (invoke "make" "installman") + #t)) + (add-after 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "doc"))) + (setenv "PATH" + (string-append (assoc-ref outputs "out") + "/bin:" (getenv "PATH"))) + (with-directory-excursion "doc" + (every (lambda (doc) + (format #t "doc: building `~a'...~%" doc) + (with-directory-excursion doc + (let ((file (string-append out "/share/doc/lout/" + doc ".ps"))) + (unless (file-exists? "outfile.ps") + (invoke "lout" "-r4" "-o" + "outfile.ps" "all")) + (copy-file "outfile.ps" file) + (invoke "ps2pdf" + "-dPDFSETTINGS=/prepress" + "-sPAPERSIZE=a4" + file + (string-append out "/share/doc/lout/" + doc ".pdf"))))) + '("design" "expert" "slides" "user"))) + #t)))))) (synopsis "Document layout system") (description -"The Lout document formatting system reads a high-level description of + "The Lout document formatting system reads a high-level description of a document similar in style to LaTeX and produces a PostScript or plain text output file. @@ -124,4 +115,4 @@ TeX macros because Lout is a high-level, purely functional language, the outcome of an eight-year research project that went back to the beginning.") (license gpl3+) - (home-page "https://savannah.nongnu.org/projects/lout/")))) + (home-page "https://savannah.nongnu.org/projects/lout/"))) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index d7e76ac3e5..6e8f9a74ae 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -907,7 +907,7 @@ and search library.") (define-public getmail (package (name "getmail") - (version "5.4") + (version "5.5") (source (origin (method url-fetch) @@ -915,7 +915,7 @@ and search library.") name "-" version ".tar.gz")) (sha256 (base32 - "1iwss9z94p165gxr2yw7s9q12a0bn71fcdbikzkykr5s7xxnz2ds")))) + "0l43lbnrnyyrq8mlnw37saq6v0mh3nkirdq1dwnsrihykzjjwf70")))) (build-system python-build-system) (arguments `(#:tests? #f ; no tests diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 0f87346ea9..25e1d5a312 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -3047,7 +3047,7 @@ specifications.") (define-public lpsolve (package (name "lpsolve") - (version "5.5.2.0") + (version "5.5.2.5") (source (origin (method url-fetch) @@ -3055,7 +3055,7 @@ specifications.") "/lp_solve_" version "_source.tar.gz")) (sha256 (base32 - "176c7f023mb6b8bfmv4rfqnrlw88lsg422ca74zjh19i2h5s69sq")) + "12pj1idjz31r7c2mb5w03vy1cmvycvbkx9z29s40qdmkp1i7q6i0")) (modules '((guix build utils))) (snippet '(substitute* (list "lp_solve/ccc" "lpsolve55/ccc") @@ -3073,16 +3073,17 @@ specifications.") (("isnan\\(0\\)") "isnan(0.)"))))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; no check target + `(#:tests? #f ; no check target #:phases (modify-phases %standard-phases - (delete 'configure) + (delete 'configure) ; no configure script (replace 'build (lambda _ - (and (with-directory-excursion "lpsolve55" - (zero? (system* "bash" "ccc"))) - (with-directory-excursion "lp_solve" - (zero? (system* "bash" "ccc")))))) + (with-directory-excursion "lpsolve55" + (invoke "bash" "ccc")) + (with-directory-excursion "lp_solve" + (invoke "bash" "ccc")) + #t)) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -3091,11 +3092,8 @@ specifications.") ;; This is where LibreOffice expects to find the header ;; files, and where they are installed by Debian. (include (string-append out "/include/lpsolve"))) - (mkdir-p lib) - (copy-file "lpsolve55/bin/ux64/liblpsolve55.a" - (string-append lib "/liblpsolve55.a")) - (copy-file "lpsolve55/bin/ux64/liblpsolve55.so" - (string-append lib "/liblpsolve55.so")) + (install-file "lpsolve55/bin/ux64/liblpsolve55.a" lib) + (install-file "lpsolve55/bin/ux64/liblpsolve55.so" lib) (install-file "lp_solve/bin/ux64/lp_solve" bin) ;; Install a subset of the header files as on Debian @@ -3437,14 +3435,14 @@ supports compressed MAT files, as well as newer (version 7.3) MAT files.") (define-public vc (package (name "vc") - (version "1.2.0") + (version "1.3.3") (source (origin (method url-fetch) (uri (string-append "https://github.com/VcDevel/Vc/releases/" "download/" version "/Vc-" version ".tar.gz")) (sha256 (base32 - "1rh6dhqar3y07n4xqyml0sa0v48qv3ch9dc3yc2in855hlh4vnqi")))) + "1zmlpn32jzb38smp3j834llmbix3whsrbw0h397qxysbw792kih8")))) (build-system cmake-build-system) (arguments '(#:configure-flags diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index ac1fe51f15..1b06de2360 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com> ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> -;;; Copyright © 2016 Leo Famulari <leo@famulari.name> +;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. @@ -56,16 +56,16 @@ (define-public libmpdclient (package (name "libmpdclient") - (version "2.13") + (version "2.14") (source (origin (method url-fetch) (uri - (string-append "http://musicpd.org/download/libmpdclient/" + (string-append "https://musicpd.org/download/libmpdclient/" (car (string-split version #\.)) "/libmpdclient-" version ".tar.xz")) (sha256 (base32 - "0pflbv2jzik7yxnacci1iqs0awy1i5ipwn67xk0hg9r0pi9bs5ai")))) + "0whk0qw0lsd3kaimdznz0c45bfym0p4885zf4b7pfc7y3dwy510a")))) (build-system meson-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -88,16 +88,16 @@ interfacing MPD in the C, C++ & Objective C languages.") (define-public mpd (package (name "mpd") - (version "0.20.15") + (version "0.20.17") (source (origin (method url-fetch) (uri - (string-append "http://musicpd.org/download/mpd/" + (string-append "https://musicpd.org/download/mpd/" (version-major+minor version) "/mpd-" version ".tar.xz")) (sha256 (base32 - "0h7bm561i8p0bjp1hy8fsiy5zj7db24zyv6ypfihwf35wrklz766")))) + "1hfssmvp4wmy7zh4bl4zv2zqwiddsy77v69w9fh61pqrwbqfgc1c")))) (build-system gnu-build-system) (arguments `(#:phases @@ -162,17 +162,17 @@ protocol.") (define-public mpd-mpc (package (name "mpd-mpc") - (version "0.28") + (version "0.29") (source (origin (method url-fetch) (uri - (string-append "http://www.musicpd.org/download/mpc/" + (string-append "https://www.musicpd.org/download/mpc/" (car (string-split version #\.)) "/mpc-" version ".tar.xz")) (sha256 (base32 - "0iy5mdffkk61255f62si7p8mhyhkib70zlr1i1iimj2xr037scx4")))) - (build-system gnu-build-system) + "1lxr0z5i5yx4lcvy9nyxj6q32qlz473j3zm6va68zd1cj3ndmw82")))) + (build-system meson-build-system) (inputs `(("libmpdclient" ,libmpdclient))) (native-inputs `(("pkg-config" ,pkg-config))) (synopsis "Music Player Daemon client") diff --git a/gnu/packages/musl.scm b/gnu/packages/musl.scm index 7c78d29385..ff789b8c6f 100644 --- a/gnu/packages/musl.scm +++ b/gnu/packages/musl.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,14 +28,14 @@ (define-public musl (package (name "musl") - (version "1.1.18") + (version "1.1.19") (source (origin (method url-fetch) (uri (string-append "http://www.musl-libc.org/releases/" name "-" version ".tar.gz")) (sha256 (base32 - "0651lnj5spckqjf83nz116s8qhhydgqdy3rkl4icbh5f05fyw5yh")))) + "1nf1wh44bhm8gdcfr75ayib29b99vpq62zmjymrq7f96h9bshnfv")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; Musl has no tests @@ -43,7 +44,7 @@ (synopsis "Small C standard library") (description "musl is a simple and lightweight C standard library. It strives to be correct in the sense of standards-conformance and safety.") - (home-page "http://www.musl-libc.org") + (home-page "https://www.musl-libc.org") ;; Musl as a whole is released under the Expat license. Parts of it are ;; derived from various third-party projects that are released under ;; non-copyleft licenses. See the COPYRIGHT file for details. diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index bb5b74005a..cd3f4f124b 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -1584,21 +1584,20 @@ displays the results in real time.") (define-public strongswan (package (name "strongswan") - (version "5.6.1") + (version "5.6.2") (source (origin (method url-fetch) (uri (string-append "https://download.strongswan.org/strongswan-" version ".tar.bz2")) (sha256 - (base32 "0lxbyiary8iapx3ysw40czrmxf983fhfzs5mvz2hk1j1mpc85hp0")))) + (base32 "14ifqay54brw2b2hbmm517bxw8bs9631d7jm4g139igkxcq0m9p0")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-before 'build 'adjust-to-environment + (add-before 'build 'patch-command-file-names (lambda* (#:key inputs #:allow-other-keys) - ;; Adjust file names. (substitute* "src/libstrongswan/utils/process.c" (("/bin/sh") (string-append (assoc-ref inputs "bash") "/bin/sh"))) @@ -1607,8 +1606,9 @@ displays the results in real time.") (("/bin/sh") (which "sh")) (("/bin/echo") (which "echo")) (("cat") (which "cat"))) - - ;; This is needed for tests. + #t)) + (add-before 'check 'set-up-test-environment + (lambda* (#:key inputs #:allow-other-keys) (setenv "TZDIR" (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")) #t))) diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index 95f0d6227a..17423856aa 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -47,7 +47,7 @@ (define-public parallel (package (name "parallel") - (version "20180122") + (version "20180222") (source (origin (method url-fetch) @@ -55,7 +55,7 @@ version ".tar.bz2")) (sha256 (base32 - "1wkbppb4mc56grl6jsp803sf0hm7mg5ff7qmxalp7sd0vxqw41p9")))) + "1bwx1rcrqz04d8fajlllhrfkjqxg0mfvsd86wf6p067gmgdrf6g8")))) (build-system gnu-build-system) (arguments `(#:phases diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 67e9379f89..f83c05a25b 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> -;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> +;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org> ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> @@ -342,7 +342,8 @@ any X11 window.") name "-" version ".tar.xz")) (sha256 (base32 - "0scqkpll2q8jhzcgcsh9kqz0gwdpvynivqjmmbzax2irjfaiklpn")))) + "0scqkpll2q8jhzcgcsh9kqz0gwdpvynivqjmmbzax2irjfaiklpn")) + (patches (search-patches "password-store-gnupg-compat.patch")))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/patches/htop-fix-process-tree.patch b/gnu/packages/patches/htop-fix-process-tree.patch new file mode 100644 index 0000000000..d8e5e2ccac --- /dev/null +++ b/gnu/packages/patches/htop-fix-process-tree.patch @@ -0,0 +1,99 @@ +From 2971a187551e062ffefdab965f55377b36cd94eb Mon Sep 17 00:00:00 2001 +From: Tobias Geerinckx-Rice <me@tobias.gr> +Date: Wed, 21 Feb 2018 06:00:50 +0100 +Subject: [PATCH] Fix process tree +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This manually reverts: + + commit 584a9bceab948590dabd189d234a86e6bf4ec3f4 + Author: wangqr <wangqr@wangqr.tk> + Date: Fri Sep 1 21:27:24 2017 +0800 + + Find roots when constructing process tree, fix #587 + +which breaks the process tree (‘t’) view in at least some cases. +I will investigate further... +--- + ProcessList.c | 63 +++++++++++++++++------------------------------------------ + 1 file changed, 18 insertions(+), 45 deletions(-) + +diff --git a/ProcessList.c b/ProcessList.c +index 48b2d95..225253d 100644 +--- a/ProcessList.c ++++ b/ProcessList.c +@@ -213,51 +213,24 @@ void ProcessList_sort(ProcessList* this) { + // Restore settings + this->settings->sortKey = sortKey; + this->settings->direction = direction; +- int vsize = Vector_size(this->processes); +- // Find all processes whose parent is not visible +- int size; +- while ((size = Vector_size(this->processes))) { +- int i; +- for (i = 0; i < size; i++) { +- Process* process = (Process*)(Vector_get(this->processes, i)); +- // Immediately consume not shown processes +- if (!process->show) { +- process = (Process*)(Vector_take(this->processes, i)); +- process->indent = 0; +- Vector_add(this->processes2, process); +- ProcessList_buildTree(this, process->pid, 0, 0, direction, false); +- break; +- } +- pid_t ppid = process->tgid == process->pid ? process->ppid : process->tgid; +- // Bisect the process vector to find parent +- int l = 0, r = size; +- // If PID corresponds with PPID (e.g. "kernel_task" (PID:0, PPID:0) +- // on Mac OS X 10.11.6) cancel bisecting and regard this process as +- // root. +- if (process->pid == ppid) +- r = 0; +- while (l < r) { +- int c = (l + r) / 2; +- pid_t pid = ((Process*)(Vector_get(this->processes, c)))->pid; +- if (ppid == pid) { +- break; +- } else if (ppid < pid) { +- r = c; +- } else { +- l = c + 1; +- } +- } +- // If parent not found, then construct the tree with this root +- if (l >= r) { +- process = (Process*)(Vector_take(this->processes, i)); +- process->indent = 0; +- Vector_add(this->processes2, process); +- ProcessList_buildTree(this, process->pid, 0, 0, direction, process->showChildren); +- break; +- } +- } +- // There should be no loop in the process tree +- assert(i < size); ++ ++ // Take PID 1 as root and add to the new listing ++ int vsize = Vector_size(this->processes); ++ Process* init = (Process*) (Vector_take(this->processes, 0)); ++ if (!init) return; ++ // This assertion crashes on hardened kernels. ++ // I wonder how well tree view works on those systems. ++ // assert(init->pid == 1); ++ init->indent = 0; ++ Vector_add(this->processes2, init); ++ // Recursively empty list ++ ProcessList_buildTree(this, init->pid, 0, 0, direction, true); ++ // Add leftovers ++ while (Vector_size(this->processes)) { ++ Process* p = (Process*) (Vector_take(this->processes, 0)); ++ p->indent = 0; ++ Vector_add(this->processes2, p); ++ ProcessList_buildTree(this, p->pid, 0, 0, direction, p->showChildren); + } + assert(Vector_size(this->processes2) == vsize); (void)vsize; + assert(Vector_size(this->processes) == 0); +-- +2.16.2 + diff --git a/gnu/packages/patches/ldc-1.1.0-disable-dmd-tests.patch b/gnu/packages/patches/ldc-1.1.0-disable-dmd-tests.patch deleted file mode 100644 index 31eb44aefc..0000000000 --- a/gnu/packages/patches/ldc-1.1.0-disable-dmd-tests.patch +++ /dev/null @@ -1,35 +0,0 @@ -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} diff --git a/gnu/packages/patches/ldc-1.1.0-disable-phobos-tests.patch b/gnu/packages/patches/ldc-1.1.0-disable-phobos-tests.patch deleted file mode 100644 index 70dd419455..0000000000 --- a/gnu/packages/patches/ldc-1.1.0-disable-phobos-tests.patch +++ /dev/null @@ -1,414 +0,0 @@ -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")) diff --git a/gnu/packages/patches/ldc-1.7.0-disable-phobos-tests.patch b/gnu/packages/patches/ldc-1.7.0-disable-phobos-tests.patch new file mode 100644 index 0000000000..ccc136cc76 --- /dev/null +++ b/gnu/packages/patches/ldc-1.7.0-disable-phobos-tests.patch @@ -0,0 +1,88 @@ +diff --git a/std/path.d b/std/path.d +index a9f0bd8..f47d103 100644 +--- a/std/path.d ++++ b/std/path.d +@@ -4041,7 +4041,7 @@ version(unittest) import std.process : environment; + else version (Android) + { + } +- else ++ else version (HasRoot) + { + assert(expandTilde("~root") == "/root", expandTilde("~root")); + assert(expandTilde("~root/") == "/root/", expandTilde("~root/")); + +diff --git a/std/process.d b/std/process.d +index df83296..d921cdb 100644 +--- a/std/process.d ++++ b/std/process.d +@@ -1171,7 +1171,7 @@ version (Posix) @system unittest + assert(exists(buildPath(directory, "bar"))); + } + +-@system unittest // Specifying a bad working directory. ++@system version(skipunittest) unittest // Specifying a bad working directory. + { + import std.exception : assertThrown; + TestScript prog = "/bin/echo"; +diff --git a/std/socket.d b/std/socket.d +index 8a261d5..c1b87b6 100644 +--- a/std/socket.d ++++ b/std/socket.d +@@ -484,7 +484,7 @@ class Protocol + // Skip this test on Android because getprotobyname/number are + // unimplemented in bionic. + version(CRuntime_Bionic) {} else +-@safe unittest ++@safe version(hasNetwork) unittest + { + softUnittest({ + Protocol proto = new Protocol; +@@ -804,7 +804,7 @@ class InternetHost + } + + /// +-@safe unittest ++@safe version(hasNetwork) unittest + { + InternetHost ih = new InternetHost; + +@@ -959,7 +959,7 @@ AddressInfo[] getAddressInfo(T...)(in char[] node, T options) + return () @trusted { return getAddressInfoImpl(node, service, &hints); }(); + } + +-@system unittest ++@system version(hasNetwork) unittest + { + struct Oops + { +@@ -1010,7 +1010,7 @@ private AddressInfo[] getAddressInfoImpl(in char[] node, in char[] service, addr + } + + +-@safe unittest ++@safe version(hasNetwork) unittest + { + softUnittest({ + if (getaddrinfoPointer) +diff --git a/std/stdio.d b/std/stdio.d +index 10106a5..4b0590e 100644 +--- a/std/stdio.d ++++ b/std/stdio.d +@@ -1426,8 +1426,7 @@ Removes the lock over the specified file segment. + g.unlock(); + } + +- version(Posix) +- @system unittest ++ @system version(skip) unittest + { + static import std.file; + auto deleteme = testFilename(); +@@ -1483,7 +1482,6 @@ Removes the lock over the specified file segment. + f.unlock(); + } + +- + /** + Writes its arguments in text format to the file. diff --git a/gnu/packages/patches/ldc-disable-tests.patch b/gnu/packages/patches/ldc-bootstrap-disable-tests.patch index bdd6e5b76c..d2e40b8016 100644 --- a/gnu/packages/patches/ldc-disable-tests.patch +++ b/gnu/packages/patches/ldc-bootstrap-disable-tests.patch @@ -4,17 +4,17 @@ two others use networking. Not bad out of almost 700 tests! by Pjotr Prins <pjotr.guix@thebird.nl> ---- a/std/datetime.d.orig 2016-11-24 01:13:52.584495545 +0100 -+++ b/std/datetime.d 2016-11-24 01:17:09.655306728 +0100 +--- a/std/datetime.d.orig 2016-11-24 01:13:52.584495545 +0100 ++++ b/std/datetime.d 2016-11-24 01:17:09.655306728 +0100 @@ -28081,22 +28081,24 @@ import std.range : retro; import std.format : format; - + - name = strip(name); - enforce(tzDatabaseDir.exists(), new DateTimeException(format("Directory %s does not exist.", tzDatabaseDir))); enforce(tzDatabaseDir.isDir, new DateTimeException(format("%s is not a directory.", tzDatabaseDir))); - + version(Android) { + name = strip(name); @@ -29,11 +29,11 @@ by Pjotr Prins <pjotr.guix@thebird.nl> + auto filename = "./" ~ strip(name); // make sure the prefix is not stripped + immutable file = buildNormalizedPath(tzDatabaseDir, filename); + } - + - enforce(file.exists(), new DateTimeException(format("File %s does not exist.", file))); + enforce(file.exists(), new DateTimeException(format("File %s does not exist in %s.", file, tzDatabaseDir))); enforce(file.isFile, new DateTimeException(format("%s is not a file.", file))); - + auto tzFile = File(file); diff --git a/std/path.d b/std/path.d index 254d8f0..b0fc04d 100644 @@ -56,13 +56,13 @@ index b85d1c9..7fbf346 100644 --- a/std/socket.d +++ b/std/socket.d @@ -859,6 +862,8 @@ class InternetHost - + unittest { + pragma(msg, "test disabled on GNU Guix"); + /* InternetHost ih = new InternetHost; - + ih.getHostByAddr(0x7F_00_00_01); @@ -889,6 +894,7 @@ unittest // writefln("aliases[%d] = %s", i, s); @@ -70,5 +70,3 @@ index b85d1c9..7fbf346 100644 }); + */ } - - diff --git a/gnu/packages/patches/optipng-CVE-2017-1000229.patch b/gnu/packages/patches/optipng-CVE-2017-1000229.patch deleted file mode 100644 index 2cb3b2f21c..0000000000 --- a/gnu/packages/patches/optipng-CVE-2017-1000229.patch +++ /dev/null @@ -1,22 +0,0 @@ -Fix CVE-2017-1000229: - -https://security-tracker.debian.org/tracker/CVE-2017-1000229 -https://people.canonical.com/~ubuntu-security/cve/2017/CVE-2017-1000229.html -https://nvd.nist.gov/vuln/detail/CVE-2017-1000229 - -Patch copied from upstream bug tracker: -https://sourceforge.net/p/optipng/bugs/65/ - -diff --git a/src/minitiff/tiffread.c b/src/minitiff/tiffread.c -index b4910ec..5f9b376 100644 ---- a/src/minitiff/tiffread.c -+++ b/src/minitiff/tiffread.c -@@ -350,6 +350,8 @@ minitiff_read_info(struct minitiff_info *tiff_ptr, FILE *fp) - count = tiff_ptr->strip_offsets_count; - if (count == 0 || count > tiff_ptr->height) - goto err_invalid; -+ if (count > (size_t)-1 / sizeof(long)) -+ goto err_memory; - tiff_ptr->strip_offsets = (long *)malloc(count * sizeof(long)); - if (tiff_ptr->strip_offsets == NULL) - goto err_memory; diff --git a/gnu/packages/patches/password-store-gnupg-compat.patch b/gnu/packages/patches/password-store-gnupg-compat.patch new file mode 100644 index 0000000000..75c6362021 --- /dev/null +++ b/gnu/packages/patches/password-store-gnupg-compat.patch @@ -0,0 +1,28 @@ +Copied from upstream mailing list: +https://lists.zx2c4.com/pipermail/password-store/2018-February/003216.html. + +From 9b0c86159d754cc88dd3642564eed527153dfb7f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Cl=C3=A9ment=20Lassieur?= <clement@lassieur.org> +Date: Sat, 24 Feb 2018 12:05:46 +0100 +Subject: [PATCH] tests: fix compatibility with GnuPG 2.2.5 + +--- + tests/t0300-reencryption.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/t0300-reencryption.sh b/tests/t0300-reencryption.sh +index 6d5811d..6d15364 100755 +--- a/tests/t0300-reencryption.sh ++++ b/tests/t0300-reencryption.sh +@@ -10,7 +10,7 @@ canonicalize_gpg_keys() { + $GPG --list-keys --with-colons "$@" | sed -n 's/sub:[^:]*:[^:]*:[^:]*:\([^:]*\):[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[a-zA-Z]*e[a-zA-Z]*:.*/\1/p' | LC_ALL=C sort -u + } + gpg_keys_from_encrypted_file() { +- $GPG -v --no-secmem-warning --no-permission-warning --decrypt --list-only --keyid-format long "$1" 2>&1 | cut -d ' ' -f 5 | LC_ALL=C sort -u ++ $GPG -v --no-secmem-warning --no-permission-warning --decrypt --list-only --keyid-format long "$1" 2>&1 | grep "public key is" | cut -d ' ' -f 5 | LC_ALL=C sort -u + } + gpg_keys_from_group() { + local output="$($GPG --list-config --with-colons | sed -n "s/^cfg:group:$1:\\(.*\\)/\\1/p" | head -n 1)" +-- +2.16.2 + diff --git a/gnu/packages/patches/qemu-CVE-2017-15038.patch b/gnu/packages/patches/qemu-CVE-2017-15038.patch deleted file mode 100644 index 4791a186bf..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-15038.patch +++ /dev/null @@ -1,51 +0,0 @@ -Fix CVE-2017-15038: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-15038 - -Patch copied from upstream source repository: - -https://git.qemu.org/?p=qemu.git;a=commitdiff;h=7bd92756303f2158a68d5166264dc30139b813b6 - -From 7bd92756303f2158a68d5166264dc30139b813b6 Mon Sep 17 00:00:00 2001 -From: Prasad J Pandit <pjp@fedoraproject.org> -Date: Mon, 16 Oct 2017 14:21:59 +0200 -Subject: [PATCH] 9pfs: use g_malloc0 to allocate space for xattr - -9p back-end first queries the size of an extended attribute, -allocates space for it via g_malloc() and then retrieves its -value into allocated buffer. Race between querying attribute -size and retrieving its could lead to memory bytes disclosure. -Use g_malloc0() to avoid it. - -Reported-by: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi> -Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> -Signed-off-by: Greg Kurz <groug@kaod.org> ---- - hw/9pfs/9p.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c -index 23ac7bb532..f8bbac251d 100644 ---- a/hw/9pfs/9p.c -+++ b/hw/9pfs/9p.c -@@ -3234,7 +3234,7 @@ static void coroutine_fn v9fs_xattrwalk(void *opaque) - xattr_fidp->fid_type = P9_FID_XATTR; - xattr_fidp->fs.xattr.xattrwalk_fid = true; - if (size) { -- xattr_fidp->fs.xattr.value = g_malloc(size); -+ xattr_fidp->fs.xattr.value = g_malloc0(size); - err = v9fs_co_llistxattr(pdu, &xattr_fidp->path, - xattr_fidp->fs.xattr.value, - xattr_fidp->fs.xattr.len); -@@ -3267,7 +3267,7 @@ static void coroutine_fn v9fs_xattrwalk(void *opaque) - xattr_fidp->fid_type = P9_FID_XATTR; - xattr_fidp->fs.xattr.xattrwalk_fid = true; - if (size) { -- xattr_fidp->fs.xattr.value = g_malloc(size); -+ xattr_fidp->fs.xattr.value = g_malloc0(size); - err = v9fs_co_lgetxattr(pdu, &xattr_fidp->path, - &name, xattr_fidp->fs.xattr.value, - xattr_fidp->fs.xattr.len); --- -2.15.0 - diff --git a/gnu/packages/patches/qemu-CVE-2017-15289.patch b/gnu/packages/patches/qemu-CVE-2017-15289.patch deleted file mode 100644 index d4b536a405..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-15289.patch +++ /dev/null @@ -1,66 +0,0 @@ -Fix CVE-2017-15289: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-15289 - -Patch copied from upstream source repository: - -https://git.qemu.org/?p=qemu.git;a=commitdiff;h=eb38e1bc3740725ca29a535351de94107ec58d51 - -From eb38e1bc3740725ca29a535351de94107ec58d51 Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann <kraxel@redhat.com> -Date: Wed, 11 Oct 2017 10:43:14 +0200 -Subject: [PATCH] cirrus: fix oob access in mode4and5 write functions - -Move dst calculation into the loop, so we apply the mask on each -interation and will not overflow vga memory. - -Cc: Prasad J Pandit <pjp@fedoraproject.org> -Reported-by: Niu Guoxiang <niuguoxiang@huawei.com> -Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> -Message-id: 20171011084314.21752-1-kraxel@redhat.com ---- - hw/display/cirrus_vga.c | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - -diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c -index b4d579857a..bc32bf1e39 100644 ---- a/hw/display/cirrus_vga.c -+++ b/hw/display/cirrus_vga.c -@@ -2038,15 +2038,14 @@ static void cirrus_mem_writeb_mode4and5_8bpp(CirrusVGAState * s, - unsigned val = mem_value; - uint8_t *dst; - -- dst = s->vga.vram_ptr + (offset &= s->cirrus_addr_mask); - for (x = 0; x < 8; x++) { -+ dst = s->vga.vram_ptr + ((offset + x) & s->cirrus_addr_mask); - if (val & 0x80) { - *dst = s->cirrus_shadow_gr1; - } else if (mode == 5) { - *dst = s->cirrus_shadow_gr0; - } - val <<= 1; -- dst++; - } - memory_region_set_dirty(&s->vga.vram, offset, 8); - } -@@ -2060,8 +2059,8 @@ static void cirrus_mem_writeb_mode4and5_16bpp(CirrusVGAState * s, - unsigned val = mem_value; - uint8_t *dst; - -- dst = s->vga.vram_ptr + (offset &= s->cirrus_addr_mask); - for (x = 0; x < 8; x++) { -+ dst = s->vga.vram_ptr + ((offset + 2 * x) & s->cirrus_addr_mask & ~1); - if (val & 0x80) { - *dst = s->cirrus_shadow_gr1; - *(dst + 1) = s->vga.gr[0x11]; -@@ -2070,7 +2069,6 @@ static void cirrus_mem_writeb_mode4and5_16bpp(CirrusVGAState * s, - *(dst + 1) = s->vga.gr[0x10]; - } - val <<= 1; -- dst += 2; - } - memory_region_set_dirty(&s->vga.vram, offset, 16); - } --- -2.15.0 - diff --git a/gnu/packages/patches/wavpack-CVE-2018-7253.patch b/gnu/packages/patches/wavpack-CVE-2018-7253.patch new file mode 100644 index 0000000000..651755afd0 --- /dev/null +++ b/gnu/packages/patches/wavpack-CVE-2018-7253.patch @@ -0,0 +1,29 @@ +Fix CVE-2018-7253: +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7253 + +Copied from upstream: +https://github.com/dbry/WavPack/commit/36a24c7881427d2e1e4dc1cef58f19eee0d13aec + +diff --git a/cli/dsdiff.c b/cli/dsdiff.c +index 410dc1c..c016df9 100644 +--- a/cli/dsdiff.c ++++ b/cli/dsdiff.c +@@ -153,7 +153,17 @@ int ParseDsdiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpa + error_line ("dsdiff file version = 0x%08x", version); + } + else if (!strncmp (dff_chunk_header.ckID, "PROP", 4)) { +- char *prop_chunk = malloc ((size_t) dff_chunk_header.ckDataSize); ++ char *prop_chunk; ++ ++ if (dff_chunk_header.ckDataSize < 4 || dff_chunk_header.ckDataSize > 1024) { ++ error_line ("%s is not a valid .DFF file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ ++ if (debug_logging_mode) ++ error_line ("got PROP chunk of %d bytes total", (int) dff_chunk_header.ckDataSize); ++ ++ prop_chunk = malloc ((size_t) dff_chunk_header.ckDataSize); + + if (!DoReadFile (infile, prop_chunk, (uint32_t) dff_chunk_header.ckDataSize, &bcount) || + bcount != dff_chunk_header.ckDataSize) { diff --git a/gnu/packages/patches/wavpack-CVE-2018-7254.patch b/gnu/packages/patches/wavpack-CVE-2018-7254.patch new file mode 100644 index 0000000000..61db296ec8 --- /dev/null +++ b/gnu/packages/patches/wavpack-CVE-2018-7254.patch @@ -0,0 +1,62 @@ +Fix CVE-2018-7254: +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7254 + +Copied from upstream: +https://github.com/dbry/WavPack/commit/8e3fe45a7bac31d9a3b558ae0079e2d92a04799e + +diff --git a/cli/caff.c b/cli/caff.c +index ae57c4b..6248a71 100644 +--- a/cli/caff.c ++++ b/cli/caff.c +@@ -89,8 +89,8 @@ typedef struct + + #define CAFChannelDescriptionFormat "LLLLL" + +-static const char TMH_full [] = { 1,2,3,13,9,10,5,6,12,14,15,16,17,9,4,18,7,8,19,20,21 }; +-static const char TMH_std [] = { 1,2,3,11,8,9,5,6,10,12,13,14,15,7,4,16 }; ++static const char TMH_full [] = { 1,2,3,13,9,10,5,6,12,14,15,16,17,9,4,18,7,8,19,20,21,0 }; ++static const char TMH_std [] = { 1,2,3,11,8,9,5,6,10,12,13,14,15,7,4,16,0 }; + + static struct { + uint32_t mChannelLayoutTag; // Core Audio layout, 100 - 146 in high word, num channels in low word +@@ -274,10 +274,19 @@ int ParseCaffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack + } + } + else if (!strncmp (caf_chunk_header.mChunkType, "chan", 4)) { +- CAFChannelLayout *caf_channel_layout = malloc ((size_t) caf_chunk_header.mChunkSize); ++ CAFChannelLayout *caf_channel_layout; + +- if (caf_chunk_header.mChunkSize < sizeof (CAFChannelLayout) || +- !DoReadFile (infile, caf_channel_layout, (uint32_t) caf_chunk_header.mChunkSize, &bcount) || ++ if (caf_chunk_header.mChunkSize < sizeof (CAFChannelLayout) || caf_chunk_header.mChunkSize > 1024) { ++ error_line ("this .CAF file has an invalid 'chan' chunk!"); ++ return WAVPACK_SOFT_ERROR; ++ } ++ ++ if (debug_logging_mode) ++ error_line ("'chan' chunk is %d bytes", (int) caf_chunk_header.mChunkSize); ++ ++ caf_channel_layout = malloc ((size_t) caf_chunk_header.mChunkSize); ++ ++ if (!DoReadFile (infile, caf_channel_layout, (uint32_t) caf_chunk_header.mChunkSize, &bcount) || + bcount != caf_chunk_header.mChunkSize) { + error_line ("%s is not a valid .CAF file!", infilename); + free (caf_channel_layout); +@@ -495,8 +504,15 @@ int ParseCaffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack + } + else { // just copy unknown chunks to output file + +- int bytes_to_copy = (uint32_t) caf_chunk_header.mChunkSize; +- char *buff = malloc (bytes_to_copy); ++ uint32_t bytes_to_copy = (uint32_t) caf_chunk_header.mChunkSize; ++ char *buff; ++ ++ if (caf_chunk_header.mChunkSize < 0 || caf_chunk_header.mChunkSize > 1048576) { ++ error_line ("%s is not a valid .CAF file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ ++ buff = malloc (bytes_to_copy); + + if (debug_logging_mode) + error_line ("extra unknown chunk \"%c%c%c%c\" of %d bytes", diff --git a/gnu/packages/perl-check.scm b/gnu/packages/perl-check.scm index c04344a70b..110ba45d3d 100644 --- a/gnu/packages/perl-check.scm +++ b/gnu/packages/perl-check.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2017 Petter <petter@mykolab.ch> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -409,6 +410,28 @@ exception based code. It is built with Test::Builder and plays happily with Test::More and friends.") (license perl-license))) +(define-public perl-test-failwarnings + (package + (name "perl-test-failwarnings") + (version "0.008") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/D/DA/DAGOLDEN/Test-FailWarnings-" + version ".tar.gz")) + (sha256 + (base32 + "0vx9chcp5x8m0chq574p9fnfckh5gl94j7904rh9v17n568fyd6s")))) + (build-system perl-build-system) + (native-inputs + `(("perl-capture-tiny" ,perl-capture-tiny))) + (home-page "http://search.cpan.org/dist/Test-FailWarnings/") + (synopsis "Add test failures if warnings are caught") + (description + "Test::FailWarnings adds test failures if warnings are caught.") + (license asl2.0))) + (define-public perl-test-fatal (package (name "perl-test-fatal") @@ -456,6 +479,28 @@ testing exception-throwing code with about the same amount of typing.") for testing.") (license perl-license))) +(define-public perl-test-filename + (package + (name "perl-test-filename") + (version "0.03") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/D/DA/DAGOLDEN/Test-Filename-" + version ".tar.gz")) + (sha256 + (base32 + "1gpw4mjw68gnby8s4cifvbz6g2923xsc189jkw9d27i8qv20qiba")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-path-tiny" ,perl-path-tiny))) + (home-page "http://search.cpan.org/dist/Test-Filename/") + (synopsis "Portable filename comparison") + (description "Test::Filename provides functions to convert all path +separators automatically.") + (license asl2.0))) + (define-public perl-test-files (package (name "perl-test-files") @@ -928,6 +973,34 @@ cannot connect to the specified hosts and ports, the exception is caught and reported, and the tests skipped.") (license perl-license))) +(define-public perl-test-roo + (package + (name "perl-test-roo") + (version "1.004") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/D/DA/DAGOLDEN/Test-Roo-" + version ".tar.gz")) + (sha256 + (base32 + "1mnym49j1lj7gzylma5b6nr4vp75rmgz2v71904v01xmxhy9l4i1")))) + (build-system perl-build-system) + (native-inputs + `(("perl-capture-tiny" ,perl-capture-tiny))) + (propagated-inputs + `(("perl-indirect" ,perl-indirect) + ("perl-moo" ,perl-moo) + ("perl-moox-types-mooselike" ,perl-moox-types-mooselike) + ("perl-multidimensional" ,perl-multidimensional) + ("perl-strictures" ,perl-strictures) + ("perl-sub-install" ,perl-sub-install))) + (home-page "http://search.cpan.org/dist/Test-Roo/") + (synopsis "Composable, reusable tests with roles and Moo") + (description "Test::Roo provides composable, reusable tests with roles.") + (license asl2.0))) + (define-public perl-test-script (package (name "perl-test-script") diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 5a2fc6a6bb..cef42847c6 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -18,6 +18,7 @@ ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org> +;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,6 +36,7 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages perl) + #:use-module (srfi srfi-1) #:use-module (guix licenses) #:use-module (gnu packages) #:use-module (guix packages) @@ -343,6 +345,31 @@ autovivification for some constructs and optionally throws a warning or an error when it would have happened.") (license (package-license perl)))) +(define-public perl-bareword-filehandles + (package + (name "perl-bareword-filehandles") + (version "0.005") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/I/IL/ILMARI/bareword-filehandles-" + version ".tar.gz")) + (sha256 + (base32 + "0fdirls2pg7d6ymvlzzz59q3dy6hgh08k0qpr2mw51w127s8rav6")))) + (build-system perl-build-system) + (native-inputs + `(("perl-b-hooks-op-check" ,perl-b-hooks-op-check) + ("perl-extutils-depends" ,perl-extutils-depends))) + (propagated-inputs + `(("perl-b-hooks-op-check" ,perl-b-hooks-op-check) + ("perl-lexical-sealrequirehints" ,perl-lexical-sealrequirehints))) + (home-page "http://search.cpan.org/dist/bareword-filehandles/") + (synopsis "Disables bareword filehandles") + (description "This module disables bareword filehandles.") + (license (package-license perl)))) + (define-public perl-base (package (name "perl-base") @@ -409,6 +436,27 @@ all known commands are checked.") compiling the surrounding scope.") (license (package-license perl)))) +(define-public perl-b-hooks-op-check + (package + (name "perl-b-hooks-op-check") + (version "0.22") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/E/ET/ETHER/B-Hooks-OP-Check-" + version ".tar.gz")) + (sha256 + (base32 + "1kfdv25gn6yik8jrwik4ajp99gi44s6idcvyyrzhiycyynzd3df7")))) + (build-system perl-build-system) + (native-inputs + `(("perl-extutils-depends" ,perl-extutils-depends))) + (home-page "http://search.cpan.org/dist/B-Hooks-OP-Check/") + (synopsis "Wrap OP check callbacks") + (description "This module allows you to wrap OP check callbacks.") + (license (package-license perl)))) + (define-public perl-b-keywords (package (name "perl-b-keywords") @@ -1812,6 +1860,32 @@ an \"unless\" regular expression. If the text in question matches the like split on newlines unless newlines are embedded in quotes.") (license (package-license perl)))) +(define-public perl-data-section + (package + (name "perl-data-section") + (version "0.200007") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/R/RJ/RJBS/Data-Section-" + version + ".tar.gz")) + (sha256 + (base32 + "1pmlxca0a8sv2jjwvhwgqavq6iwys6kf457lby4anjp3f1dpx4yd")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-failwarnings" ,perl-test-failwarnings))) + (propagated-inputs + `(("perl-mro-compat" ,perl-mro-compat) + ("perl-sub-exporter" ,perl-sub-exporter))) + (home-page "http://search.cpan.org/dist/Data-Section/") + (synopsis "Read multiple hunks of data out of your DATA section") + (description "This package provides a Perl library to read multiple hunks +of data out of your DATA section.") + (license (package-license perl)))) + (define-public perl-data-stag (package (name "perl-data-stag") @@ -3003,6 +3077,30 @@ and alternative installers with the `installler` option. But it's written in only about 40% as many lines of code and with zero non-core dependencies.") (license (package-license perl)))) +(define-public perl-extutils-depends + (package + (name "perl-extutils-depends") + (version "0.405") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/X/XA/XAOC/ExtUtils-Depends-" + version + ".tar.gz")) + (sha256 + (base32 + "0b4ab9qmcihsfs2ajhn5qzg7nhazr68v3r0zvb7076smswd41mla")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-number-delta" + ,perl-test-number-delta))) + (home-page "http://search.cpan.org/dist/ExtUtils-Depends/") + (synopsis "Easily build XS extensions that depend on XS extensions") + (description "ExtUtils::Depends builds XS extensions that depend on XS +extensions") + (license (package-license perl)))) + (define-public perl-extutils-installpaths (package (name "perl-extutils-installpaths") @@ -3857,6 +3955,26 @@ dependencies for CPAN distributions. These dependencies get bundled into the inc directory within a distribution and are used by Makefile.PL or Build.PL.") (license asl2.0))) +(define-public perl-indirect + (package + (name "perl-indirect") + (version "0.38") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/V/VP/VPIT/indirect-" + version ".tar.gz")) + (sha256 + (base32 + "13k5a8p903m8x3pcv9qqkzvnb8gpgq36cr3dvn3lk1ngsi9w5ydy")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/indirect/") + (synopsis "Lexically warn about using the indirect method call syntax") + (description + "Indirect warns about using the indirect method call syntax.") + (license (package-license perl)))) + (define-public perl-io-captureoutput (package (name "perl-io-captureoutput") @@ -4175,6 +4293,29 @@ either uses the first module it finds or throws an error.") versa.") (license (package-license perl)))) +(define-public perl-lexical-sealrequirehints + (package + (name "perl-lexical-sealrequirehints") + (version "0.011") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/Z/ZE/ZEFRAM/Lexical-SealRequireHints-" + version + ".tar.gz")) + (sha256 + (base32 + "0fh1arpr0hsj7skbn97yfvbk22pfcrpcvcfs15p5ss7g338qx4cy")))) + (build-system perl-build-system) + (native-inputs + `(("perl-module-build" ,perl-module-build))) + (home-page "http://search.cpan.org/dist/Lexical-SealRequireHints/") + (synopsis "Prevent leakage of lexical hints") + (description + "Lexical::SealRequireHints prevents leakage of lexical hints") + (license (package-license perl)))) + (define-public perl-log-any (package (name "perl-log-any") @@ -4980,6 +5121,37 @@ that avoids the details of Perl's object system. Moo contains a subset of Moose and is optimised for rapid startup.") (license (package-license perl)))) +;; Some packages don't yet work with this newer version of ‘Moo’. +(define-public perl-moo-2 + (package + (inherit perl-moo) + (name "perl-moo-2") + (version "2.003004") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/" + "Moo-" version ".tar.gz")) + (sha256 + (base32 + "1qciprcgb4661g2g4ks0fxkx5gbjvn7h9yfg0nzflqz9z0jvdfzq")))) + (propagated-inputs + `(("perl-role-tiny" ,perl-role-tiny-2) + ("perl-sub-name" ,perl-sub-name) + ("perl-sub-quote" ,perl-sub-quote) + ("perl-strictures" ,perl-strictures-2) + ,@(alist-delete "perl-strictures" + (alist-delete "perl-role-tiny" + (package-propagated-inputs perl-moo))))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'configure 'set-perl-search-path + (lambda _ + ;; Use perl-strictures for testing. + (setenv "MOO_FATAL_WARNINGS" "=1") + #t))))))) + (define-public perl-moose (package (name "perl-moose") @@ -5853,6 +6025,32 @@ Certificate Authority certificates in a form that can be consumed by modules and libraries based on OpenSSL.") (license mpl2.0))) +(define-public perl-multidimensional + (package + (name "perl-multidimensional") + (version "0.013") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/I/IL/ILMARI/multidimensional-" + version ".tar.gz")) + (sha256 + (base32 + "02p5zv68i39hnkmzzxsk1fi7xy56pfcsslrd7yqwzhq74czcw81x")))) + (build-system perl-build-system) + (native-inputs + `(("perl-b-hooks-op-check" ,perl-b-hooks-op-check) + ("perl-extutils-depends" ,perl-extutils-depends))) + (propagated-inputs + `(("perl-b-hooks-op-check" ,perl-b-hooks-op-check) + ("perl-lexical-sealrequirehints" ,perl-lexical-sealrequirehints))) + (home-page "http://search.cpan.org/dist/multidimensional/") + (synopsis "Disable multidimensional array emulation") + (description + "Multidimensional disables multidimensional array emulation.") + (license (package-license perl)))) + (define-public perl-mro-compat (package (name "perl-mro-compat") @@ -6025,6 +6223,26 @@ collector daemon in use at Etsy.com.") subroutine, which you can call with a value to be tested against.") (license (package-license perl)))) +(define-public perl-number-range + (package + (name "perl-number-range") + (version "0.12") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/L/LA/LARRYSH/Number-Range-" + version ".tar.gz")) + (sha256 + (base32 + "0999xvs3w2xprs14q4shqndjf2m6mzvhzdljgr61ddjaqhd84gj3")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Number-Range/") + (synopsis "Perl extension defining ranges of numbers") + (description "Number::Range is an object-oriented interface to test if a +number exists in a given range, and to be able to manipulate the range.") + (license (package-license perl)))) + (define-public perl-object-signature (package (name "perl-object-signature") @@ -6626,6 +6844,20 @@ and @code{deserialize_regexp}.") (description "Role::Tiny is a minimalist role composition tool.") (license (package-license perl)))) +;; Some packages don't yet work with this newer version of ‘Role::Tiny’. +(define-public perl-role-tiny-2 + (package + (inherit perl-role-tiny) + (version "2.000006") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/" + "Role-Tiny-" version ".tar.gz")) + (sha256 + (base32 + "10p3sc639c0nj56bb77a2wg8samyyl8sqpliv3n8c0jaj2642wyc")))))) + (define-public perl-safe-isa (package (name "perl-safe-isa") @@ -6865,6 +7097,20 @@ on the length of the size.") run from within a source-controlled directory.") (license (package-license perl)))) +;; Some packages don't yet work with this newer version of ‘strictures’. +(define-public perl-strictures-2 + (package + (inherit perl-strictures) + (version "2.000003") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/" + "strictures-" version ".tar.gz")) + (sha256 + (base32 + "08mgvf1d2651gsg3jgjfs13878ndqa4ji8vfsda9f7jjd84ymy17")))))) + (define-public perl-string-camelcase (package (name "perl-string-camelcase") @@ -6894,6 +7140,28 @@ run from within a source-controlled directory.") CamelCase and back again.") (license (package-license perl)))) +(define-public perl-string-escape + (package + (name "perl-string-escape") + (version "2010.002") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/E/EV/EVO/String-Escape-" + version ".tar.gz")) + (sha256 + (base32 + "12ls7f7847i4qcikkp3skwraqvjphjiv2zxfhl5d49326f5myr7x")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/String-Escape/") + (synopsis "Backslash escapes, quoted phrase, word elision, etc.") + (description "This module provides a flexible calling interface to some +frequently-performed string conversion functions, including applying and +expanding standard C/Unix-style backslash escapes like \n and \t, wrapping and +removing double-quotes, and truncating to fit within a desired length.") + (license (package-license perl)))) + (define-public perl-string-rewriteprefix (package (name "perl-string-rewriteprefix") @@ -7069,6 +7337,30 @@ specification is omitted in the name, then the current package is used. The return value is the sub.") (license (package-license perl)))) +(define-public perl-sub-quote + (package + (name "perl-sub-quote") + (version "2.004000") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/H/HA/HAARG/Sub-Quote-" + version ".tar.gz")) + (sha256 + (base32 + "1zrh3apxsw1ks25zkh9dcn00656rsvq4mimqz3w8p37s2c1m4qaq")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-fatal" ,perl-test-fatal))) + (propagated-inputs + `(("perl-sub-name" ,perl-sub-name))) + (home-page "http://search.cpan.org/dist/Sub-Quote/") + (synopsis "Efficient generation of subroutines via string eval") + (description "Sub::Quote provides an efficient generation of subroutines +via string eval.") + (license (package-license perl)))) + (define-public perl-sub-uplevel (package (name "perl-sub-uplevel") @@ -8331,6 +8623,27 @@ UNIVERSAL::can() as a function, which it is not.") UNIVERSAL::isa as a function.") (license (package-license perl)))) +(define-public perl-universal-require + (package + (name "perl-universal-require") + (version "0.18") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/N/NE/NEILB/UNIVERSAL-require-" + version ".tar.gz")) + (sha256 + (base32 + "1v9qdg80ng6dzyzs7cn8sb6mn8ym042i32lcnpd478b7g6l3d9xj")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/UNIVERSAL-require/") + (synopsis "Require modules from a variable") + (description "This module lets you require other modules where the module +name is in a variable, something you can't do with the @code{require} +built-in.") + (license (package-license perl)))) + (define-public perl-variable-magic (package (name "perl-variable-magic") @@ -8817,3 +9130,101 @@ till 5pm\" and \"on the second Tuesday of the month\" and \"between 4pm and 4:15pm\" and \"in the first half of each minute\" and \"in January of 1998\".") (license perl-license))) + +(define-public perl-path-iterator-rule + (package + (name "perl-path-iterator-rule") + (version "1.012") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/D/DA/DAGOLDEN/Path-Iterator-Rule-" + version ".tar.gz")) + (sha256 + (base32 + "1z76avwvwgv4bw28kzx79mmb4449s5l345sn0wljq3dbf4wqigd1")))) + (build-system perl-build-system) + (native-inputs + `(("perl-file-pushd" ,perl-file-pushd) + ("perl-path-tiny" ,perl-path-tiny) + ("perl-test-deep" ,perl-test-deep) + ("perl-test-filename" ,perl-test-filename))) + (propagated-inputs + `(("perl-number-compare" ,perl-number-compare) + ("perl-text-glob" ,perl-text-glob) + ("perl-try-tiny" ,perl-try-tiny))) + (home-page "http://search.cpan.org/dist/Path-Iterator-Rule/") + (synopsis "Iterative, recursive file finder") + (description "Path::Iterator::Rule iterates over files and directories to +identify ones matching a user-defined set of rules. The API is based heavily +on File::Find::Rule, but with more explicit distinction between matching rules +and options that influence how directories are searched. A +Path::Iterator::Rule object is a collection of rules (match criteria) with +methods to add additional criteria. Options that control directory traversal +are given as arguments to the method that generates an iterator. + +A summary of features for comparison to other file finding modules: + +@itemize +@item provides many helper methods for specifying rules +@item offers (lazy) iterator and flattened list interfaces +@item custom rules implemented with callbacks +@item breadth-first (default) or pre- or post-order depth-first searching +@item follows symlinks (by default, but can be disabled) +@item directories visited only once (no infinite loop; can be disabled) +@item doesn't chdir during operation +@item provides an API for extensions +@end itemize + +As a convenience, the PIR module is an empty subclass of this one that is less +arduous to type for one-liners.") + (license asl2.0))) + +(define-public perl-pod-constants + (package + (name "perl-pod-constants") + (version "0.19") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/M/MG/MGV/Pod-Constants-" + version ".tar.gz")) + (sha256 + (base32 + "1njgr2zly9nrwvfrjhgk9dqq48as1pmbb2rs4bh3irvla75v7azg")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Pod-Constants/") + (synopsis "Include constants from POD") + (description "This module allows you to specify those constants that +should be documented in your POD, and pull them out a run time in a fairly +arbitrary fashion. + +Pod::Constants uses Pod::Parser to do the parsing of the source file. It has +to open the source file it is called from, and does so directly either by +lookup in %INC or by assuming it is $0 if the caller is @code{main} +(or it can't find %INC{caller()}).") + (license artistic2.0))) + +(define-public perl-regexp-pattern + (package + (name "perl-regexp-pattern") + (version "0.1.4") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/P/PE/PERLANCAR/Regexp-Pattern-" + version ".tar.gz")) + (sha256 + (base32 + "0rwpl6dxd1yl2ng3d4jdy68jz3mggmdl35rphrw1x619sm1aa876")))) + (build-system perl-build-system) + (native-inputs + `(("perl-test-exception" ,perl-test-exception))) + (home-page "http://search.cpan.org/dist/Regexp-Pattern/") + (synopsis "Collection of regexp patterns") + (description "Regexp::Pattern is a convention for organizing reusable +regexp patterns in modules.") + (license (package-license perl)))) diff --git a/gnu/packages/pumpio.scm b/gnu/packages/pumpio.scm index e89418b6b1..b8741520f0 100644 --- a/gnu/packages/pumpio.scm +++ b/gnu/packages/pumpio.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,7 +31,7 @@ (define-public pumpa (package (name "pumpa") - (version "0.9.2") + (version "0.9.3") (source (origin (method git-fetch) ; no source tarballs (uri (git-reference @@ -38,7 +39,7 @@ (commit (string-append "v" version)))) (sha256 (base32 - "09www29s4ldvd6apr73w7r4nmq93rcl2d182fylwgfcnncbvpy8s")) + "14072vis539zjgryjr5a77j2cprxii5znyg3p01qbb11lijk9nj7")) (file-name (string-append name "-" version "-checkout")))) (build-system gnu-build-system) (arguments @@ -57,7 +58,7 @@ ;; Run qmake with proper installation prefix. (let ((prefix (string-append "PREFIX=" (assoc-ref outputs "out")))) - (zero? (system* "qmake" prefix))) + (invoke "qmake" prefix)) #t))))) (inputs `(("aspell" ,aspell) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 3e410b0a51..d2c2c0b266 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -12756,14 +12756,14 @@ and other tools.") (define-public bpython (package (name "bpython") - (version "0.17") + (version "0.17.1") (source (origin (method url-fetch) (uri (pypi-uri "bpython" version)) (sha256 (base32 - "1mbah208jhd7bsfaa17fwpi55f7fvif0ghjwgrjmpmx8w1vqab9l")))) + "0bxhxi5zxdkrf8b4gwn0d363kdz3qnypjwhm1aydki53ph8ca1w9")))) (build-system python-build-system) (arguments `(#:phases diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index 396006b27a..5ea7858a89 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -303,14 +303,14 @@ destructors. It is the core memory allocator used in Samba.") (define-public tevent (package (name "tevent") - (version "0.9.35") + (version "0.9.36") (source (origin (method url-fetch) (uri (string-append "https://www.samba.org/ftp/tevent/tevent-" version ".tar.gz")) (sha256 (base32 - "1s8nbkmqz8dzdlsd6qynhvyl05pw93r151f3i2kgjfpbck9ak8r5")))) + "0k1v4vnlzpf7h3p4khaw8a7damrc68g136bf2xzys08nzpinnaxx")))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index d5286b312e..8947509cb1 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> ;;; Copyright © 2017 John Darrington <jmd@gnu.org> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> -;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -90,37 +90,37 @@ (modify-phases %standard-phases (replace 'unpack (lambda* (#:key inputs #:allow-other-keys) - (and (zero? (system* "tar" "xzvf" - (assoc-ref inputs "source"))) - (chdir ,(mit-scheme-source-directory (%current-system) - version)) - (begin - ;; Delete these dangling symlinks since they break - ;; `patch-shebangs'. - (for-each delete-file - (append '("src/lib/shim-config.scm") - (find-files "src/lib/lib" "\\.so$") - (find-files "src/lib" "^liarc-") - (find-files "src/compiler" "^make\\."))) - (chdir "src") - #t)))) + (invoke "tar" "xzvf" + (assoc-ref inputs "source")) + (chdir ,(mit-scheme-source-directory (%current-system) + version)) + ;; Delete these dangling symlinks since they break + ;; `patch-shebangs'. + (for-each delete-file + (append '("src/lib/shim-config.scm") + (find-files "src/lib/lib" "\\.so$") + (find-files "src/lib" "^liarc-") + (find-files "src/compiler" "^make\\."))) + (chdir "src") + #t)) (replace 'build (lambda* (#:key system outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (if (or (string-prefix? "x86_64" system) (string-prefix? "i686" system)) - (zero? (system* "make" "compile-microcode")) - (zero? (system* "./etc/make-liarc.sh" - (string-append "--prefix=" out))))))) + (invoke "make" "compile-microcode") + (invoke "./etc/make-liarc.sh" + (string-append "--prefix=" out))) + #t))) (add-after 'configure 'configure-doc (lambda* (#:key outputs inputs #:allow-other-keys) (with-directory-excursion "../doc" (let* ((out (assoc-ref outputs "out")) (bash (assoc-ref inputs "bash")) (bin/sh (string-append bash "/bin/sh"))) - (system* bin/sh "./configure" - (string-append "--prefix=" out) - (string-append "SHELL=" bin/sh)) + (invoke bin/sh "./configure" + (string-append "--prefix=" out) + (string-append "SHELL=" bin/sh)) (substitute* '("Makefile" "make-common") (("/lib/mit-scheme/doc") (string-append "/share/doc/" ,name "-" ,version))) @@ -128,7 +128,8 @@ (add-after 'build 'build-doc (lambda* _ (with-directory-excursion "../doc" - (zero? (system* "make"))))) + (invoke "make")) + #t)) (add-after 'install 'install-doc (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -138,7 +139,7 @@ (string-append doc "/share/doc/" ,name "-" ,version))) (with-directory-excursion "../doc" (for-each (lambda (target) - (system* "make" target)) + (invoke "make" target)) '("install-config" "install-info-gz" "install-man" "install-html" "install-pdf"))) (mkdir-p new-doc/mit-scheme-dir) diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm index 7ce531bb6d..6ff83ce5a4 100644 --- a/gnu/packages/security-token.scm +++ b/gnu/packages/security-token.scm @@ -46,15 +46,15 @@ (define-public ccid (package (name "ccid") - (version "1.4.28") + (version "1.4.29") (source (origin (method url-fetch) (uri (string-append - "https://alioth.debian.org/frs/download.php/file/4230/" + "https://alioth.debian.org/frs/download.php/file/4238/" "ccid-" version ".tar.bz2")) (sha256 (base32 - "1q5dz1l049m3hmr370adhrqicdkldrr3l98svi02p5cxbnn3cn47")))) + "0kdqmbma6sclsrbxy9w85h7cs0v11if4nc2r9v09613k8pl2lhx5")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list (string-append "--enable-usbdropdir=" %output diff --git a/gnu/packages/skarnet.scm b/gnu/packages/skarnet.scm index ce6fdc709d..a0b482a671 100644 --- a/gnu/packages/skarnet.scm +++ b/gnu/packages/skarnet.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2015 Claes Wallin <claes.wallin@greatsinodevelopment.com> ;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr> ;;; Copyright © 2017 Z. Ren <zren@dlut.edu.cn> +;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,7 +29,7 @@ (define-public skalibs (package (name "skalibs") - (version "2.3.10.0") + (version "2.6.3.1") (source (origin (method url-fetch) @@ -36,11 +37,10 @@ version ".tar.gz")) (sha256 (base32 - "0i7af224kl1crxgml09wx0x6q8ab79vnyrllfwv2lnq585wi9mg4")))) + "108c4vslsfy57892ybbksscrjd4bx444hzzcq2g5wdg2sh0cl245")))) (build-system gnu-build-system) (arguments - '(#:configure-flags '("--enable-force-devr") ; do not analyze /dev/random - #:tests? #f ; no tests exist + '(#:tests? #f ; no tests exist #:phases (modify-phases %standard-phases (add-after 'unpack 'reproducible (lambda _ @@ -50,7 +50,7 @@ (("\\$\\(wildcard src/lib\\*/\\*.c\\)") "$(sort $(wildcard src/lib*/*.c))")) #t))))) - (home-page "http://skarnet.org/software/skalibs/") + (home-page "https://skarnet.org/software/skalibs/") (synopsis "Platform abstraction libraries for skarnet.org software") (description "This package provides lightweight C libraries isolating the developer @@ -62,7 +62,7 @@ and file system operations. It is used by all skarnet.org software.") (define-public execline (package (name "execline") - (version "2.1.5.0") + (version "2.3.0.4") (source (origin (method url-fetch) @@ -70,7 +70,7 @@ and file system operations. It is used by all skarnet.org software.") version ".tar.gz")) (sha256 (base32 - "0hhirdmyh3sj9qagkis7addmmdvyic717wkb6ym3n63kvfk0adla")))) + "0jx60wjz3yj3r1wircbvd15in275pi7ggw69pbs9djhcyb48zfz4")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs))) (arguments @@ -90,7 +90,7 @@ and file system operations. It is used by all skarnet.org software.") (wrap-program (string-append bin "/execlineb") `("PATH" ":" prefix (,bin))))))) #:tests? #f)) ; No tests exist. - (home-page "http://skarnet.org/software/execline/") + (home-page "https://skarnet.org/software/execline/") (license isc) (synopsis "Non-interactive shell-like language with minimal overhead") (description @@ -105,7 +105,7 @@ complexity."))) (define-public s6 (package (name "s6") - (version "2.3.0.0") + (version "2.7.0.0") (source (origin (method url-fetch) @@ -113,7 +113,7 @@ complexity."))) version ".tar.gz")) (sha256 (base32 - "1rp8i228zxzbia1799pdav1kkzdk96fax9bcfyf2gilkdm3s1ja9")))) + "04vfviw00zvvb1mdpl78zdgzd7j491f1lahhqrkkq9vk5kwcn5v6")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs) ("execline" ,execline))) @@ -129,7 +129,7 @@ complexity."))) (assoc-ref %build-inputs "skalibs") "/lib/skalibs/sysdeps")) #:tests? #f)) - (home-page "http://skarnet.org/software/s6") + (home-page "https://skarnet.org/software/s6") (license isc) (synopsis "Small suite of programs for process supervision") (description @@ -144,7 +144,7 @@ functionality with a very small amount of code."))) (define-public s6-dns (package (name "s6-dns") - (version "2.0.1.0") + (version "2.3.0.0") (source (origin (method url-fetch) @@ -152,7 +152,7 @@ functionality with a very small amount of code."))) version ".tar.gz")) (sha256 (base32 - "1ji47iy8czx4jmi763dxd6lgjbnp4vqqgcijh46ym65l0a97z04w")))) + "0h47ldxvh9cny91r0pjxq7zr5iqpqf1j50p3ip42f6bl90z5ha58")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs))) (arguments @@ -164,7 +164,7 @@ functionality with a very small amount of code."))) (assoc-ref %build-inputs "skalibs") "/lib/skalibs/sysdeps")) #:tests? #f)) - (home-page "http://skarnet.org/software/s6-dns") + (home-page "https://skarnet.org/software/s6-dns") (license isc) (synopsis "Suite of DNS client programs") (description @@ -174,7 +174,7 @@ as an alternative to the BIND, djbdns or other DNS clients."))) (define-public s6-networking (package (name "s6-networking") - (version "2.1.1.0") + (version "2.3.0.2") (source (origin (method url-fetch) @@ -182,7 +182,7 @@ as an alternative to the BIND, djbdns or other DNS clients."))) version ".tar.gz")) (sha256 (base32 - "0r8gfv0l2k449nacjy919gqlgn25q7fjxaqra5r37k7kiikkgqfw")))) + "06j8fpldn187cmbjqp191hd65ka3ys19vj3jm3kcvkmvd9snh6fq")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs) ("execline" ,execline) @@ -206,7 +206,7 @@ as an alternative to the BIND, djbdns or other DNS clients."))) (assoc-ref %build-inputs "skalibs") "/lib/skalibs/sysdeps")) #:tests? #f)) - (home-page "http://skarnet.org/software/s6-networking") + (home-page "https://skarnet.org/software/s6-networking") (license isc) (synopsis "Suite of network utilities for Unix systems") (description @@ -218,7 +218,7 @@ clock synchronization."))) (define-public s6-rc (package (name "s6-rc") - (version "0.0.3.0") + (version "0.4.0.0") (source (origin (method url-fetch) @@ -226,7 +226,7 @@ clock synchronization."))) version ".tar.gz")) (sha256 (base32 - "0bl94lbaphbpaaj4wbb86xqgp5bcgrf3m7p80mimw1qsjrvlxfay")))) + "1fkg9635cvrf6gw055y346a3n634dy2xiwbypawi68flfprfgf4n")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs) ("execline" ,execline) @@ -246,7 +246,7 @@ clock synchronization."))) (assoc-ref %build-inputs "skalibs") "/lib/skalibs/sysdeps")) #:tests? #f)) - (home-page "http://skarnet.org/software/s6-rc") + (home-page "https://skarnet.org/software/s6-rc") (license isc) (synopsis "Service manager for s6-based systems") (description @@ -260,7 +260,7 @@ environment."))) (define-public s6-portable-utils (package (name "s6-portable-utils") - (version "2.0.6.0") + (version "2.2.1.1") (source (origin (method url-fetch) @@ -269,7 +269,7 @@ environment."))) version ".tar.gz")) (sha256 (base32 - "0jwxj0ma4zd1h6i3i98nsp0miidr54phap7dqwf6c8vafq9psfr3")))) + "0ca5iiq3n6isj64jb81xpwjzjx1q8jg145nnnn91ra2qqk93kqka")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs))) (arguments @@ -281,7 +281,7 @@ environment."))) (assoc-ref %build-inputs "skalibs") "/lib/skalibs/sysdeps")) #:tests? #f)) - (home-page "http://skarnet.org/software/s6-portable-utils") + (home-page "https://skarnet.org/software/s6-portable-utils") (license isc) (synopsis "Tiny command-line Unix utilities") (description @@ -290,10 +290,48 @@ performing well-known tasks such as @command{cut} and @command{grep}, but optimized for simplicity and small size. They were designed for embedded systems and other constrained environments, but they work everywhere."))) +(define-public s6-linux-init + (package + (name "s6-linux-init") + (version "0.3.1.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://skarnet.org/software/s6-linux-init/s6-linux-init-" + version ".tar.gz")) + (sha256 + (base32 + "0yfxrjqlbb6kac4gcn78phxbwp5sj9jmc1vxpsrbql62mfjyiqly")))) + (build-system gnu-build-system) + (inputs + `(("skalibs" ,skalibs))) + (arguments + '(#:configure-flags + (list + (string-append "--with-lib=" + (assoc-ref %build-inputs "skalibs") + "/lib/skalibs") + (string-append "--with-sysdeps=" + (assoc-ref %build-inputs "skalibs") + "/lib/skalibs/sysdeps")) + #:tests? #f)) + (home-page "https://skarnet.org/software/s6-linux-init") + (license isc) + (synopsis "Minimalistic tools to create an s6-based init system on Linux") + (description + " s6-linux-init is a set of minimalistic tools to create a s6-based init +system, including an @command{/sbin/init} binary, on a Linux kernel. + +It is meant to automate creation of scripts revolving around the use of other +skarnet.org tools, especially s6, in order to provide a complete booting +environment with integrated supervision and logging without having to hand-craft +all the details. "))) + (define-public s6-linux-utils (package (name "s6-linux-utils") - (version "2.1.0.0") + (version "2.4.0.2") (source (origin (method url-fetch) @@ -302,7 +340,7 @@ systems and other constrained environments, but they work everywhere."))) version ".tar.gz")) (sha256 (base32 - "1bby751blynb7p8wd3npjm71lf10ysmfvqrd3dqrhhajpa2bl8rm")))) + "0245rmk7wfyyfsi4g7f0niprwlvqlwkbyjxflb8kkbvhwfdavqip")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs))) (arguments @@ -314,7 +352,7 @@ systems and other constrained environments, but they work everywhere."))) (assoc-ref %build-inputs "skalibs") "/lib/skalibs/sysdeps")) #:tests? #f)) - (home-page "http://skarnet.org/software/s6-linux-utils") + (home-page "https://skarnet.org/software/s6-linux-utils") (license isc) (synopsis "Set of minimalistic Linux-specific system utilities") (description diff --git a/gnu/packages/slang.scm b/gnu/packages/slang.scm index b0a7ff0cfc..abc00c1a89 100644 --- a/gnu/packages/slang.scm +++ b/gnu/packages/slang.scm @@ -37,16 +37,14 @@ (define-public slang (package (name "slang") - (version "2.3.0") + (version "2.3.1a") (source (origin (method url-fetch) - (uri (string-append - "http://www.jedsoft.org/releases/slang/slang-" - version - ".tar.gz")) + (uri (string-append "http://www.jedsoft.org/releases/slang/slang-" + version ".tar.bz2")) (sha256 (base32 - "0aqd2cjabj6nhd4r3dc4vhqif2bf3dmqnrn2gj0xm4gqyfd177jy")) + "0dlcy0hn0j6cj9qj5x6hpb0axifnvzzmv5jqq0wq14fygw0c7w2l")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index f3e1135253..c1012a635b 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -965,16 +965,17 @@ transliteration, concatenation, date-time formatting and parsing, etc.") (define-public r-stringr (package (name "r-stringr") - (version "1.2.0") + (version "1.3.0") (source (origin (method url-fetch) (uri (cran-uri "stringr" version)) (sha256 - (base32 "16hj2rmv8x03lp6cp2jk0k2plibvbggf444kp05przdvd03v7l31")))) + (base32 "07dvfbkhv8gk6l32j43jvxpmqlhqp0mdby406h5a3bsc6k94ic13")))) (build-system r-build-system) (propagated-inputs - `(("r-magrittr" ,r-magrittr) + `(("r-glue" ,r-glue) + ("r-magrittr" ,r-magrittr) ("r-stringi" ,r-stringi))) (home-page "https://github.com/hadley/stringr") (synopsis "Simple, consistent wrappers for common string operations") @@ -1347,13 +1348,13 @@ emitter (http://pyyaml.org/wiki/LibYAML) for R.") (define-public r-knitr (package (name "r-knitr") - (version "1.19") + (version "1.20") (source (origin (method url-fetch) (uri (cran-uri "knitr" version)) (sha256 (base32 - "1gyj9bw90h4h9rc9k1iqrnzirm2f8mj45zi8bkjc6rp610vlh63j")))) + "1408dm25cxahk2clff8hlajaqdj5v1gs40nm3q6rf0ghd82hj93v")))) (build-system r-build-system) (propagated-inputs `(("r-evaluate" ,r-evaluate) @@ -1549,13 +1550,13 @@ defined in different packages.") (define-public r-rlang (package (name "r-rlang") - (version "0.1.6") + (version "0.2.0") (source (origin (method url-fetch) (uri (cran-uri "rlang" version)) (sha256 (base32 - "1x62assn8m7cd0q75r809gxsdqmxmd2br1xz53ykzhrfz3j768kp")))) + "0f87fhw5pj6s2zjdxnpnd7pwn78czdz71b0xhm5adqg1p38sfwj8")))) (build-system r-build-system) (home-page "http://rlang.tidyverse.org") (synopsis "Functions for base types, core R and Tidyverse features") @@ -1627,14 +1628,14 @@ database.") (define-public r-dbplyr (package (name "r-dbplyr") - (version "1.2.0") + (version "1.2.1") (source (origin (method url-fetch) (uri (cran-uri "dbplyr" version)) (sha256 (base32 - "17br61mhssi2pm6v8604f89ykglng3qp9ymfzmhw10cary6zm982")))) + "1nwrls9c3kc9q7405jp6b9sh23642sz13yw55iikgw134shffj5k")))) (build-system r-build-system) (propagated-inputs `(("r-assertthat" ,r-assertthat) @@ -2330,13 +2331,13 @@ informative error messages when it's not available.") (define-public r-devtools (package (name "r-devtools") - (version "1.13.4") + (version "1.13.5") (source (origin (method url-fetch) (uri (cran-uri "devtools" version)) (sha256 (base32 - "1az1qf50vyhm4w6k2a6wqw3pqc8jv2iqzdhs36cg079hx9swm0mb")))) + "1x3wsk7dh3yakii61kbfvafx9yz66h40ixiwfkf03dnp2n24hngs")))) (build-system r-build-system) (propagated-inputs `(("r-digest" ,r-digest) @@ -2747,18 +2748,21 @@ ldap, and also supports cookies, redirects, authentication, etc.") (define-public r-xml (package (name "r-xml") - (version "3.98-1.9") + (version "3.98-1.10") (source (origin (method url-fetch) (uri (cran-uri "XML" version)) (sha256 (base32 - "1hzkdkgs0nzmfg9wm7kyh1j9i0i2g7925whzlihqvg9grdlh3dx3")))) + "1faza9bbllp67lf1yv1sllxc3iv8llz52m9diazhq322iqbh97m1")))) (properties `((upstream-name . "XML"))) (build-system r-build-system) (inputs - `(("libxml2" ,libxml2))) + `(("libxml2" ,libxml2) + ("zlib" ,zlib))) + (native-inputs + `(("pkg-config" ,pkg-config))) (home-page "http://www.omegahat.org/RSXML") (synopsis "Tools for parsing and generating XML within R") (description @@ -5407,18 +5411,19 @@ and the corresponding decision threshold.") (define-public r-forcats (package (name "r-forcats") - (version "0.2.0") + (version "0.3.0") (source (origin (method url-fetch) (uri (cran-uri "forcats" version)) (sha256 (base32 - "1mvwkynvvgz2vi8dyz11x7xrp53kadjawjcja34hwk1d89qf7g5m")))) + "0mxn1hng43zdjh1v8shd80hrszrqahcpaqxs1s1sif0qxh84d0cm")))) (build-system r-build-system) (propagated-inputs `(("r-magrittr" ,r-magrittr) - ("r-tibble" ,r-tibble))) + ("r-tibble" ,r-tibble) + ("r-rlang" ,r-rlang))) (home-page "http://forcats.tidyverse.org") (synopsis "Tools for working with factors") (description "This package provides helpers for reordering factor diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index ee316c2289..9e06e675f4 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -787,7 +787,7 @@ then ported to the GNU / Linux environment.") (define-public mbedtls-apache (package (name "mbedtls-apache") - (version "2.6.0") + (version "2.7.0") (source (origin (method url-fetch) @@ -797,7 +797,7 @@ then ported to the GNU / Linux environment.") version "-apache.tgz")) (sha256 (base32 - "11wnj34rfqxjggmdgf042i49lr6civgbqwv2p7p8bn6k2919vg4r")))) + "1vsmgxnw7dpvma51896n63yaf9sncmf885ax2jfcg89ssin6vdmf")))) (build-system cmake-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm index 5e2c990469..8764cea9a6 100644 --- a/gnu/packages/upnp.scm +++ b/gnu/packages/upnp.scm @@ -29,14 +29,14 @@ (define-public miniupnpc (package (name "miniupnpc") - (version "2.0.20180203") + (version "2.0.20180222") (source (origin (method url-fetch) (uri (string-append "https://miniupnp.tuxfamily.org/files/" name "-" version ".tar.gz")) (sha256 - (base32 "1dr0qaf2qz49aawgsnv7l41rda5yvdk3qfz2hd5cv9iwav3sipch")))) + (base32 "0xavcrifk8v8gwig3mj0kjkm7rvw1kbsxcs4jxrrzl39cil48yaq")))) (build-system gnu-build-system) (native-inputs `(("python" ,python-2))) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 75160c3376..91698b5f7f 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -636,35 +636,30 @@ default) of the repository.") (define-public shflags (package (name "shflags") - (version "1.2.0") + (version "1.2.3") (source (origin (method url-fetch) (uri (string-append "https://github.com/kward/shflags/archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0zxw12haylaq60a335xlqcs4afw2zrgwqymmpw0m21r51w6irdmr")))) - (build-system trivial-build-system) + "1h9xfrwwdhzflipfwdcgcc3y7zapdslnyk1rg5y8jm7k144rfrs4")))) + (build-system gnu-build-system) (native-inputs `(("tar" ,tar) ("gzip" ,gzip))) (arguments - `(#:modules ((guix build utils)) - #:builder (begin - (use-modules (guix build utils)) - (let* ((source (assoc-ref %build-inputs "source")) - (tar (assoc-ref %build-inputs "tar")) - (gzip (assoc-ref %build-inputs "gzip")) - (output (assoc-ref %outputs "out")) - (srcdir (string-append output "/src"))) - (begin - (setenv "PATH" (string-append gzip "/bin")) - (system* (string-append tar "/bin/tar") "xzf" - source) - (chdir ,(string-append name "-" version)) - (mkdir-p srcdir) - (copy-file "src/shflags" - (string-append srcdir "/shflags")) - #t))))) + `(#:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + (delete 'configure) ; nothing to configure + (delete 'build) ; nothing to build + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (src (string-append out "/src"))) + (install-file "shflags" src) + #t)))))) (home-page "https://github.com/kward/shflags") (synopsis "Command-line flags library for shell scripts") (description diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 25b243ab63..287d142958 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -245,18 +245,18 @@ television and DVD. It is also known as AC-3.") (define-public libx264 (package (name "libx264") - (version "20170316-2245") + (version "20180219-2245") (source (origin (method url-fetch) (uri (string-append "https://download.videolan.org/pub/x264/snapshots/" - "x264-snapshot-" version ".tar.bz2")) + "x264-snapshot-" version "-stable.tar.bz2")) (sha256 (base32 - "1s1nnvl3axz38sv4g09skijl6k9mbbngbb1nsh26w4dr2w2gyzad")))) + "1x0cg8l30wp84mr7q0ddp06jclm0kjrszazrx87d4k7js3qxjy8m")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) - ("yasm" ,yasm))) + ("nasm" ,nasm))) ;; TODO: Add gpac input (arguments `(#:tests? #f ;no check target @@ -1275,7 +1275,7 @@ other site that youtube-dl supports.") (define-public you-get (package (name "you-get") - (version "0.4.1011") + (version "0.4.1025") (source (origin (method url-fetch) (uri (string-append @@ -1284,7 +1284,7 @@ other site that youtube-dl supports.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0cdbh5w0chw3dlrwizm91l6sgkkzy7p6h0072dai4xbw5zgld31k")))) + "10103jw1gzar85jlajzl9wslk08vw21n26hkhfcz5bvkm9lxxs2c")))) (build-system python-build-system) (inputs `(("ffmpeg" ,ffmpeg))) ; for multi-part and >=1080p videos @@ -1737,7 +1737,12 @@ from sites like Twitch.tv and pipes them into a video player of choice.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "10m3ry0b2pvqx3bk34qh5dq337nn8pkc2gzfyhsj4nv9abskln47")))) + "10m3ry0b2pvqx3bk34qh5dq337nn8pkc2gzfyhsj4nv9abskln47")) + (modules '((guix build utils))) + (snippet + ;; As of glibc 2.26, <xlocale.h> no longer is. + '(substitute* "src/framework/mlt_property.h" + (("xlocale\\.h") "locale.h"))))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no tests diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index d49cdc208a..f8f9de16fc 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -82,16 +82,14 @@ (define-public qemu (package (name "qemu") - (version "2.10.2") + (version "2.11.1") (source (origin (method url-fetch) (uri (string-append "https://download.qemu.org/qemu-" version ".tar.xz")) - (patches (search-patches "qemu-CVE-2017-15038.patch" - "qemu-CVE-2017-15289.patch")) (sha256 (base32 - "17w21spvaxaidi2am5lpsln8yjpyp2zi3s3gc6nsxj5arlgamzgw")))) + "11l6cs6mib16rgdrnqrhkqs033fjik316gkgfz3asbmxz38lalca")))) (build-system gnu-build-system) (arguments '(;; Running tests in parallel can occasionally lead to failures, like: diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm index 4185064d8d..1d83b6f363 100644 --- a/gnu/packages/vulkan.scm +++ b/gnu/packages/vulkan.scm @@ -158,7 +158,7 @@ interpretation of the specifications for these languages.") (define-public vulkan-icd-loader (package (name "vulkan-icd-loader") - (version "1.0.65.2") + (version "1.0.68.0") (source (origin (method url-fetch) @@ -167,11 +167,20 @@ interpretation of the specifications for these languages.") "archive/sdk-" version ".tar.gz")) (sha256 (base32 - "1ivvmb977n2xp95v3sryhflvryy3mxrcwrd1hnr2dmri40vg1sl8")))) + "1n5gry5zxpwi7330fmi06snalra8hkbbw68gnwbp531kd5ycyinh")))) (build-system cmake-build-system) (arguments `(#:tests? #f ;FIXME: 23/39 tests fail. Try "tests/run_all_tests.sh". - #:configure-flags (list (string-append "-DCMAKE_INSTALL_LIBDIR=" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-spirv-tools-commit-id + (lambda* (#:key inputs #:allow-other-keys) + ;; Remove lines trying to build in a git commit id. + (substitute* "CMakeLists.txt" ((".*spirv_tools_commit_id.h.*") "")) + #t))) + #:configure-flags (list + "-DBUILD_LAYERS=OFF" ; FIXME: Fails to build. + (string-append "-DCMAKE_INSTALL_LIBDIR=" (assoc-ref %outputs "out") "/lib")))) (inputs `(("glslang" ,glslang) ("libxcb" ,libxcb) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 5219d30e04..ea302aa469 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -182,14 +182,14 @@ Interface} specification.") (name "nginx") ;; Consider updating the nginx-documentation package if the nginx package is ;; updated. - (version "1.13.8") + (version "1.13.9") (source (origin (method url-fetch) (uri (string-append "https://nginx.org/download/nginx-" version ".tar.gz")) (sha256 (base32 - "1ib4hkngj9z7pl73lnn96d85m7v2wwb56nkypwx7d6pm3z1vc444")))) + "0hpsyxpxj89p5vrzv9p1hp7xjbnj5c1w6fdy626ycvsiay4a3bjz")))) (build-system gnu-build-system) (inputs `(("openssl" ,openssl) ("pcre" ,pcre) @@ -5654,14 +5654,14 @@ encoder/decoder based on the draft-12 specification for UBJSON.") (define-public java-tomcat (package (name "java-tomcat") - (version "8.5.23") + (version "8.5.28") (source (origin (method url-fetch) (uri (string-append "mirror://apache/tomcat/tomcat-8/v" version "/src/apache-tomcat-" version "-src.tar.gz")) (sha256 (base32 - "1m6b1dikib46kbgz9gf0p6svi00nsw62b9kgjzn6sda151skbbza")))) + "0q2bc3sajrmcx3z3vhhwp78y47ryc2ky8ssbdmfk24zvqdb76hvl")))) (build-system ant-build-system) (inputs `(("java-eclipse-jdt-core" ,java-eclipse-jdt-core))) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 0cf6c1a2de..888173313b 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2016 Al McElrath <hello@yrns.org> ;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au> ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017, 2018 ng0 <ng0@crash.cx> ;;; Copyright © 2016 doncatnip <gnopap@gmail.com> ;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net> ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com> @@ -46,6 +46,7 @@ #:use-module (gnu packages haskell-check) #:use-module (gnu packages haskell-web) #:use-module (gnu packages autotools) + #:use-module (gnu packages bison) #:use-module (gnu packages gawk) #:use-module (gnu packages base) #:use-module (gnu packages pkg-config) @@ -915,3 +916,55 @@ It is inspired by Xmonad and dwm. Its major features include: @end itemize\n") (home-page "https://github.com/conformal/spectrwm") (license license:isc))) + +(define-public cwm + (package + (name "cwm") + (version "6.2") + (source + (origin + (method url-fetch) + (uri (string-append "http://chneukirchen.org/releases/cwm-" + version ".tar.gz")) + (sha256 + (base32 + "1b8k2hjxpb0bzqjh2wj6mn2nf2360zacf8z19sw2rw5lxvmfy89x")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags (list "CC=gcc" + (string-append "PREFIX=" %output)) + #:tests? #f + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'build 'install-xsession + (lambda* (#:key outputs #:allow-other-keys) + ;; Add a .desktop file to xsessions. + (let* ((output (assoc-ref outputs "out")) + (xsessions (string-append output "/share/xsessions"))) + (mkdir-p xsessions) + (with-output-to-file + (string-append xsessions "/cwm.desktop") + (lambda _ + (format #t + "[Desktop Entry]~@ + Name=cwm~@ + Comment=OpenBSD Calm Window Manager fork~@ + Exec=~a/bin/cwm~@ + TryExec=~@*~a/bin/cwm~@ + Icon=~@ + Type=Application~%" + output))) + #t)))))) + (inputs + `(("libxft" ,libxft) + ("libxrandr" ,libxrandr) + ("libxinerama" ,libxinerama))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("bison" ,bison))) + (home-page "https://github.com/chneukirchen/cwm") + (synopsis "OpenBSD fork of the calmwm window manager") + (description "Cwm is a stacking window manager for X11. It is an OpenBSD +project derived from the original Calm Window Manager.") + (license license:isc))) diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm index 84446d8ef0..ad264a24e8 100644 --- a/gnu/packages/wxwidgets.scm +++ b/gnu/packages/wxwidgets.scm @@ -97,6 +97,34 @@ a graphical user interface. It has language bindings for Python, Perl, Ruby and many other languages.") (license (list l:lgpl2.0+ (l:fsf-free "file://doc/license.txt"))))) +(define-public wxwidgets-2 + (package + (inherit wxwidgets) + (version "2.8.12") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/wxWidgets/wxWidgets/" + "releases/download/v" version + "/wxGTK-" version ".tar.gz")) + (sha256 + (base32 "1gjs9vfga60mk4j4ngiwsk9h6c7j22pw26m3asxr1jwvqbr8kkqk")))) + (inputs + `(("gtk" ,gtk+-2) + ("libjpeg" ,libjpeg) + ("libtiff" ,libtiff) + ("libmspack" ,libmspack) + ("sdl" ,sdl) + ("unixodbc" ,unixodbc))) + (arguments + `(#:configure-flags + '("--enable-unicode" "--with-regex=sys" "--with-sdl") + #:make-flags + (list (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") "/lib")) + ;; No 'check' target. + #:tests? #f)))) + (define-public wxwidgets-gtk2 (package (inherit wxwidgets) (inputs `(("gtk+" ,gtk+-2) @@ -126,6 +154,14 @@ and many other languages.") ((#:configure-flags flags) `(cons "--enable-mediactrl" ,flags)))))) +(define-public wxwidgets-gtk2-3.1 + (package (inherit wxwidgets-3.1) + (inputs `(("gtk+" ,gtk+-2) + ,@(alist-delete + "gtk+" + (package-inputs wxwidgets-3.1)))) + (name "wxwidgets-gtk2"))) + (define-public python2-wxpython (package (name "python2-wxpython") diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index b78edf53fc..c16e5ecb13 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -4771,14 +4771,14 @@ common definitions and porting layer.") (define-public xorgproto (package (name "xorgproto") - (version "2018.2") + (version "2018.3") (source (origin (method url-fetch) (uri (string-append "mirror://xorg/individual/proto/" name "-" version ".tar.bz2")) (sha256 (base32 - "0r3fk48vp24hk4viw4fjpyh0y7rdg13p5faxc0vicdyqcn5w02cp")))) + "1rdhw28n1gp7yylwia41jhih66gfx75nxgrmi2ggglzvzqhwr0x8")))) (build-system gnu-build-system) (propagated-inputs ;; To get util-macros in (almost?) all package inputs. diff --git a/gnu/services/certbot.scm b/gnu/services/certbot.scm index 8aac2638b3..066b8241b2 100644 --- a/gnu/services/certbot.scm +++ b/gnu/services/certbot.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@member.fsf.org> -;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> +;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,7 +32,8 @@ #:use-module (ice-9 match) #:export (certbot-service-type certbot-configuration - certbot-configuration?)) + certbot-configuration? + certificate-configuration)) ;;; Commentary: ;;; @@ -41,6 +42,16 @@ ;;; Code: +(define-record-type* <certificate-configuration> + certificate-configuration make-certificate-configuration + certificate-configuration? + (name certificate-configuration-name + (default #f)) + (domains certificate-configuration-domains + (default '())) + (deploy-hook certificate-configuration-deploy-hook + (default #f))) + (define-record-type* <certbot-configuration> certbot-configuration make-certbot-configuration certbot-configuration? @@ -48,8 +59,11 @@ (default certbot)) (webroot certbot-configuration-webroot (default "/var/www")) - (hosts certbot-configuration-hosts + (certificates certbot-configuration-certificates (default '())) + (email certbot-configuration-email) + (rsa-key-size certbot-configuration-rsa-key-size + (default #f)) (default-location certbot-configuration-default-location (default (nginx-location-configuration @@ -57,59 +71,75 @@ (body (list "return 301 https://$host$request_uri;")))))) -(define certbot-renewal-jobs +(define certbot-command (match-lambda - (($ <certbot-configuration> package webroot hosts default-location) - (match hosts - ;; Avoid pinging certbot if we have no hosts. - (() '()) - (_ - (list - ;; Attempt to renew the certificates twice a week. - #~(job (lambda (now) - (next-day-from (next-hour-from now '(3)) - '(2 5))) - (string-append #$package "/bin/certbot renew" - (string-concatenate - (map (lambda (host) - (string-append " -d " host)) - '#$hosts)))))))))) + (($ <certbot-configuration> package webroot certificates email + rsa-key-size default-location) + (let* ((certbot (file-append package "/bin/certbot")) + (rsa-key-size (and rsa-key-size (number->string rsa-key-size))) + (commands + (map + (match-lambda + (($ <certificate-configuration> custom-name domains + deploy-hook) + (let ((name (or custom-name (car domains)))) + (append + (list name certbot "certonly" "-n" "--agree-tos" + "-m" email + "--webroot" "-w" webroot + "--cert-name" name + "-d" (string-join domains ",")) + (if rsa-key-size `("--rsa-key-size" ,rsa-key-size) '()) + (if deploy-hook `("--deploy-hook" ,deploy-hook) '()))))) + certificates))) + (program-file + "certbot-command" + #~(begin + (use-modules (ice-9 match)) + (let ((code 0)) + (for-each + (match-lambda + ((name . command) + (begin + (format #t "Acquiring or renewing certificate: ~a~%" name) + (set! code (or (apply system* command) code))))) + '#$commands) code))))))) -(define certbot-activation - (match-lambda - (($ <certbot-configuration> package webroot hosts default-location) +(define (certbot-renewal-jobs config) + (list + ;; Attempt to renew the certificates twice per day, at a random minute + ;; within the hour. See https://certbot.eff.org/all-instructions/. + #~(job '(next-minute-from (next-hour '(0 12)) (list (random 60))) + #$(certbot-command config)))) + +(define (certbot-activation config) + (match config + (($ <certbot-configuration> package webroot certificates email + rsa-key-size default-location) (with-imported-modules '((guix build utils)) #~(begin - (use-modules (guix build utils)) - (mkdir-p #$webroot) - (for-each - (lambda (host) - (unless (file-exists? (in-vicinity "/etc/letsencrypt/live" host)) - (unless (zero? (system* - (string-append #$certbot "/bin/certbot") - "certonly" "--webroot" "-w" #$webroot - "-d" host)) - (error "failed to acquire cert for host" host)))) - '#$hosts)))))) + (use-modules (guix build utils)) + (mkdir-p #$webroot) + (zero? (system* #$(certbot-command config)))))))) (define certbot-nginx-server-configurations (match-lambda - (($ <certbot-configuration> package webroot hosts default-location) - (map - (lambda (host) - (nginx-server-configuration - (listen '("80")) - (ssl-certificate #f) - (ssl-certificate-key #f) - (server-name (list host)) - (locations - (filter identity - (list - (nginx-location-configuration - (uri "/.well-known") - (body (list (list "root " webroot ";")))) - default-location))))) - hosts)))) + (($ <certbot-configuration> package webroot certificates email + rsa-key-size default-location) + (list + (nginx-server-configuration + (listen '("80" "[::]:80")) + (ssl-certificate #f) + (ssl-certificate-key #f) + (server-name + (apply append (map certificate-configuration-domains certificates))) + (locations + (filter identity + (list + (nginx-location-configuration + (uri "/.well-known") + (body (list (list "root " webroot ";")))) + default-location)))))))) (define certbot-service-type (service-type (name 'certbot) @@ -121,12 +151,13 @@ (service-extension mcron-service-type certbot-renewal-jobs))) (compose concatenate) - (extend (lambda (config additional-hosts) + (extend (lambda (config additional-certificates) (certbot-configuration (inherit config) - (hosts (append (certbot-configuration-hosts config) - additional-hosts))))) - (default-value (certbot-configuration)) + (certificates + (append + (certbot-configuration-certificates config) + additional-certificates))))) (description "Automatically renew @url{https://letsencrypt.org, Let's Encrypt} HTTPS certificates by adjusting the nginx web server configuration diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 50af2408b1..ea8433af3a 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -437,7 +437,9 @@ desktop session from the system or user profile will be used." (auto-login-session slim-configuration-auto-login-session (default #f)) (startx slim-configuration-startx - (default (xorg-start-command)))) + (default (xorg-start-command))) + (sessreg slim-configuration-sessreg + (default sessreg))) (define (slim-pam-service config) "Return a PAM service for @command{slim}." @@ -454,7 +456,8 @@ desktop session from the system or user profile will be used." (xauth (slim-configuration-xauth config)) (startx (slim-configuration-startx config)) (shepherd (slim-configuration-shepherd config)) - (theme-name (slim-configuration-theme-name config))) + (theme-name (slim-configuration-theme-name config)) + (sessreg (slim-configuration-sessreg config))) (mixed-text-file "slim.cfg" " default_path /run/current-system/profile/bin default_xserver " startx " @@ -467,6 +470,8 @@ authfile /var/run/slim.auth login_cmd exec " xinitrc " %session sessiondir /run/current-system/profile/share/xsessions session_msg session (F1 to change): +sessionstart_cmd " sessreg "/bin/sessreg -a -l $DISPLAY %user +sessionstop_cmd " sessreg "/bin/sessreg -d -l $DISPLAY %user halt_cmd " shepherd "/sbin/halt reboot_cmd " shepherd "/sbin/reboot\n" diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index d2568e6a7d..67da6fc3bf 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org> +;;; Copyright © 2014, 2015, 2018 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. @@ -142,6 +142,8 @@ COMMAND or an interactive shell in that environment.\n")) -l, --load=FILE create environment for the package that the code within FILE evaluates to")) (display (G_ " + -m, --manifest=FILE create environment with the manifest from FILE")) + (display (G_ " --ad-hoc include all specified packages in the environment instead of only their inputs")) (display (G_ " @@ -220,6 +222,11 @@ COMMAND or an interactive shell in that environment.\n")) (alist-cons 'expression (tag-package-arg result arg) result))) + (option '(#\m "manifest") #t #f + (lambda (opt name arg result) + (alist-cons 'manifest + arg + result))) (option '("ad-hoc") #f #f (lambda (opt name arg result) (alist-cons 'ad-hoc? #t result))) @@ -286,6 +293,16 @@ packages." (((? package-or-package+output?) ...) ; many packages (map (cut package->output <> mode) packages)))) + (define (manifest->outputs manifest) + (map (lambda (entry) + (cons 'ad-hoc-package ; manifests are implicitly ad-hoc + (if (package? (manifest-entry-item entry)) + (list (manifest-entry-item entry) + (manifest-entry-output entry)) + ;; Direct store paths have no output. + (list (manifest-entry-item entry))))) + (manifest-entries manifest))) + (compact (append-map (match-lambda (('package mode (? string? spec)) @@ -299,6 +316,9 @@ packages." ;; Add all the outputs of the package defined in FILE. (let ((module (make-user-module '()))) (packages->outputs (load* file module) mode))) + (('manifest . file) + (let ((module (make-user-module '()))) + (manifest->outputs (load* file module)))) (_ '(#f))) opts))) diff --git a/tests/guix-environment.sh b/tests/guix-environment.sh index bf5ca17fa5..b44aca099d 100644 --- a/tests/guix-environment.sh +++ b/tests/guix-environment.sh @@ -62,6 +62,15 @@ fi guix environment --bootstrap --ad-hoc guile-bootstrap --pure \ -- "$SHELL" -c 'test -f "$GUIX_ENVIRONMENT/bin/guile"' +# Make sure 'GUIX_ENVIRONMENT' points to the profile when building from a +# manifest. +echo "(use-modules (guix profiles) (gnu packages bootstrap)) + +(packages->manifest (list %bootstrap-guile)) +" > $tmpdir/manifest.scm +guix environment --bootstrap --manifest=$tmpdir/manifest.scm --pure \ + -- "$SHELL" -c 'test -f "$GUIX_ENVIRONMENT/bin/guile"' + # Make sure '-r' works as expected. rm -f "$gcroot" expected="`guix environment --bootstrap --ad-hoc guile-bootstrap \ |