diff --git a/doc/contributing.texi b/doc/contributing.texi index ee72b2f94d..4ecff0a2dd 100644 --- a/doc/contributing.texi +++ b/doc/contributing.texi @@ -961,6 +961,19 @@ often better to clone the repository. Don't use the @command{name} field in the URL: it is not very useful and if the name changes, the URL will probably be wrong. +@item +See if Guix builds with +@example +guix environment --pure guix -- make +@end example +and look for warnings, especially those about use of undefined symbols. + +@item +Make sure your changes do not break Guix and simulate a @code{guix pull} with: +@example +guix pull --url=/path/to/your/checkout --profile=/tmp/guix.master +@end example + @end enumerate When posting a patch to the mailing list, use @samp{[PATCH] @dots{}} as diff --git a/doc/guix.texi b/doc/guix.texi index 7d50f31d20..01980bf2d3 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -39,7 +39,7 @@ Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@* Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016, 2017, 2018, 2019 Christopher Baines@* -Copyright @copyright{} 2017, 2018 Clément Lassieur@* +Copyright @copyright{} 2017, 2018, 2019 Clément Lassieur@* Copyright @copyright{} 2017, 2018 Mathieu Othacehe@* Copyright @copyright{} 2017 Federico Beffa@* Copyright @copyright{} 2017, 2018 Carlo Zancanaro@* @@ -5053,7 +5053,7 @@ Yet another option is to produce a SquashFS image with the following command: @example -guix pack -f squashfs guile emacs geiser +guix pack -f squashfs bash guile emacs geiser @end example @noindent @@ -5088,6 +5088,21 @@ package names passed on the command line or in the manifest file. This produces a SquashFS image containing all the specified binaries and symlinks, as well as empty mount points for virtual file systems like procfs. + +@quotation Note +Singularity @emph{requires} you to provide @file{/bin/sh} in the image. +For that reason, @command{guix pack -f squashfs} always implies @code{-S +/bin=bin}. Thus, your @command{guix pack} invocation must always start +with something like: + +@example +guix pack -f squashfs bash @dots{} +@end example + +If you forget the @code{bash} (or similar) package, @command{singularity +run} and @command{singularity exec} will fail with an unhelpful ``no +such file or directory'' message. +@end quotation @end table @cindex relocatable binaries @@ -7442,6 +7457,7 @@ native package build: (gexp->derivation "vi" #~(begin (mkdir #$output) + (mkdir (string-append #$output "/bin")) (system* (string-append #+coreutils "/bin/ln") "-s" (string-append #$emacs "/bin/emacs") @@ -9676,6 +9692,14 @@ and exit. Only enable the checkers specified in a comma-separated list using the names returned by @code{--list-checkers}. +@item --load-path=@var{directory} +@itemx -L @var{directory} +Add @var{directory} to the front of the package module search path +(@pxref{Package Modules}). + +This allows users to define their own packages and make them visible to +the command-line tools. + @end table @node Invoking guix size @@ -11244,9 +11268,12 @@ corresponding device mapping established. This is a list of symbols denoting mount flags. Recognized flags include @code{read-only}, @code{bind-mount}, @code{no-dev} (disallow access to special files), @code{no-suid} (ignore setuid and setgid -bits), @code{no-atime} (do not update file access times), and @code{no-exec} -(disallow program execution). @xref{Mount-Unmount-Remount,,, libc, The GNU C -Library Reference Manual}, for more information on these flags. +bits), @code{no-atime} (do not update file access times), +@code{strict-atime} (update file access time), @code{lazy-time} (only +update time on the in-memory version of the file inode), and +@code{no-exec} (disallow program execution). +@xref{Mount-Unmount-Remount,,, libc, The GNU C Library Reference +Manual}, for more information on these flags. @item @code{options} (default: @code{#f}) This is either @code{#f}, or a string denoting mount options passed to the @@ -18280,7 +18307,7 @@ When @var{interface} is @code{127.0.0.1}, only local clients can connect; when it is @code{0.0.0.0}, connections can come from any networking interface. -@item @code{package} (default: @code{bitlbee}) +@item @code{bitlbee} (default: @code{bitlbee}) The BitlBee package to use. @item @code{plugins} (default: @code{'()}) @@ -25900,6 +25927,15 @@ switch to it@footnote{This action (and the related actions @code{switch-generation} and @code{roll-back}) are usable only on systems already running Guix System.}. +@quotation Note +@c The paragraph below refers to the problem discussed at +@c . +It is highly recommended to run @command{guix pull} once before you run +@command{guix system reconfigure} for the first time (@pxref{Invoking +guix pull}). Failing to do that you would see an older version of Guix +once @command{reconfigure} has completed. +@end quotation + This effects all the configuration specified in @var{file}: user accounts, system services, global package list, setuid programs, etc. The command starts system services specified in @var{file} that are not @@ -25918,14 +25954,27 @@ It also adds a bootloader menu entry for the new OS configuration, entries for older configurations to a submenu, allowing you to choose an older system generation at boot time should you need it. -@quotation Note -@c The paragraph below refers to the problem discussed at -@c . -It is highly recommended to run @command{guix pull} once before you run -@command{guix system reconfigure} for the first time (@pxref{Invoking -guix pull}). Failing to do that you would see an older version of Guix -once @command{reconfigure} has completed. -@end quotation +@cindex provenance tracking, of the operating system +Upon completion, the new system is deployed under +@file{/run/current-system}. This directory contains @dfn{provenance +meta-data}: the list of channels in use (@pxref{Channels}) and +@var{file} itself, when available. This information is useful should +you later want to inspect how this particular generation was built. + +In fact, assuming @var{file} is self-contained, you can later rebuild +generation @var{n} of your operating system with: + +@example +guix time-machine \ + -C /var/guix/profiles/system-@var{n}-link/channels.scm -- \ + system reconfigure \ + /var/guix/profiles/system-@var{n}-link/configuration.scm +@end example + +You can think of it as some sort of built-in version control! Your +system is not just a binary artifact: @emph{it carries its own source}. +@xref{Service Reference, @code{provenance-service-type}}, for more +information on provenance tracking. @item switch-generation @cindex generations @@ -26187,6 +26236,25 @@ This works as per @command{guix build} (@pxref{Invoking guix build}). Return the derivation file name of the given operating system without building anything. +@cindex provenance tracking, of the operating system +@item --save-provenance +As discussed above, @command{guix system init} and @command{guix system +reconfigure} always save provenance information @i{via} a dedicated +service (@pxref{Service Reference, @code{provenance-service-type}}). +However, other commands don't do that by default. If you wish to, say, +create a virtual machine image that contains provenance information, you +can run: + +@example +guix system vm-image --save-provenance config.scm +@end example + +That way, the resulting image will effectively ``embed its own source'' +in the form of meta-data in @file{/run/current-system}. With that +information, one can rebuild the image to make sure it really contains +what it pretends to contain; or they could use that to derive a variant +of the image. + @item --file-system-type=@var{type} @itemx -t @var{type} For the @code{disk-image} action, create a file system of the given @@ -26260,6 +26328,10 @@ bootloader boot menu: @table @code +@item describe +Describe the current system generation: its file name, the kernel and +bootloader used, etc., as well as provenance information when available. + @item list-generations List a summary of each generation of the operating system available on disk, in a human-readable way. This is similar to the @@ -27043,6 +27115,54 @@ programs under @file{/run/current-system/profile}. Other services can extend it by passing it lists of packages to add to the system profile. @end defvr +@cindex provenance tracking, of the operating system +@defvr {Scheme Variable} provenance-service-type +This is the type of the service that records @dfn{provenance meta-data} +in the system itself. It creates several files under +@file{/run/current-system}: + +@table @file +@item channels.scm +This is a ``channel file'' that can be passed to @command{guix pull -C} +or @command{guix time-machine -C}, and which describes the channels used +to build the system, if that information was available +(@pxref{Channels}). + +@item configuration.scm +This is the file that was passed as the value for this +@code{provenance-service-type} service. By default, @command{guix +system reconfigure} automatically passes the OS configuration file it +received on the command line. + +@item provenance +This contains the same information as the two other files but in a +format that is more readily processable. +@end table + +In general, these two pieces of information (channels and configuration +file) are enough to reproduce the operating system ``from source''. + +@quotation Caveats +This information is necessary to rebuild your operating system, but it +is not always sufficient. In particular, @file{configuration.scm} +itself is insufficient if it is not self-contained---if it refers to +external Guile modules or to extra files. If you want +@file{configuration.scm} to be self-contained, we recommend that modules +or files it refers to be part of a channel. + +Besides, provenance meta-data is ``silent'' in the sense that it does +not change the bits contained in your system, @emph{except for the +meta-data bits themselves}. Two different OS configurations or sets of +channels can lead to the same system, bit-for-bit; when +@code{provenance-service-type} is used, these two systems will have +different meta-data and thus different store file names, which makes +comparison less trivial. +@end quotation + +This service is automatically added to your operating system +configuration when you use @command{guix system reconfigure}, +@command{guix system init}, or @command{guix deploy}. +@end defvr @node Shepherd Services @subsection Shepherd Services diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm index cb90fa0907..13c44aa728 100644 --- a/gnu/build/file-systems.scm +++ b/gnu/build/file-systems.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2016, 2017 David Craven ;;; Copyright © 2017 Mathieu Othacehe +;;; Copyright © 2019 Guillaume Le Vaillant ;;; ;;; This file is part of GNU Guix. ;;; @@ -577,6 +578,10 @@ (define (mount-flags->bit-mask flags) (logior MS_NOEXEC (loop rest))) (('no-atime rest ...) (logior MS_NOATIME (loop rest))) + (('strict-atime rest ...) + (logior MS_STRICTATIME (loop rest))) + (('lazy-time rest ...) + (logior MS_LAZYTIME (loop rest))) (() 0)))) diff --git a/gnu/local.mk b/gnu/local.mk index 4592e4c38a..0224b7101b 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -23,6 +23,8 @@ # Copyright © 2019 Guillaume Le Vaillant # Copyright © 2019 John Soo # Copyright © 2019 Jonathan Brielmaier +# Copyright © 2019 Evan Straw +# Copyright © 2019 Brett Gilio # # This file is part of GNU Guix. # @@ -924,10 +926,8 @@ dist_patch_DATA = \ %D%/packages/patches/glibc-2.28-supported-locales.patch \ %D%/packages/patches/glibc-supported-locales.patch \ %D%/packages/patches/glm-restore-install-target.patch \ - %D%/packages/patches/glusterfs-use-PATH-instead-of-hardcodes.patch \ %D%/packages/patches/gmp-arm-asm-nothumb.patch \ %D%/packages/patches/gmp-faulty-test.patch \ - %D%/packages/patches/gnome-control-center-udisks.patch \ %D%/packages/patches/gnome-shell-theme.patch \ %D%/packages/patches/gnome-tweaks-search-paths.patch \ %D%/packages/patches/gnutls-skip-trust-store-test.patch \ @@ -947,6 +947,7 @@ dist_patch_DATA = \ %D%/packages/patches/guile-2.2-skip-oom-test.patch \ %D%/packages/patches/guile-default-utf8.patch \ %D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \ + %D%/packages/patches/guile-finalization-crash.patch \ %D%/packages/patches/guile-linux-syscalls.patch \ %D%/packages/patches/guile-present-coding.patch \ %D%/packages/patches/guile-relocatable.patch \ @@ -1132,6 +1133,7 @@ dist_patch_DATA = \ %D%/packages/patches/mcrypt-CVE-2012-4409.patch \ %D%/packages/patches/mcrypt-CVE-2012-4426.patch \ %D%/packages/patches/mcrypt-CVE-2012-4527.patch \ + %D%/packages/patches/mes-remove-store-name.patch \ %D%/packages/patches/mesa-skip-disk-cache-test.patch \ %D%/packages/patches/mesa-timespec-test-32bit.patch \ %D%/packages/patches/mescc-tools-boot.patch \ @@ -1164,6 +1166,7 @@ dist_patch_DATA = \ %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch \ %D%/packages/patches/mutt-store-references.patch \ %D%/packages/patches/m4-gnulib-libio.patch \ + %D%/packages/patches/ncompress-fix-softlinks.patch \ %D%/packages/patches/netcdf-date-time.patch \ %D%/packages/patches/netcdf-tst_h_par.patch \ %D%/packages/patches/netpbm-CVE-2017-2586.patch \ @@ -1176,6 +1179,7 @@ dist_patch_DATA = \ %D%/packages/patches/ngircd-handle-zombies.patch \ %D%/packages/patches/nm-plugin-path.patch \ %D%/packages/patches/nsis-env-passthru.patch \ + %D%/packages/patches/nss-CVE-2019-11745.patch \ %D%/packages/patches/nss-freebl-stubs.patch \ %D%/packages/patches/nss-increase-test-timeout.patch \ %D%/packages/patches/nss-pkgconfig.patch \ @@ -1295,7 +1299,6 @@ dist_patch_DATA = \ %D%/packages/patches/python-mox3-python3.6-compat.patch \ %D%/packages/patches/python-testtools.patch \ %D%/packages/patches/python-paste-remove-timing-test.patch \ - %D%/packages/patches/python-pyatspi-python-37.patch \ %D%/packages/patches/python-pycrypto-CVE-2013-7459.patch \ %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \ @@ -1332,7 +1335,6 @@ dist_patch_DATA = \ %D%/packages/patches/retroarch-disable-online-updater.patch \ %D%/packages/patches/ruby-rubygems-276-for-ruby24.patch \ %D%/packages/patches/ruby-rack-ignore-failing-test.patch \ - %D%/packages/patches/ruby-safe-yaml-add-require-time.patch \ %D%/packages/patches/ruby-tzinfo-data-ignore-broken-test.patch\ %D%/packages/patches/runc-CVE-2019-5736.patch \ %D%/packages/patches/rust-1.19-mrustc.patch \ @@ -1363,7 +1365,6 @@ dist_patch_DATA = \ %D%/packages/patches/soundconverter-remove-gconf-dependency.patch \ %D%/packages/patches/steghide-fixes.patch \ %D%/packages/patches/streamlink-update-test.patch \ - %D%/packages/patches/stumpwm-fix-broken-read-one-line.patch \ %D%/packages/patches/supercollider-boost-1.70-build-fix.patch \ %D%/packages/patches/superlu-dist-awpm-grid.patch \ %D%/packages/patches/superlu-dist-fix-mpi-deprecations.patch \ @@ -1400,8 +1401,6 @@ dist_patch_DATA = \ %D%/packages/patches/ttf2eot-cstddef.patch \ %D%/packages/patches/ttfautohint-source-date-epoch.patch \ %D%/packages/patches/tomb-fix-errors-on-open.patch \ - %D%/packages/patches/totem-meson-compat.patch \ - %D%/packages/patches/totem-meson-easy-codec.patch \ %D%/packages/patches/tuxpaint-stamps-path.patch \ %D%/packages/patches/txr-shell.patch \ %D%/packages/patches/u-boot-fix-mkimage-header-verification.patch \ @@ -1443,6 +1442,7 @@ dist_patch_DATA = \ %D%/packages/patches/wavpack-CVE-2018-7253.patch \ %D%/packages/patches/wavpack-CVE-2018-7254.patch \ %D%/packages/patches/weasyprint-library-paths.patch \ + %D%/packages/patches/websocketpp-fix-for-boost-1.70.patch \ %D%/packages/patches/wicd-bitrate-none-fix.patch \ %D%/packages/patches/wicd-get-selected-profile-fix.patch \ %D%/packages/patches/wicd-urwid-1.3.patch \ diff --git a/gnu/machine.scm b/gnu/machine.scm index 05b03b21d4..bdd92d9592 100644 --- a/gnu/machine.scm +++ b/gnu/machine.scm @@ -33,7 +33,6 @@ (define-module (gnu machine) machine machine? - this-machine machine-operating-system machine-environment @@ -89,15 +88,18 @@ (define-record-type* environment-type ;;; Declarations for machines in a deployment. ;;; -(define-record-type* machine - make-machine +(define-record-type* machine make-machine machine? - this-machine - (operating-system machine-operating-system) ; + (operating-system %machine-operating-system); (environment machine-environment) ; symbol (configuration machine-configuration ; configuration object (default #f))) ; specific to environment +(define (machine-operating-system machine) + "Return the operating system of MACHINE." + (operating-system-with-provenance + (%machine-operating-system machine))) + (define (machine-display-name machine) "Return the host-name identifying MACHINE." (operating-system-host-name (machine-operating-system machine))) diff --git a/gnu/machine/ssh.scm b/gnu/machine/ssh.scm index 23ae917b79..d6ce1253a4 100644 --- a/gnu/machine/ssh.scm +++ b/gnu/machine/ssh.scm @@ -74,7 +74,6 @@ (define-module (gnu machine ssh) (define-record-type* machine-ssh-configuration make-machine-ssh-configuration machine-ssh-configuration? - this-machine-ssh-configuration (host-name machine-ssh-configuration-host-name) ; string (system machine-ssh-configuration-system) ; string (build-locally? machine-ssh-configuration-build-locally? ; boolean @@ -103,6 +102,9 @@ (define (machine-ssh-session machine) (port (machine-ssh-configuration-port config)) (identity (machine-ssh-configuration-identity config)) (host-key (machine-ssh-configuration-host-key config))) + (unless host-key + (warning (G_ " without a 'host-key' \ +is deprecated~%"))) (open-ssh-session host-name #:user user #:port port diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 6fbceb4421..c2be85e81e 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -209,10 +209,10 @@ (define-public shepherd `(("pkg-config" ,pkg-config) ;; This is the Guile we use as a cross-compiler... - ("guile" ,guile-2.2))) + ("guile" ,guile-2.2/bug-fix))) (inputs ;; ... and this is the one that appears in shebangs when cross-compiling. - `(("guile" ,guile-2.2) + `(("guile" ,guile-2.2/bug-fix) ;for ;; The 'shepherd' command uses Readline when used interactively. It's ;; an unusual use case though, so we don't propagate it. @@ -449,7 +449,7 @@ (define-public inetutils (define-public shadow (package (name "shadow") - (version "4.7") + (version "4.8") (source (origin (method url-fetch) (uri (string-append @@ -457,7 +457,7 @@ (define-public shadow "download/" version "/shadow-" version ".tar.xz")) (sha256 (base32 - "0v71474rx38lg9kidrm4xbk35sg3icv3s5pk2b42icp3lyj9dqg5")))) + "0r5c1p8mfwhw11gb6mjsx1k7d4c32dxai7yss8n5pwy1p61ndd34")))) (build-system gnu-build-system) (arguments `(;; Assume System V `setpgrp (void)', which is the default on GNU @@ -629,7 +629,7 @@ (define-public netcat (define-public netcat-openbsd (package (name "netcat-openbsd") - (version "1.203-2") + (version "1.206-1") (source (origin (method git-fetch) (uri (git-reference @@ -638,7 +638,7 @@ (define-public netcat-openbsd (file-name (git-file-name name version)) (sha256 (base32 - "0j85gzbjzs6yrhgabh3zkwzd27qkr5s0zjjczl0hah8q7yhrjk3m")))) + "08r3mmck3s5pbvwyq19wp5g8jqcxza3cm8nkc6jm7rqn4jdydc4z")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no test suite diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 7b0c540d7a..24c294b8e2 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1966,15 +1966,15 @@ (define-public lvtk (define-public openal (package (name "openal") - (version "1.19.1") + (version "1.20.0") (source (origin (method url-fetch) (uri (string-append - "http://openal-soft.org/openal-releases/openal-soft-" + "https://openal-soft.org/openal-releases/openal-soft-" version ".tar.bz2")) (sha256 (base32 - "1sdjhkz2gd6lbnwphi1b6aw3br4wv2lik5vnqh6mxfc8a7zqfbsw")))) + "03p6s5gap0lvig2fs0a8nib5rxsc24dbqjsydpwvlm5l49wlk2f0")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; no check target @@ -1983,26 +1983,19 @@ (define-public openal (add-after 'unpack 'use-full-library-paths (lambda* (#:key inputs #:allow-other-keys) - (substitute* "Alc/backends/pulseaudio.c" + (substitute* "alc/backends/pulseaudio.cpp" (("#define PALIB \"libpulse\\.so\\.0\"") (string-append "#define PALIB \"" (assoc-ref inputs "pulseaudio") "/lib/libpulse.so.0" "\""))) - (substitute* "Alc/backends/alsa.c" + (substitute* "alc/backends/alsa.cpp" (("LoadLib\\(\"libasound\\.so\\.2\"\\)") (string-append "LoadLib(\"" (assoc-ref inputs "alsa-lib") "/lib/libasound.so.2" "\")"))) #t))))) - (native-inputs - `(;; FIXME: On i686-linux, GCC 7 hits an internal compiler error - ;; upon building utils/makehrtf.c:3281: - ;; "internal compiler error: in gen_rtx_SUBREG, at emit-rtl.c:908" - ;; https://ci.guix.gnu.org/log/r2fjx9m75m9rifg2yjbnn853wqy2547n-openal-1.19.1 - ;; Remove this when the default compiler is GCC 9 or later. - ("gcc" ,gcc-9))) (inputs `(("alsa-lib" ,alsa-lib) ("pulseaudio" ,pulseaudio))) @@ -2014,7 +2007,7 @@ (define-public openal including air absorption, occlusion, and environmental reverb, are available through the EFX extension. It also facilitates streaming audio, multi-channel buffers, and audio capture.") - (home-page "http://openal-soft.org/") + (home-page "https://openal-soft.org/") (license license:lgpl2.0+))) (define-public freealut diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index 5c191a2c0b..e584a7bced 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -3044,6 +3044,63 @@ (define-public r-gkmsvm kernels, including: gkmSVM, kmer-SVM, mismatch kernel and wildcard kernel.") (license license:gpl2+))) +;; This is a CRAN package, but it depends on multtest from Bioconductor. +(define-public r-mutoss + (package + (name "r-mutoss") + (version "0.1-12") + (source + (origin + (method url-fetch) + (uri (cran-uri "mutoss" version)) + (sha256 + (base32 + "1yk7p7pb2xm38d3j19ysgwmix48lvimbhkhjjwk5jmr1a0ysx298")))) + (properties `((upstream-name . "mutoss"))) + (build-system r-build-system) + (propagated-inputs + `(("r-multcomp" ,r-multcomp) + ("r-multtest" ,r-multtest) + ("r-mvtnorm" ,r-mvtnorm) + ("r-plotrix" ,r-plotrix))) + (home-page "https://github.com/kornl/mutoss/") + (synopsis "Unified multiple testing procedures") + (description + "This package is designed to ease the application and comparison of +multiple hypothesis testing procedures for FWER, gFWER, FDR and FDX. Methods +are standardized and usable by the accompanying mutossGUI package.") + ;; Any version of the GPL. + (license (list license:gpl2+ license:gpl3+)))) + +;; This is a CRAN package, but it depends on mutoss, which depends on multtest +;; from Bioconductor, so we put it here. +(define-public r-metap + (package + (name "r-metap") + (version "1.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "metap" version)) + (sha256 + (base32 + "0pfbcixjrzx81l9wqhlp55khg9k63zf8pvg2n39c19akr4ppzhvf")))) + (build-system r-build-system) + (propagated-inputs + `(("r-lattice" ,r-lattice) + ("r-mutoss" ,r-mutoss) + ("r-rdpack" ,r-rdpack) + ("r-tfisher" ,r-tfisher))) + (home-page "http://www.dewey.myzen.co.uk/meta/meta.html") + (synopsis "Meta-analysis of significance values") + (description + "The canonical way to perform meta-analysis involves using effect sizes. +When they are not available this package provides a number of methods for +meta-analysis of significance values including the methods of Edgington, +Fisher, Stouffer, Tippett, and Wilkinson; a number of data-sets to replicate +published results; and a routine for graphical display.") + (license license:gpl2))) + (define-public r-triform (package (name "r-triform") diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 74a44874ee..bdb3ff761b 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -8239,6 +8239,35 @@ (define-public r-qtl two-dimensional genome scans.") (license license:gpl3))) +(define-public r-qtl2 + (package + (name "r-qtl2") + (version "0.20") + (source (origin + (method git-fetch) + ;; Not yet available in cran. + (uri (git-reference + (url "https://github.com/rqtl/qtl2.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0l1asr28q25jzbwrbg5490962sg3y4sjrd0qf09p78ws1aq8vfs0")))) + (build-system r-build-system) + (propagated-inputs + `(("r-data-table" ,r-data-table) + ("r-jsonlite" ,r-jsonlite) + ("r-rcpp" ,r-rcpp) + ("r-rcppeigen" ,r-rcppeigen) + ("r-rsqlite" ,r-rsqlite) + ("r-yaml" ,r-yaml))) + (home-page "https://kbroman.org/qtl2/") + (synopsis + "QTL analysis software for high-dimensional data and complex cross designs") + (description + "R/qtl2 (aka qtl2) is a reimplementation of the QTL analysis software +R/qtl, to better handle high-dimensional data and complex cross designs.") + (license license:gpl3))) + (define-public r-zlibbioc (package (name "r-zlibbioc") diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm index 8ef017845f..c5930fccb5 100644 --- a/gnu/packages/bittorrent.scm +++ b/gnu/packages/bittorrent.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2018 Fis Trivial ;;; Copyright © 2018 Nam Nguyen ;;; Copyright © 2018 Ricardo Wurmus +;;; Copyright © 2019 Brett Gilio ;;; ;;; This file is part of GNU Guix. ;;; @@ -416,7 +417,7 @@ (define-public libtorrent-rasterbar (define-public qbittorrent (package (name "qbittorrent") - (version "4.1.9.1") + (version "4.2.0") (source (origin (method git-fetch) @@ -425,7 +426,7 @@ (define-public qbittorrent (commit (string-append "release-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "19zgqlby7i1kr20wa4zd99qzd062a879xxxbmlf40rnqiqy4bhyi")))) + (base32 "17vm6aa2k8k1q14z9r2r06c794bcr4m0l0fdsn08wid6mj1zjsbx")))) (build-system gnu-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 720f7fccbc..c0cb4ae7fd 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -1749,7 +1749,7 @@ (define-public python2-pylint (let ((pylint (package-with-python2 (strip-python2-variant python-pylint)))) (package (inherit pylint) - (version "1.7.2") + (version "1.9.5") (source (origin (method git-fetch) @@ -1759,7 +1759,7 @@ (define-public python2-pylint (file-name (git-file-name (package-name pylint) version)) (sha256 (base32 - "0yyc1gxq66li2adyx8njs83dh1pliylzkdmihw0k5bn6z4aakh8s")))) + "02a89d8a47s7nfiv1ady3j0sg2sbyja3np145brarfp5x9qxz9x2")))) (arguments `(,@(package-arguments pylint) #:phases diff --git a/gnu/packages/cluster.scm b/gnu/packages/cluster.scm index 9548352d12..03700b0bcb 100644 --- a/gnu/packages/cluster.scm +++ b/gnu/packages/cluster.scm @@ -26,6 +26,7 @@ (define-module (gnu packages cluster) #:use-module (guix packages) #:use-module (gnu packages autotools) #:use-module (gnu packages gettext) + #:use-module (gnu packages libevent) #:use-module (gnu packages linux) #:use-module (gnu packages pkg-config) #:use-module (gnu packages sphinx) @@ -87,7 +88,7 @@ (define-public keepalived (define-public libraft (package (name "libraft") - (version "0.9.5") + (version "0.9.11") (home-page "https://github.com/canonical/raft") (source (origin (method git-fetch) @@ -96,10 +97,17 @@ (define-public libraft (file-name (git-file-name name version)) (sha256 (base32 - "1q49f5mmv6nr6dxhnp044xwc6jlczgh0nj0bl6718wiqh28411x0")))) - (arguments '(#:configure-flags '("--disable-uv"))) - ;; The uv plugin tests fail, if libuv (or the example) is enabled, - ;; because setting up the environment requires too much privileges. + "00rsq4z9nykmf7r5rlpv1y6bvckcmg3zv57vh1h681y5pij6cch1")))) + (arguments '(#:configure-flags '("--enable-uv") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-failing-tests + (lambda _ + (substitute* "Makefile.am" + ((".*test_uv_append.c.*") "")) + #t))))) + (inputs + `(("libuv" ,libuv))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 90cd001ba2..5618062a22 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -176,9 +176,11 @@ (define tcc-boot0 (version (string-append version "-" revision "." (string-take commit 7))) (source (origin (method url-fetch) - (uri (string-append "https://gitlab.com/janneke/tinycc" - "/-/archive/" commit - "/tinycc-" commit ".tar.gz")) + (uri (list (string-append "mirror://gnu/guix/mirror" + "/tinycc-" commit ".tar.gz") + (string-append "https://gitlab.com/janneke/tinycc" + "/-/archive/" commit + "/tinycc-" commit ".tar.gz"))) (sha256 (base32 "1hmzn1pq0x22ppd80hyrn5qzqq94mxd0ychzj6vrr2vnj2frjv5b")))) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 905931acbd..df42c474d9 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -24,6 +24,7 @@ ;;; Copyright © 2018 Joshua Sierles, Nextjournal ;;; Copyright © 2018, 2019 Pierre Neidhardt ;;; Copyright © 2019 Nicolas Goaziou +;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen ;;; ;;; This file is part of GNU Guix. ;;; @@ -2108,3 +2109,32 @@ (define-public makeself-safeextract archives generated by @command{makeself} or @command{mojo} without running the possibly untrusted extraction shell script.") (license license:gpl3+)))) + +(define-public ncompress + (package + (name "ncompress") + (version "4.2.4.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vapier/ncompress") + (commit (string-append "v" version)))) + (patches (search-patches "ncompress-fix-softlinks.patch")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0s3ik7k5a5vzcfiayhsxrc87drg3l425aqapspmw5py91b9jhc8r")))) + (arguments + '(#:make-flags (list "CC=gcc" + (string-append "BINDIR=" %output "/bin") + (string-append "MANDIR=" %output "/share/man/man1")) + #:phases (modify-phases %standard-phases + (delete 'configure)))) + (build-system gnu-build-system) + (home-page "https://github.com/vapier/ncompress/") + (synopsis "Original Lempel-Ziv compress/uncompress programs") + (description "(N)compress provides the original compress and uncompress +programs that used to be the de facto UNIX standard for compressing and +uncompressing files. These programs implement a fast, simple Lempel-Ziv (LZW) +file compression algorithm.") + (license license:gpl2+))) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 592200bb13..ad8c6ebe67 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -421,14 +421,14 @@ (define-public r-reprex (define-public r-callr (package (name "r-callr") - (version "3.3.2") + (version "3.4.0") (source (origin (method url-fetch) (uri (cran-uri "callr" version)) (sha256 (base32 - "12dbqzjngbyaqdyw0yq1blyfx8pagcvx1vqj2jm451hs25nhdrnh")))) + "1hvxw2glizq8g0qnxakcxh8jc5scn0hp1x8i70fdpqwwbgx49slr")))) (build-system r-build-system) (propagated-inputs `(("r-r6" ,r-r6) @@ -619,14 +619,14 @@ (define-public r-htmlwidgets (define-public r-htmltable (package (name "r-htmltable") - (version "1.13.2") + (version "1.13.3") (source (origin (method url-fetch) (uri (cran-uri "htmlTable" version)) (sha256 (base32 - "0h6jslchlx1dzqqdb70c3n9xlapcym9ykycvr0hc4q3450y8qmvh")))) + "0g9r156k9yl1f092hfw3b9wjx11akf0shbi3x0d0mvpnflvc8nfl")))) (properties `((upstream-name . "htmlTable"))) (build-system r-build-system) (propagated-inputs @@ -2472,14 +2472,14 @@ (define-public r-fitdistrplus (define-public r-energy (package (name "r-energy") - (version "1.7-6") + (version "1.7-7") (source (origin (method url-fetch) (uri (cran-uri "energy" version)) (sha256 (base32 - "16m8bxfgr9sdisjy2qrv6fv5xxwcc9q890l0hpbwq6qzisrdn3lh")))) + "13wnx5nwk7nsv7vf5sxhz4y0rxrnzm76ldgywk1bxrz67srqzf37")))) (build-system r-build-system) (propagated-inputs `(("r-boot" ,r-boot) @@ -2821,14 +2821,14 @@ (define-public r-linprog (define-public r-geometry (package (name "r-geometry") - (version "0.4.4") + (version "0.4.5") (source (origin (method url-fetch) (uri (cran-uri "geometry" version)) (sha256 (base32 - "1mx5n5mw63nij4n6crs9165mlls4fnh1ipw5ch467rjsidgl0mg8")))) + "1n10l8ax3783v3lgaacb15qsn8b3f0wpmhg3k39j31s6ciyd3vcg")))) (build-system r-build-system) (propagated-inputs `(("r-magic" ,r-magic) @@ -3745,18 +3745,20 @@ (define-public r-ggjoy (define-public r-cli (package (name "r-cli") - (version "1.1.0") + (version "2.0.0") (source (origin (method url-fetch) (uri (cran-uri "cli" version)) (sha256 (base32 - "02hdwvdq5nic6dhxj88jbgsc9m8yrz3yibigg6szkggxyk6hzh2g")))) + "1gv3zqdipj29ivkw5dsi1qdlra7q4lcrcqvlg9fns7d670yglfki")))) (build-system r-build-system) (propagated-inputs `(("r-assertthat" ,r-assertthat) - ("r-crayon" ,r-crayon))) + ("r-crayon" ,r-crayon) + ("r-fansi" ,r-fansi) + ("r-glue" ,r-glue))) (home-page "https://github.com/r-lib/cli#readme") (synopsis "Helpers for developing command line interfaces") (description "This package provides a suite of tools designed to build @@ -4121,31 +4123,6 @@ (define-public r-tinytex automatically.") (license license:expat))) -(define-public r-metap - (package - (name "r-metap") - (version "1.1") - (source - (origin - (method url-fetch) - (uri (cran-uri "metap" version)) - (sha256 - (base32 - "10kv7z8pik5iy374h399vws0ldf41y2nczlwh8axqf9dcwl084i0")))) - (build-system r-build-system) - (propagated-inputs - `(("r-lattice" ,r-lattice) - ("r-rdpack" ,r-rdpack))) - (home-page "http://www.dewey.myzen.co.uk/meta/meta.html") - (synopsis "Meta-analysis of significance values") - (description - "The canonical way to perform meta-analysis involves using effect sizes. -When they are not available this package provides a number of methods for -meta-analysis of significance values including the methods of Edgington, -Fisher, Stouffer, Tippett, and Wilkinson; a number of data-sets to replicate -published results; and a routine for graphical display.") - (license license:gpl2))) - (define-public r-network (package (name "r-network") @@ -4191,6 +4168,30 @@ (define-public r-statnet-common software developed by the Statnet Project.") (license license:gpl3))) +(define-public r-statcheck + (package + (name "r-statcheck") + (version "1.3.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "statcheck" version)) + (sha256 + (base32 + "0ivybdcrymlsfv6pg6p5bv70qdvgxf2vgp0kf4r0pf2fcvav1mcp")))) + (build-system r-build-system) + (propagated-inputs + `(("r-ggplot2" ,r-ggplot2) + ("r-plyr" ,r-plyr) + ("r-rmarkdown" ,r-rmarkdown))) + (home-page "https://cran.r-project.org/web/packages/statcheck/") + (synopsis "Extract statistics from articles and recompute p-values") + (description "This package can automatically extract statistical +null-hypothesis significant testing (NHST) results from articles and recompute +the p-values based on the reported test statistic and degrees of freedom to +detect possible inconsistencies.") + (license license:gpl2))) + (define-public r-sna (package (name "r-sna") @@ -4215,6 +4216,35 @@ (define-public r-sna generation, and 2D/3D network visualization.") (license license:gpl2+))) +(define-public r-tfisher + (package + (name "r-tfisher") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "TFisher" version)) + (sha256 + (base32 + "0vz74ww1lf1prfwz74hfsi3a8nzq8ss7aqjr85c1d87vss2796xx")))) + (properties `((upstream-name . "TFisher"))) + (build-system r-build-system) + (propagated-inputs + `(("r-matrix" ,r-matrix) + ("r-mvtnorm" ,r-mvtnorm) + ("r-sn" ,r-sn))) + (home-page "https://cran.r-project.org/web/packages/TFisher/") + (synopsis "Optimal thresholding Fisher's p-value combination method") + (description + "This package provides the @dfn{cumulative distribution function} (CDF), +quantile, and statistical power calculator for a collection of thresholding +Fisher's p-value combination methods, including Fisher's p-value combination +method, truncated product method and, in particular, soft-thresholding +Fisher's p-value combination method which is proven to be optimal in some +context of signal detection. The p-value calculator for the omnibus version +of these tests are also included.") + (license license:gpl2))) + (define-public r-ttr (package (name "r-ttr") @@ -4515,14 +4545,14 @@ (define-public r-urca (define-public r-cubature (package (name "r-cubature") - (version "2.0.3") + (version "2.0.4") (source (origin (method url-fetch) (uri (cran-uri "cubature" version)) (sha256 (base32 - "0wvs80i4axj7pdcy9gjl08qzjbcjkldha94xy4gdxc34vgmh7gvr")))) + "0jpyq8j7x06dpiz29w48av879ygldzgls9z810192hsymkmfaz6r")))) (build-system r-build-system) (propagated-inputs `(("r-rcpp" ,r-rcpp))) @@ -4683,22 +4713,50 @@ (define-public r-powerplus exponentiation.") (license license:gpl2))) +(define-public r-egg + (package + (name "r-egg") + (version "0.4.5") + (source + (origin + (method url-fetch) + (uri (cran-uri "egg" version)) + (sha256 + (base32 + "1fy7srpiavfn8kyrr1m84an7acgwi6ydzrg71m3b0vk7y9ybmj0m")))) + (properties `((upstream-name . "egg"))) + (build-system r-build-system) + (propagated-inputs + `(("r-ggplot2" ,r-ggplot2) + ("r-gridextra" ,r-gridextra) + ("r-gtable" ,r-gtable))) + (home-page "https://cran.r-project.org/web/packages/egg") + (synopsis "Extensions for ggplot2") + (description + "This package provides miscellaneous functions to help customize ggplot2 +objects. High-level functions are provided to post-process ggplot2 layouts +and allow alignment between plot panels, as well as setting panel sizes to +fixed values. Other functions include a custom @code{geom}, and helper +functions to enforce symmetric scales or add tags to facetted plots.") + (license license:gpl3))) + (define-public r-heatmaply (package (name "r-heatmaply") - (version "0.16.0") + (version "1.0.0") (source (origin (method url-fetch) (uri (cran-uri "heatmaply" version)) (sha256 (base32 - "1qhxk48qh61qjxdlhl0qffdh3yh8iiwccid5ssngdv433q0cmyc1")))) + "0576gml3bcl7r1biigzj1rag2xzz422knbw7arc8d2gsakjj757g")))) (build-system r-build-system) (propagated-inputs `(("r-assertthat" ,r-assertthat) ("r-colorspace" ,r-colorspace) ("r-dendextend" ,r-dendextend) + ("r-egg" ,r-egg) ("r-ggplot2" ,r-ggplot2) ("r-htmlwidgets" ,r-htmlwidgets) ("r-magrittr" ,r-magrittr) @@ -5335,18 +5393,17 @@ (define-public r-zip (define-public r-openxlsx (package (name "r-openxlsx") - (version "4.1.3") + (version "4.1.4") (source (origin (method url-fetch) (uri (cran-uri "openxlsx" version)) (sha256 (base32 - "087zivh9xdh1kk8zci67ys0m2xq0slzwgnf0jl05yy4gsgb6nmyx")))) + "1mwxldw9i9nfksx1i6h1kfs7vmsz9fgyllbsipar4vnfyqhqp8q7")))) (build-system r-build-system) (propagated-inputs `(("r-rcpp" ,r-rcpp) - ("r-rlang" ,r-rlang) ("r-stringi" ,r-stringi) ("r-zip" ,r-zip))) (home-page "https://github.com/awalker89/openxlsx") @@ -5541,14 +5598,14 @@ (define-public r-rappdirs (define-public r-renv (package (name "r-renv") - (version "0.8.3") + (version "0.9.1") (source (origin (method url-fetch) (uri (cran-uri "renv" version)) (sha256 (base32 - "0034jlaq7z40q3hcpkjlaff37dpn46kvxvzw4scbwlw4x9q8sx9j")))) + "0mwqpcay6v1hnvhggsrn1chvdlhi9hwvsswas8ysygfy5wxxz1sm")))) (properties `((upstream-name . "renv"))) (build-system r-build-system) (home-page "https://rstudio.github.io/renv") @@ -5868,14 +5925,14 @@ (define-public r-factominer (define-public r-factoextra (package (name "r-factoextra") - (version "1.0.5") + (version "1.0.6") (source (origin (method url-fetch) (uri (cran-uri "factoextra" version)) (sha256 (base32 - "1l6m8k7qhdw8ndar8nhmym0lfyd1i2iszl1cicjax0vq23ss6xw1")))) + "0bpsbcmp6jpa9qk53dhfzghrz98dh0h0n68brl7rjz724yjbvhn8")))) (build-system r-build-system) (propagated-inputs `(("r-abind" ,r-abind) @@ -9204,14 +9261,14 @@ (define-public r-rgl (define-public r-multicool (package (name "r-multicool") - (version "0.1-10") + (version "0.1-11") (source (origin (method url-fetch) (uri (cran-uri "multicool" version)) (sha256 (base32 - "1ybg9piya9psqg42w9i3zsnavbxhkfklfwl7cb420i5nkq6wpc2v")))) + "0xk408qbz9cxwf51j3pmy55gcjcnws8mc6j3vyn9zhramxj7x40w")))) (build-system r-build-system) (propagated-inputs `(("r-rcpp" ,r-rcpp))) (home-page "https://cran.r-project.org/web/packages/multicool/") @@ -10996,13 +11053,13 @@ (define-public r-dotcall64 (define-public r-spam (package (name "r-spam") - (version "2.4-0") + (version "2.5-0") (source (origin (method url-fetch) (uri (cran-uri "spam" version)) (sha256 - (base32 "0xb7a0x1i93kzijr518m9plzmg8s3mxh5anwfx9xrkg5ipldvz10")))) + (base32 "1wfv45jq8zy8kyjr308zicc1461y1777qll1cy6lw4071f9rvba2")))) (build-system r-build-system) (propagated-inputs `(("r-dotcall64" ,r-dotcall64))) @@ -11451,14 +11508,14 @@ (define-public r-mcmc (define-public r-listenv (package (name "r-listenv") - (version "0.7.0") + (version "0.8.0") (source (origin (method url-fetch) (uri (cran-uri "listenv" version)) (sha256 (base32 - "0ma5jsri2zqkrlsm9nqpikl7imbwfy1glsmk13mblw0q245h49k1")))) + "0ps8bk7zlhbviawrw7vw25skjq81hkk3ijyi6g74dmfqy8zsyapx")))) (build-system r-build-system) (native-inputs `(("r-r-rsp" ,r-r-rsp))) ; vignette builder @@ -11474,14 +11531,14 @@ (define-public r-listenv (define-public r-globals (package (name "r-globals") - (version "0.12.4") + (version "0.12.5") (source (origin (method url-fetch) (uri (cran-uri "globals" version)) (sha256 (base32 - "0szyv1ayyk31bh3xqlkj43020w44xq6s4rw2bxwizyjssxm3b1br")))) + "1ha8iasgijp4q3v2b0b17y1wh7cd3nvzd9b03w49qm2bidkaf68m")))) (build-system r-build-system) (propagated-inputs `(("r-codetools" ,r-codetools))) @@ -12392,14 +12449,14 @@ (define-public r-irdisplay (define-public r-irkernel (package (name "r-irkernel") - (version "1.0.2") + (version "1.1") (source (origin (method url-fetch) (uri (cran-uri "IRkernel" version)) (sha256 (base32 - "040qig675zaxsf81ranmvk293amrswi5098k69wyq0vgqyin6vwp")))) + "1viqxs91dys1z4cf7gb59rmqvzb8lc7jdp4azrpmhgwa8qf46s94")))) (properties `((upstream-name . "IRkernel"))) (build-system r-build-system) (arguments @@ -14662,6 +14719,89 @@ (define-public r-rex regular expressions from human readable expressions") (license license:expat))) +(define-public r-xmlparsedata + (package + (name "r-xmlparsedata") + (version "1.0.3") + (source + (origin + (method url-fetch) + (uri (cran-uri "xmlparsedata" version)) + (sha256 + (base32 + "0gjr3l5z5dp276lchr2649as1rkj56d2mlvbr66yg393zzw50lsh")))) + (properties `((upstream-name . "xmlparsedata"))) + (build-system r-build-system) + (home-page "https://github.com/r-lib/xmlparsedata#readme") + (synopsis "Parse data of @code{R} code as an @code{XML} tree") + (description + "This package provides tools to convert the output of +@code{utils::getParseData()} to an @code{XML} tree, that one can search via +@code{XPath}, and is easier to manipulate in general.") + (license license:expat))) + +(define-public r-cyclocomp + (package + (name "r-cyclocomp") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "cyclocomp" version)) + (sha256 + (base32 + "0gky3svk02wiajw7nfjh30684h3qxili4bvsab0m7b6cggw6bgyd")))) + (properties `((upstream-name . "cyclocomp"))) + (build-system r-build-system) + (propagated-inputs + `(("r-callr" ,r-callr) + ("r-crayon" ,r-crayon) + ("r-desc" ,r-desc) + ("r-remotes" ,r-remotes) + ("r-withr" ,r-withr))) + (home-page "https://github.com/MangoTheCat/cyclocomp") + (synopsis "Cyclomatic complexity of R code") + (description + "Cyclomatic complexity is a software metric, used to indicate the +complexity of a program. It is a quantitative measure of the number of +linearly independent paths through a program's source code. This package +provides tools to compute this metric.") + (license license:expat))) + +(define-public r-lintr + (package + (name "r-lintr") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "lintr" version)) + (sha256 + (base32 + "09gbci4v5n4gsfzminly8332fw7faxdi1kkyvpa10dydx02sjcwb")))) + (properties `((upstream-name . "lintr"))) + (build-system r-build-system) + (propagated-inputs + `(("r-codetools" ,r-codetools) + ("r-crayon" ,r-crayon) + ("r-cyclocomp" ,r-cyclocomp) + ("r-digest" ,r-digest) + ("r-httr" ,r-httr) + ("r-jsonlite" ,r-jsonlite) + ("r-knitr" ,r-knitr) + ("r-rex" ,r-rex) + ("r-rstudioapi" ,r-rstudioapi) + ("r-stringdist" ,r-stringdist) + ("r-testthat" ,r-testthat) + ("r-xml2" ,r-xml2) + ("r-xmlparsedata" ,r-xmlparsedata))) + (home-page "https://github.com/jimhester/lintr") + (synopsis "Linter for R code") + (description "This package checks adherence to a given style, syntax +errors and possible semantic issues. It supports on the fly checking of R +code edited with @code{RStudio IDE}, @code{Emacs} and @code{Vim}.") + (license license:expat))) + (define-public r-sctransform (package (name "r-sctransform") @@ -15098,14 +15238,14 @@ (define-public r-xgboost (define-public r-umap (package (name "r-umap") - (version "0.2.3.1") + (version "0.2.4.0") (source (origin (method url-fetch) (uri (cran-uri "umap" version)) (sha256 (base32 - "0rzz1s029cn1w1bf5va2pav2lg9j1mq97ibwcln39drvm67kj76d")))) + "1dzbwq96k5vqr64wk6s26ks4311h570xg6gf0prr4vnn033pqnch")))) (build-system r-build-system) (propagated-inputs `(("r-openssl" ,r-openssl) @@ -15123,14 +15263,14 @@ (define-public r-umap (define-public r-uwot (package (name "r-uwot") - (version "0.1.4") + (version "0.1.5") (source (origin (method url-fetch) (uri (cran-uri "uwot" version)) (sha256 (base32 - "1y9wpzs92d1fl2x5figfywd48lkyhwx37j542z0rf6ckrl46n89n")))) + "0pz9wa89xq4d119q86lskrznf979m0r1db8iaprcz7kxbi6b8lrj")))) (build-system r-build-system) (propagated-inputs `(("r-dqrng" ,r-dqrng) diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index 80c598ed86..e63823de2c 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -852,15 +852,16 @@ (define-public asignify (define-public enchive (package (name "enchive") - (version "3.4") + (version "3.5") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/skeeto/" name "/archive/" - version ".tar.gz")) - (sha256 - (base32 - "17hrxpp4cpn10bk48sfvfjc8hghky34agsnypam1v9f36kbalqfk")) - (file-name (string-append name "-" version ".tar.gz")))) + (method git-fetch) + (uri (git-reference + (url "https://github.com/skeeto/enchive") + (commit version))) + (sha256 + (base32 + "0fdrfc5l42lj2bvmv9dmkmhmm7qiszwk7cmdvnqad3fs7652g0qa")) + (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments '(#:tests? #f ; no check target ' diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm index 70d2062448..948cc30cf6 100644 --- a/gnu/packages/docker.scm +++ b/gnu/packages/docker.scm @@ -617,7 +617,15 @@ (define-public docker-cli (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) - (out-bin (string-append out "/bin"))) + (out-bin (string-append out "/bin")) + (etc (string-append out "/etc"))) + (with-directory-excursion "src/github.com/docker/cli/contrib/completion" + (install-file "bash/docker" + (string-append etc "/bash_completion.d")) + (install-file "fish/docker.fish" + (string-append etc "/fish/completions")) + (install-file "zsh/_docker" + (string-append etc "/zsh/site-functions"))) (chdir "build") (install-file "docker" out-bin) #t)))))) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 53f5a89341..44e38ee545 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -7965,14 +7965,14 @@ (define-public emacs-org (name "emacs-org") ;; emacs-org-contrib inherits from this package. Please update its sha256 ;; checksum as well. - (version "9.2.6") + (version "9.3") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/org-" version ".tar")) (sha256 (base32 - "0ikd78k4yw4sm5x7l3dsbvfcmvnv5qna2mxirr560gvcnzhr0zg4")))) + "0pyfx4xzzi3qqip958rs7j5ca1r4i5v6dfkx5kbp2ndhqmxbfxjw")))) (build-system emacs-build-system) (home-page "https://orgmode.org/") (synopsis "Outline-based notes management and organizer") @@ -7986,14 +7986,14 @@ (define-public emacs-org-contrib (package (inherit emacs-org) (name "emacs-org-contrib") - (version "20190904") + (version "20191203") (source (origin (method url-fetch) (uri (string-append "https://orgmode.org/elpa/" "org-plus-contrib-" version ".tar")) (sha256 (base32 - "08s3fk3jim0y2v00l6ah8y08ba8wbcf29z6fxqzyaxj58a5sq81a")))) + "1kvw95492acb7gqn8gxbp1vg4fyw80w43yvflxnfxdf6jnnw2wah")))) (arguments `(#:modules ((guix build emacs-build-system) (guix build utils) @@ -9227,15 +9227,16 @@ (define-public emacs-cnfonts (define-public emacs-php-mode (package (name "emacs-php-mode") - (version "20171225.342") + (version "1.22.1") (source (origin - (method url-fetch) - (uri (string-append - "https://melpa.org/packages/php-mode-" - version ".tar")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/ejmr/php-mode.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "1zz682f34v4wsm2dyj1gnrnvsrqdq1cy7j8p6cvc398w2fziyg3q")))) + "1yc7f39bv2ni8q5372r4kj04z7rikvc8w1mqx5c4zph5r02jab7i")))) (build-system emacs-build-system) (home-page "https://github.com/ejmr/php-mode") (synopsis "Major mode for editing PHP code") @@ -10149,19 +10150,19 @@ (define-public emacs-dired-hacks (license license:gpl3+)))) (define-public emacs-dired-sidebar - (let ((commit "06bd0d40bab812c61a668129daf29ba359424454") - (revision "0")) + (let ((commit "21ccb6723bea69f2e2ca25998268d8a039f904cc") + (revision "1")) (package (name "emacs-dired-sidebar") (home-page "https://github.com/jojojames/dired-sidebar") - (version (git-version "0.0.1" revision commit)) + (version (git-version "0.1.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url home-page) (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 - "0lvwvq6sl80sha9fq5m4568sg534dhmifyjqw75bqddcbf3by84x")))) + "0mck4qk6srbbf8xnn2sg11j822z4ybxvgavvy402d5sli515i8ca")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dired-subtree" ,emacs-dired-hacks))) @@ -10499,13 +10500,14 @@ (define-public emacs-prop-menu (version "0.1.2") (source (origin - (method url-fetch) - (uri (string-append - "http://stable.melpa.org/packages/prop-menu-" - version ".el")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/david-christiansen/prop-menu-el.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "01bk4sjafzz7gqrkv9jg0pa85qr34vbk3q8ga2b0m61bndywzgpr")))) + "18ap2liz5r5a8ja2zz9182fnfm47jnsbyblpq859zks356k37iwc")))) (build-system emacs-build-system) (home-page "https://github.com/david-christiansen/prop-menu-el") @@ -17229,6 +17231,52 @@ (define-public emacs-nix-mode comments.") (license license:lgpl2.1+))) +(define-public emacs-libmpdel + (package + (name "emacs-libmpdel") + (version "1.1.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitea.petton.fr/mpdel/libmpdel.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0dnjndpv6bmz5blfs75ynmbm32g23l4slg5p3941b1i94a08qzpy")))) + (build-system emacs-build-system) + (home-page "https://gitea.petton.fr/mpdel/libmpdel") + (synopsis "Emacs library to communicate with Music Player Daemon (MPD)") + (description + "An Emacs library client to communicate with Music Player Daemon (MPD), a +flexible, powerful, server-side application for playing music.") + (license license:gpl3+))) + +(define-public emacs-mpdel + (package + (name "emacs-mpdel") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitea.petton.fr/mpdel/mpdel.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0pyyvbzskr44dxbmlp3y0r6s459fd51cvwjmnjaqxfxflr5v891g")))) + (build-system emacs-build-system) + (inputs + `(("emacs-libmpdel" ,emacs-libmpdel))) + (home-page "https://gitea.petton.fr/mpdel/mpdel") + (synopsis "Emacs user interface for Music Player Daemon (MPD)") + (description + "MPDel provides an Emacs user interface to control playback (play, pause, +next, volume) and display and control the current playlist as well as your +stored playlists.") + (license license:gpl3+))) + (define-public emacs-simple-mpc ;; There have been no releases. (let ((commit "bee8520e81292b4c7353e45b193f9a13b482f5b2") @@ -17618,7 +17666,7 @@ (define-public emacs-dockerfile-mode (define-public emacs-lsp-mode (package (name "emacs-lsp-mode") - (version "6.1") + (version "6.2.1") (source (origin (method git-fetch) (uri (git-reference @@ -17627,14 +17675,15 @@ (define-public emacs-lsp-mode (file-name (git-file-name name version)) (sha256 (base32 - "0jn5slhv9zfs446a5966bfg9dq144g22v79wnkx9hxq7if78p652")))) + "0f9d0zhblcjzrpggqclww2g7fyjky5rzpp7zj424005ahv0zd3xf")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash) ("emacs-f" ,emacs-f) ("emacs-ht" ,emacs-ht) ("emacs-markdown-mode" ,emacs-markdown-mode) - ("emacs-spinner" ,emacs-spinner))) + ("emacs-spinner" ,emacs-spinner) + ("emacs-hydra" ,emacs-hydra))) (home-page "https://github.com/emacs-lsp/lsp-mode") (synopsis "Emacs client and library for the Language Server Protocol") (description "@code{LSP-mode} is a client and library implementation for @@ -19145,17 +19194,17 @@ (define-public emacs-xterm-color (define-public emacs-org-noter (package (name "emacs-org-noter") - (version "1.3.0") + (version "1.4.1") (source - (origin - (method url-fetch) - (uri (string-append - "https://stable.melpa.org/packages/org-noter-" - version - ".el")) - (sha256 - (base32 - "1hczwva73gsyanl1ldhdvql01gy0hy2g861yzkaklyb763sx58x4")))) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/weirdNox/org-noter.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1vwfpdi7hfkxx4vi0cwg7rvqby3i0mymzdkyzrqzv30dazmcjpag")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-org" ,emacs-org))) (home-page "https://github.com/weirdNox/org-noter") @@ -19682,6 +19731,54 @@ (define-public emacs-tao-theme @code{tao-theme-use-height}.") (license license:gpl3+)))) +(define-public emacs-almost-mono-themes + (let ((commit "c3a85c1a665530a5d830665969725cdba8eceb75") + (revision "0")) + (package + (name "emacs-almost-mono-themes") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cryon/almost-mono-themes.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "034k32xkr5ma415hlkbl35z0jxc4sa1inf87hg3y6lrlfl83fyjh")))) + (build-system emacs-build-system) + (home-page "https://github.com/cryon/almost-mono-themes") + (synopsis "Almost monochromatic themes for emacs in a few variants") + (description + "This package provides a collection of almost monochrome Emacs themes: +@code{almost-mono-black} and @code{almost-mono-white}.") + (license license:gpl3+)))) + +(define-public emacs-quasi-monochrome + (let ((commit "68060dbbc0bbfe4924387392874186c5a29bb434") + (revision "0")) + (package + (name "emacs-quasi-monochrome") + (version (git-version "1.2" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lbolla/emacs-quasi-monochrome.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0zp2xr0bjfqrpb0bqczzick1vvbjmipjavrdi70kw6a9caynvq22")))) + (build-system emacs-build-system) + (home-page "https://github.com/lbolla/emacs-quasi-monochrome") + (synopsis "Dark color theme for Emacs") + (description + "This package provides a dark color theme with a black background, high +contrast and few colors.") + (license license:gpl3+)))) + (define-public emacs-doom-themes (package (name "emacs-doom-themes") @@ -19716,6 +19813,33 @@ (define-public emacs-doom-themes (home-page "https://github.com/hlissner/emacs-doom-themes") (license license:expat))) +(define-public emacs-modus-themes + (package + (name "emacs-modus-themes") + (version "0.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/protesilaos/modus-themes.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "15g63675c5df2p0kk2sqj2c8qriyh69lcbggknqlaxapr13giz4x")))) + (build-system emacs-build-system) + (home-page "https://gitlab.com/protesilaos/modus-themes") + (synopsis "Emacs themes designed for colour-contrast accessibility") + (description + "This is a set of accessible themes for GNU Emacs. The contrast ratio +between foreground and background values should always be >= 7:1, which +conforms with the WCAG AAA accessibility standard. + +The Modus themes project consists of two standalone items, one where dark text +is cast on a light backdrop (Modus Operandi) and another where light text is +displayed against a dark background (Modus Vivendi).") + (license license:gpl3+))) + (define-public emacs-elixir-mode (package (name "emacs-elixir-mode") @@ -19946,8 +20070,8 @@ (define-public emacs-helm-fish-completion (license license:gpl3+)))) (define-public emacs-telega - (let ((commit "019e923f933370d75dbe0a8473a18eb66fe94c0e") - (revision "1") + (let ((commit "56aef884921d99e5170d5425dbe0fce645620511") + (revision "2") (version "0.4.4")) (package (name "emacs-telega") @@ -19960,11 +20084,11 @@ (define-public emacs-telega (commit commit))) (sha256 (base32 - "058814agkq8mp9ajpj8sz51rm9nigs2xpsdij05wjkxhfq30kqva")) + "0a8k3j20nz4xwswg9qp9xpaakk3q3ibiz8mkryk92zmrdmaah5mi")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments - `(#:tests? #f + `(#:test-target "test" #:modules ((guix build gnu-build-system) ((guix build emacs-build-system) #:prefix emacs:) (guix build utils) @@ -19974,31 +20098,79 @@ (define-public emacs-telega (guix build emacs-utils)) #:phases (modify-phases %standard-phases - (add-after 'unpack 'unpack-patch + (add-after 'unpack 'prefix-patch (lambda _ (substitute* "server/Makefile" (("CC=cc") "CC=gcc") (("INSTALL_PREFIX=\\$\\(HOME\\)/.telega") (string-append "INSTALL_PREFIX=" (assoc-ref %outputs "out") - "/bin"))) + "/bin")) + ;; Manually invoke `run_tests.py` after install phase. + (("python3 run_tests.py") + "")) + #t)) + ;; Modify telega-util to reflect unique dir name in + ;; `telega-install-data' phase. + (add-after 'unpack 'telega-data-patch + (lambda _ + (substitute* "telega-util.el" + (("\\(concat \"etc/\" filename\\) telega--lib-directory") + "(concat \"telega-data/\" filename) + (locate-dominating-file telega--lib-directory + \"telega-data\")")) + #t)) + ;; The telega test suite checks for a version of Emacs + ;; compiled with imagemagick and svg support. Since we + ;; are using `emacs-minimal`, this step will fail. + ;; Grok the failing test, and remove problematic assertions. + (add-after 'unpack 'ert-suite-patch + (lambda _ + (substitute* "telega-core.el" + (("\\(image-type-available-p 'imagemagick\\) nil") + "t") + (("\\(image-type-available-p 'svg\\) nil") + "t")) + #t)) + ;; The server test suite has a hardcoded path. + ;; Reset this behavior to use the proper path. + (add-after 'unpack 'server-suite-patch + (lambda _ + (substitute* "server/run_tests.py" + (("~/.telega/telega-server") + (string-append (assoc-ref %outputs "out") + "/bin/telega-server"))) + #t)) + (add-after 'install 'run-server-suite + (lambda _ + (invoke "python3" "server/run_tests.py") #t)) (delete 'configure) - + ;; Build emacs-side using `emacs-build-system' (add-after 'compress-documentation 'emacs-add-source-to-load-path (assoc-ref emacs:%standard-phases 'add-source-to-load-path)) - (add-after 'emacs-set-emacs-load-path 'emacs-install + (add-after 'emacs-add-source-to-load-path 'emacs-install (assoc-ref emacs:%standard-phases 'install)) - (add-after 'emacs-install 'emacs-build + ;; This step installs subdir /etc, which contains images, sounds and + ;; various other data, next to the site-lisp dir. + (add-after 'emacs-install 'telega-install-data + (lambda* (#:key outputs #:allow-other-keys) + (copy-recursively + "etc" + (string-append (assoc-ref outputs "out") + "/share/emacs/telega-data/")) + #t)) + (add-after 'telega-install-data 'emacs-build (assoc-ref emacs:%standard-phases 'build)) - (add-after 'emacs-install 'emacs-make-autoloads + (add-after 'emacs-build 'emacs-make-autoloads (assoc-ref emacs:%standard-phases 'make-autoloads))))) (propagated-inputs `(("emacs-visual-fill-column" ,emacs-visual-fill-column))) (native-inputs `(("tdlib" ,tdlib) - ("emacs" ,emacs-minimal))) + ("emacs" ,emacs-minimal) + ("python" ,python))) (synopsis "GNU Emacs client for the Telegram messenger") (description "Telega is full-featured, unofficial client for the Telegram messaging @@ -20081,3 +20253,244 @@ (define-public emacs-org-present each slide with left/right keys.") (home-page "https://github.com/rlister/org-present") (license license:gpl2)))) + +(define-public emacs-fullframe + (package + (name "emacs-fullframe") + (version "0.5.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tomterl/fullframe.git") + (commit version))) + (sha256 + (base32 + "0m43qnhp6ibsskpjkxc86p3lrjsjc0ndqml3lbd65s79x4x7i3fi")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (home-page "https://github.com/tomterl/fullframe") + (synopsis "Generalized automatic execution in a single frame") + (description "This library provides helpers for single-window-per-frame +execution of buffer-exposing commands.") + (license license:gpl3+))) + +(define-public emacs-repl-toggle + (package + (name "emacs-repl-toggle") + (version "0.6.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tomterl/repl-toggle.git") + (commit version))) + (sha256 + (base32 + "12h3xxja3isnhvrqx7m2g7a5d8h68cc85pbqyhiipfxyafyl1yxd")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-fullframe" ,emacs-fullframe))) + (home-page "https://github.com/tomterl/repl-toggle") + (synopsis "Switch to and from current major mode's REPL") + (description "This package provides a function to switch to and from a +REPL appropriate to the current major mode.") + (license license:gpl3+))) + +(define-public emacs-blackout + (let ((commit "4bac44671fca4c98d96aa94c79946bf4d4baf0ee") + (revision "1")) + (package + (name "emacs-blackout") + (version (git-version "1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/raxod502/blackout.git") + (commit commit))) + (sha256 + (base32 + "1wnh0nwy6r3a18sy9sqmrwv04vnmaflxy4g7mq8jiyyjijri7l1b")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (home-page "https://github.com/raxod502/blackout") + (synopsis "Clean up mode lighters") + (description "This package provides a function for hiding and customizing +display of major and minor modes in the mode line.") + (license license:gpl3+)))) + +(define-public emacs-ivy-omni-org + (let ((commit "5460a9fc061a4a5ae8372dc8df966ced94abab58") + (revision "1")) + (package + (name "emacs-ivy-omni-org") + (version (git-version "0.2.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/akirak/ivy-omni-org.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1np1f51hc3phkl5w02a9a79gl38ra2d535i784fn4pqaasvm0rq8")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ivy" ,emacs-ivy) + ("emacs-dash" ,emacs-dash))) + (synopsis "Browse anything in Org mode") + (description "This package allows Org items to be accessed via the Ivy +interface.") + (home-page "https://github.com/akirak/ivy-omni-org") + (license license:gpl3+)))) + +(define-public emacs-shackle + (let ((commit "7ccbe513852a1d1700b698547efca14b8940319d") + (revision "1")) + (package + (name "emacs-shackle") + (version (git-version "1.0.3" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wasamasa/shackle.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0agsp8ia4irr540r898ifhjqp28n1zsq1pilv1kc272spn3qhvp9")))) + (build-system emacs-build-system) + (synopsis "Enforce rules for popups") + (description "This package provides a global minor mode in which users +can specify how popup-displaying functions occupy the screen.") + (home-page "https://github.com/wasamasa/shackle") + (license license:gpl3+)))) + +(define-public emacs-helm-lacarte + (let ((commit "40a6c449720be521435b6b1da7911af3a0b9dca0") + (revision "1")) + (package + (name "emacs-helm-lacarte") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-helm/helm-lacarte.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0dkfd3lap2v7b4nckzv8v7hczmzwzhbl75haqkra107ln91ldbwc")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-helm" ,emacs-helm) + ("emacs-lacarte" ,emacs-lacarte))) + (synopsis "Helm interface to @code{lacarte.el}") + (description "This package provides a Helm interface to +@code{lacarte.el}, a package that displays mode-specific commands as menu +items.") + (home-page "https://github.com/emacs-helm/helm-lacarte") + (license license:gpl3+)))) + +(define-public emacs-esh-help + (let ((commit "417673ed18a983930a66a6692dbfb288a995cb80") + (revision "1")) + (package + (name "emacs-esh-help") + (version (git-version "1.0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tom-tan/esh-help.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0x7d51a6ljl014zy7mi27vzcqqbcwg9z4drq29fr2ajk82mqhlgd")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (synopsis "Help functions for Eshell") + (description "This package provides a @code{run-help} function inspired +by @code{zsh} as well as @code{eldoc} support.") + (home-page "https://github.com/tom-tan/esh-help") + (license license:gpl3+)))) + +(define-public emacs-isearch-dabbrev + (let ((commit "1efe7abba4923015cbc2462395deaec5446a9cc8") + (revision "1")) + (package + (name "emacs-isearch-dabbrev") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Dewdrops/isearch-dabbrev.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "17d0816awadvsw1qc7r0p6ira75jmgxaj9hsk9ypayxsaf6ynyrb")))) + (build-system emacs-build-system) + (synopsis "Use @code{dabbrev} within @code{isearch}") + (description "This package allows @code{dabbrev-expand} to be used +within @code{isearch-mode}.") + (home-page "https://github.com/Dewdrops/isearch-dabbrev") + (license license:gpl3+)))) + +(define-public emacs-helm-linux-disks + (let ((commit "2cdc8116a08534289eb0dc76461d0f93a0bdf231") + (revision "1")) + (package + (name "emacs-helm-linux-disks") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Akirak/helm-linux-disks.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1limw82zd8jz3mhh9rqlmhj4cjhfgybs9argfjid1an3vpyhc85i")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-helm" ,emacs-helm))) + (synopsis "Mount/unmount volumes in Linux via Helm") + (description "This package provides a Helm interface to run operations +on removable volumes in Linux.") + (home-page "https://github.com/Akirak/helm-linux-disks") + (license license:gpl3+)))) + +(define-public emacs-psession + (let ((commit "3e97267c92b164584e06a6c70ee7491714c7c12c") + (revision "1")) + (package + (name "emacs-psession") + (version (git-version "1.5" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/thierryvolpiatto/psession.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "15frl618393bc891d0yi3mdxzvbq790a86vfvp3dyd5riz4ddg95")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-async" ,emacs-async))) + (synopsis "Persistent save of @code{elisp} objects.") + (description "This package provides minor modes for saving Emacs session +data, including buffers, window configuration, variables, and more.") + (home-page "https://github.com/thierryvolpiatto/psession") + (license license:gpl3+)))) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 95859b8a88..eba7f88551 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -143,6 +143,11 @@ (define-public emacs (display (string-append "(when (require 'guix-emacs nil t)\n" " (guix-emacs-autoload-packages))\n")))) + ;; Remove the extraneous subdirs.el file, as it causes Emacs to + ;; add recursively all the the sub-directories of a profile's + ;; share/emacs/site-lisp union when added to EMACSLOADPATH, + ;; which leads to conflicts. + (delete-file (string-append lisp-dir "/subdirs.el")) #t)))))) (inputs `(("gnutls" ,gnutls) @@ -187,8 +192,8 @@ (define-public emacs (list (search-path-specification (variable "EMACSLOADPATH") ;; The versioned entry is for the Emacs' builtin libraries. - (files (list (string-append "share/emacs/" version "/lisp") - "share/emacs/site-lisp"))) + (files (list "share/emacs/site-lisp" + (string-append "share/emacs/" version "/lisp")))) (search-path-specification (variable "INFOPATH") (files '("share/info"))))) diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 262a39d828..d79ca949f2 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -69,7 +69,7 @@ (define-module (gnu packages enlightenment) (define-public efl (package (name "efl") - (version "1.23.2") + (version "1.23.3") (source (origin (method url-fetch) (uri (string-append @@ -77,7 +77,7 @@ (define-public efl version ".tar.xz")) (sha256 (base32 - "14yljnnmb89s8j6ip08ip5d01zkgzbzr1h4fr4bwk9lh8r59x3ds")))) + "00b9lp3h65254kdb1ys15fv7p3ln7qsvf15jkw4kli5ymagadkjk")))) (build-system meson-build-system) (native-inputs `(("check" ,check) @@ -194,7 +194,7 @@ (define-public efl (define-public terminology (package (name "terminology") - (version "1.5.0") + (version "1.6.0") (source (origin (method url-fetch) (uri @@ -202,7 +202,7 @@ (define-public terminology "terminology/terminology-" version ".tar.xz")) (sha256 (base32 - "0v4amfg8ji0mb6j7kcxh3wz1xw5zyxg4rw6ylx17rfw2nc1yamfy")) + "0xxx4xyhis6fy3frgb34ip0aj0kc4zashf60gzbxmq5gadbb0p5r")) (modules '((guix build utils))) ;; Remove the bundled fonts. (snippet diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm index 85bfd8dd38..1594cac846 100644 --- a/gnu/packages/file-systems.scm +++ b/gnu/packages/file-systems.scm @@ -41,6 +41,7 @@ (define-module (gnu packages file-systems) #:use-module (gnu packages flex) #:use-module (gnu packages glib) #:use-module (gnu packages linux) + #:use-module (gnu packages onc-rpc) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages readline) @@ -146,63 +147,56 @@ (define-public disorderfs (define-public glusterfs (package (name "glusterfs") - (version "3.10.12") + (version "7.0") (source (origin (method url-fetch) (uri (string-append "https://download.gluster.org/pub/gluster/glusterfs/" - (version-major+minor version) "/" version - "/glusterfs-" version ".tar.gz")) + (version-major version) "/" + (version-major+minor version) "/" + "glusterfs-" version ".tar.gz")) (sha256 (base32 - "01ysvamvfv2l5pswa1rygpg8w0954h2wkh1ba97h3nx03m5n0prg")) - (patches - (search-patches "glusterfs-use-PATH-instead-of-hardcodes.patch")))) + "0yzhx710ypj0j3m5dcgmmgvkp7p0rmmp2p7ld0axrm4vpwc2b1wa")))) (build-system gnu-build-system) (arguments `(#:configure-flags - (let ((out (assoc-ref %outputs "out"))) - (list (string-append "--with-initdir=" out "/etc/init.d") - (string-append "--with-mountutildir=" out "/sbin"))) + (let ((out (assoc-ref %outputs "out")) + (p2 (assoc-ref %build-inputs "python-2"))) + (list (string-append "PYTHON=" p2 "/bin/python") + (string-append "--with-initdir=" out "/etc/init.d") + (string-append "--with-mountutildir=" out "/sbin") + "--enable-cmocka" ; unit tests + ;; "--enable-debug" ; debug build options + ;; "--enable-asan" ; Address Sanitizer + ;; "--enable-tsan" ; ThreadSanitizer + )) #:phases (modify-phases %standard-phases - (add-before 'configure 'replace-config.sub - (lambda* (#:key inputs #:allow-other-keys) - ;; The distributed config.sub is intentionally left empty and - ;; must be replaced. - (install-file (string-append (assoc-ref inputs "automake") - "/share/automake-" - ,(version-major+minor (package-version automake)) "/config.sub") - ".") - #t)) - ;; Fix flex error. This has already been fixed with upstream commit - ;; db3fe245a9e8812829eae7d143e49d0bfdfef9a7, but is not available in - ;; current releases. - (add-before 'configure 'fix-lex - (lambda _ - (substitute* "libglusterfs/src/Makefile.in" - (("libglusterfs_la_LIBADD = @LEXLIB@") - "libglusterfs_la_LIBADD =")) - #t))))) + (add-before 'configure 'autogen + (lambda _ (invoke "./autogen.sh")))))) (native-inputs - `(("cmocka" ,cmocka) - ("pkg-config" ,pkg-config) + `(("pkg-config" ,pkg-config) + ("libtirpc", libtirpc) + ("rpcsvc-proto", rpcsvc-proto) ("python-2" ,python-2) ; must be version 2 ("flex" ,flex) ("bison" ,bison) - ("automake" ,automake))) + ("libtool" ,libtool) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("cmocka" ,cmocka))) (inputs `(("acl" ,acl) - ;; GlusterFS fails to build with libressl because HMAC_CTX_new and - ;; HMAC_CTX_free are undefined. + ("fuse", fuse) ("openssl" ,openssl) ("liburcu" ,liburcu) ("libuuid" ,util-linux) ("libxml2" ,libxml2) - ("lvm2" ,lvm2) ("readline" ,readline) - ("sqlite" ,sqlite) ; for tiering - ("zlib" ,zlib))) + ("zlib" ,zlib) + ("libaio", libaio) + ("rdma-core", rdma-core))) (home-page "https://www.gluster.org") (synopsis "Distributed file system") (description "GlusterFS is a distributed scalable network file system diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index 1412c7ca95..5588fe00ea 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -43,6 +43,8 @@ (define-module (gnu packages finance) #:use-module (guix build-system go) #:use-module (guix utils) #:use-module (gnu packages) + #:use-module (gnu packages aidc) + #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages boost) #:use-module (gnu packages check) @@ -1172,7 +1174,7 @@ (define-public bitcoin-abc (package (inherit bitcoin-core) (name "bitcoin-abc") - (version "0.20.4") + (version "0.20.7") (source (origin (method url-fetch) (uri (string-append "https://download.bitcoinabc.org/" @@ -1180,7 +1182,15 @@ (define-public bitcoin-abc version ".tar.gz")) (sha256 (base32 - "0fld54z3l7z7k5n35rrjichjnx37j9xp0rv8i69m3x4qfj1xk2np")))) + "0py5ilfi4r8qh5r9637vwch27sqrrn0dg9rz8bccnj3lp2xpzw27")))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config) + ("python" ,python) ; for the tests + ("util-linux" ,util-linux) ; provides the hexdump command for tests + ("qttools" ,qttools))) (inputs `(("bdb" ,bdb-5.3) ("boost" ,boost) @@ -1188,19 +1198,9 @@ (define-public bitcoin-abc ("miniupnpc" ,miniupnpc) ("openssl" ,openssl) ("protobuf" ,protobuf) - ("qtbase" ,qtbase))) - (arguments - (substitute-keyword-arguments (package-arguments bitcoin-core) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'fix-tests - ;; Disable 'check-devtools' test which tries to run a - ;; python script that doesn't exist. - (lambda _ - (substitute* "Makefile.in" - (("^check-local: check-devtools") - "check-local:")) - #t)))))) + ("qrencode" ,qrencode) + ("qtbase" ,qtbase) + ("zlib" ,zlib))) (home-page "https://www.bitcoinabc.org/") (synopsis "Bitcoin ABC peer-to-peer full node for the Bitcoin Cash protocol") (description diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 467a676faf..c4bcf19d17 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -187,7 +187,7 @@ (define-public openfwwf-firmware (define-public seabios (package (name "seabios") - (version "1.12.1") + (version "1.13.0") (source (origin (method git-fetch) @@ -196,10 +196,10 @@ (define-public seabios (commit (string-append "rel-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1g9y03r5ky58q2g9rhbwfhs42z0zb9f59wfxpwh6zjqa6fyv1r80")))) + (base32 "1n1bd6msfs7xn8844sz2qnm7hb5x2qfl3zb06kp4bx9vdc3i6619")))) (build-system gnu-build-system) (native-inputs - `(("python-2" ,python-2))) + `(("python" ,python-wrapper))) (arguments `(#:tests? #f ; no check target #:phases diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index e0c8168641..87b7c16b0b 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -240,7 +240,7 @@ (define-public libxdg-basedir (define-public elogind (package (name "elogind") - (version "241.3") + (version "241.4") (source (origin (method git-fetch) (uri (git-reference @@ -249,7 +249,7 @@ (define-public elogind (file-name (git-file-name name version)) (sha256 (base32 - "0jpb55prqq5cm3w2gy9766cbaqknjvbrbniyshb8bz1q31vf4jlq")))) + "13nd0chackqclgvw43910k4pkw2q773dh6wq9s5f3d97ibnik48k")))) (build-system meson-build-system) (arguments `(#:configure-flags @@ -991,7 +991,7 @@ (define-public libqmi (define-public modem-manager (package (name "modem-manager") - (version "1.4.14") + (version "1.10.8") (source (origin (method url-fetch) (uri (string-append @@ -999,7 +999,7 @@ (define-public modem-manager "ModemManager-" version ".tar.xz")) (sha256 (base32 - "18hvffwcncwz14kdzk42jbkh362n0kjv3kgx7axbqx572pawvrmb")))) + "16hnl0sdriqgv4v30mfs64mdl9rw7lsh802zlm3ggwxxil3p9qfb")))) (build-system gnu-build-system) (arguments '(#:configure-flags diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 2d136574bc..f3cce6c508 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -45,6 +45,7 @@ ;;; Copyright © 2019 Guillaume Le Vaillant ;;; Copyright © 2019 Timotej Lazar ;;; Copyright © 2019 Josh Holland +;;; Copyright © 2017, 2019 Hartmut Goebel ;;; ;;; This file is part of GNU Guix. ;;; @@ -118,6 +119,8 @@ (define-module (gnu packages games) #:use-module (gnu packages icu4c) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages kde) + #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages less) #:use-module (gnu packages libcanberra) #:use-module (gnu packages libedit) @@ -174,6 +177,7 @@ (define-module (gnu packages games) #:use-module (guix build-system scons) #:use-module (guix build-system python) #:use-module (guix build-system cmake) + #:use-module (guix build-system qt) #:use-module (guix build-system trivial) #:use-module ((srfi srfi-1) #:hide (zip)) #:use-module (srfi srfi-26)) @@ -6318,7 +6322,7 @@ (define-public libmanette (define-public quadrapassel (package (name "quadrapassel") - (version "3.31.3") + (version "3.32.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/quadrapassel/" @@ -6326,8 +6330,18 @@ (define-public quadrapassel "quadrapassel-" version ".tar.xz")) (sha256 (base32 - "08i01nsgfb502xzzrrcxxbs7awb0j1h4c08vmj0j18ipa1sz8vb8")))) - (build-system glib-or-gtk-build-system) + "1zhi1957knz9dm98drn2dh95mr33sdch590yddh1f8r6bzsfjvpy")))) + (build-system meson-build-system) + (arguments + '(#:glib-or-gtk? #t + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "build-aux/meson_post_install.py" + (("gtk-update-icon-cache") (which "true"))) + #t))))) (native-inputs `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate ("gettext" ,gnu-gettext) @@ -7889,3 +7903,1573 @@ (define-public q5go @end itemize") (home-page "https://github.com/bernds/q5Go") (license license:gpl2+))) + +(define-public ktuberling + (package + (name "ktuberling") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/ktuberling-" version ".tar.xz")) + (sha256 + (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("perl" ,perl))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("kdelibs4support" ,kdelibs4support) + ("ki18n" ,ki18n) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtmultimedia" ,qtmultimedia) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Stamp drawing toy") + (description "KTuberling is a drawing toy intended for small children and +adults who remain young at heart. The game has no winner; the only purpose is +to make the funniest faces you can. Several activites are possible, e.g.: + +@itemize +@item Give the potato a funny face, clothes, and other goodies +@item Build a small town, complete with school, zoo, and fire department +@item Create a fantastic moonscape with spaceships and aliens +@item Top a pizza +@end itemize + +KTuberling can speak the name of each the object in several languages, +to assist in learning basic vocabulary. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public picmi + (package + (name "picmi") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/picmi-" version ".tar.xz")) + (sha256 + (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("kdeclarative" ,kdeclarative) + ("ki18n" ,ki18n) + ("kio" ,kio) + ("knewstuff" ,knewstuff) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Number logic game") + (description "Picmi is a number logic game in which cells in a grid have +to be colored or left blank according to numbers given at the side of the +grid. The aim is to reveal a hidden picture. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public kolf + (package + (name "kolf") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/kolf-" version ".tar.xz")) + (sha256 + (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kio" ,kio) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("ktextwidgets" ,ktextwidgets) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Miniature golf game") + (description "Kolf is a miniature golf game for one to ten players. The +game is played from an overhead view, with a short bar representing the golf +club. Kolf features many different types of objects, such as water hazards, +slopes, sand traps, and black holes (warps), among others. + +Features are: +@itemize +@item Single and Multi-player (up to ten players) modes +@item High scores table +@item Dynamic courses +@item Third-party courses +@item Course editor +@end itemize + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+)))) + +(define-public libkmahjongg + (package + (name "libkmahjongg") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" + version "/src/libkmahjongg-" version ".tar.xz")) + (sha256 + (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules))) + (inputs + `(("kauth" ,kauth) + ("kcompletion" ,kcompletion) + ;("kconfig" ,kconfig) + ("kcodecs" ,kcodecs) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("ki18n" ,ki18n) + ("kwidgetsaddons" ,kwidgetsaddons) + ("qtbase" ,qtbase) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Shared library for kmahjongg and kshisen") + (description "Shared library and common files for kmahjongg, kshisen and +other Mah Jongg like games.") + (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+)))) + +(define-public kmahjongg + (package + (name "kmahjongg") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" + version "/src/kmahjongg-" version ".tar.xz")) + (sha256 + (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("kdeclarative" ,kdeclarative) + ("ki18n" ,ki18n) + ("knewstuff" ,knewstuff) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("libkmahjongg" ,libkmahjongg) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Tile laying patience") + (description "In KMahjongg the tiles are scrambled and staked on top of +each other to resemble a certain shape. The player is then expected to remove +all the tiles off the game board by locating each tile's matching pair. + +A variety of tile layouts are included, as well as an editor to create new +layouts. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+)))) + +(define-public kshisen + (package + (name "kshisen") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" + version "/src/kshisen-" version ".tar.xz")) + (sha256 + (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ;("perl" ,perl) + ;("pkg-config" ,pkg-config) + ("kdoctools" ,kdoctools))) + (inputs + `(("kauth" ,kauth) + ("kcompletion" ,kcompletion) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("libkmahjongg" ,libkmahjongg) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Shisen-Sho solitaire game") + (description "KShisen is a solitaire-like game played using the standard +set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of +scrambled tiles + +This package is part of the KDE games module.") + (license license:gpl2+))) + +(define-public kajongg + (package + (name "kajongg") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" + version "/src/kajongg-" version ".tar.xz")) + (sha256 + (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ;("perl" ,perl) + ("kdoctools" ,kdoctools))) + (inputs + `(("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("ki18n" ,ki18n) + ("libkmahjongg" ,libkmahjongg) + ("python" ,python) + ("qtbase" ,qtbase) + ("qtsvg" ,qtsvg))) + (propagated-inputs + `(("python-twisted" ,python-twisted) + ("python-pyqt" ,python-pyqt))) + ;; FIXME: Need to wrap PYTHONPATH + (home-page "https://games.kde.org/") + (synopsis "Classical Mah Jongg game for 4 players") + (description "Kajongg is the ancient Chinese board game for 4 players. + +If you are looking for the Mah Jongg solitaire please use the application +kmahjongg. + +Kajongg can be used in two different ways: Scoring a manual game where you +play as always and use Kajongg for the computation of scores and for +bookkeeping. Or you can use Kajongg to play against any combination of other +human players or computer players. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public kbreakout + (package + (name "kbreakout") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/kbreakout-" version ".tar.xz")) + (sha256 + (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Breakout like game") + (description "KBreakout is similar to the classics breakout and xboing, +featuring a number of added graphical enhancements and effects. You control a +paddle at the bottom of the playing-field, and must destroy bricks at the top +by bouncing balls against them. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public kmines + (package + (name "kmines") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/kmines-" version ".tar.xz")) + (sha256 + (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("ktextwidgets" ,ktextwidgets) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Classical mine sweeper game") + (description "KMines is a classic Minesweeper game. The idea is to +uncover all the squares without blowing up any mines. When a mine is blown +up, the game is over. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public konquest + (package + (name "konquest") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" + version "/src/konquest-" version ".tar.xz")) + (sha256 + (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("kguiaddons" ,kguiaddons) + ("ki18n" ,ki18n) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Simple turn-based strategy game") + (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players +conquer other planets by sending ships to them. The goal is to build an +interstellar empire and ultimately conquer all other player's planets. The +game can be played with up to nine empires, commanded either by the computer +or by puny earthlings. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public kbounce + (package + (name "kbounce") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" + version "/src/kbounce-" version ".tar.xz")) + (sha256 + (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kio" ,kio) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Jezzball arcade game") + (description "KBounce is a single player arcade game with the elements of +puzzle. It is played on a field, surrounded by wall, with two or more balls +bouncing around within the walls. The object of the game is to build new +walls to decrease the size of the active field. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+)))) + +(define-public kblocks + (package + (name "kblocks") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" + version "/src/kblocks-" version ".tar.xz")) + (sha256 + (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Single player falling blocks puzzle game") + (description "KBlocks is the classic Tetris-like falling blocks game. + +The idea is to stack the falling blocks to create horizontal lines without any +gaps. When a line is completed it is removed, and more space is available in +the play area. When there is not enough space for blocks to fall, the game is +over. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public ksudoku + (package + (name "ksudoku") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" + version "/src/ksudoku-" version ".tar.xz")) + (sha256 + (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("karchive", karchive) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kguiaddons" ,kguiaddons) + ("ki18n" ,ki18n) + ("kiconthemes" ,kiconthemes) + ("kio" ,kio) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("glu" ,glu) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Sudoku puzzle game and solver") + (description "KSudoku is a Sudoku game and solver, supporting a range of +2D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku +puzzle sheets and find the solution to any Sudoku puzzle. + +The word Sudoku means \"single number in an allotted place\" in Japanese. +These are the basic rules: Every Sudoku is a square divided into 3x3 +subsquares with 3x3 cells each. + +Some cells are filled with a number at the beginning. The remaining ones are +to be filled by the player using numbers from 1 to 9, without repeating a +number twice on each column, row or subsquare (each of them must contain only +one 1, one 2, one 3, and so on). The game requires logic and patience. +Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill +and experience. + +The numerals in Sudoku puzzles are used for convenience (for example in 16x16 +board we use letters): arithmetic relationships between numbers are +irrelevant. + +This program supports also 16x16 games with numbers from 1 to 16 and 256 +cells with 16 cols, rows and subsquares! + +More information at http://en.wikipedia.org/wiki/Sudoku + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public klines + (package + (name "klines") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/klines-" version ".tar.xz")) + (sha256 + (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones") + (description "KLines is a simple but highly addictive one player game. + +The player has to move the colored balls around the game board, gathering them +into the lines of the same color by five. Once the line is complete it is +removed from the board, therefore freeing precious space. In the same time +the new balls keep arriving by three after each move, filling up the game +board. + +KLines is a single-player game where the player removes colored balls from the +board by arranging them into lines of five or more. However, every time the +player moves a ball, three more balls are added to the board. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public kgoldrunner + (package + (name "kgoldrunner") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-" + version ".tar.xz")) + (sha256 + (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kio" ,kio) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Action and puzzle solving game") + (description "KGoldrunner is an action game where the hero runs through a +maze, climbs stairs, dig holes and dodges enemies in order to collect all the +gold nuggets and escape to the next level. Your enemies are also after the +gold. Worse still, they are after you!. + +KGoldrunner is a fast-paced platform game where the player must navigate a +maze while collecting gold nuggets and avoiding enemies. A variety of level +packs are included, as well as an editor to create new levels. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public kdiamond + (package + (name "kdiamond") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/kdiamond-" version ".tar.xz")) + (sha256 + (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion", kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("knotifications" ,knotifications) + ("knotifyconfig" ,knotifyconfig) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Three-in-a-row game") + (description "KDiamond is a three-in-a-row game like Bejeweled. It +features unlimited fun with randomly generated games and five difficulty +levels with varying number of diamond colors and board sizes. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public kfourinline + (package + (name "kfourinline") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/kfourinline-" version ".tar.xz")) + (sha256 + (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdelibs4support" ,kdelibs4support) + ("kdnssd" ,kdnssd) + ("ki18n" ,ki18n) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Place 4 pieces in a row") + (description "KFourInLine is a board game for two players based on the +Connect-Four game. + +KFourInLine is a game where two players take turns dropping pieces into a +grid, the winner being the first to place four pieces in a line. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+)))) + +(define-public kblackbox + (package + (name "kblackbox") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/kblackbox-" version ".tar.xz")) + (sha256 + (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("karchive" ,karchive) + ("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("ktextwidgets" ,ktextwidgets) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Find atoms in a grid by shooting electrons") + (description "KBlackbox is a game of hide and seek played on a grid of +boxes where the computer has hidden several balls. The position of the hidden +balls can be deduced by shooting beams into the box + +KBlackBox is a game of hide and seek played on an grid of boxes, where the +player shoots rays into the grid to deduce the positions of hidden objects. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public knetwalk + (package + (name "knetwalk") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/knetwalk-" version ".tar.xz")) + (sha256 + (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("ktextwidgets" ,ktextwidgets) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Turn the board pieces to get all computers connected") + (description "KNetWalk is a small game where you have to build up a +computer network by rotating the wires to connect the terminals to the server. +When the network is build, a highscore-list comes up where competitions can be +fought out. + +KNetwalk is a puzzle game where the player arranges sections of wire to +connect all the computers on the board. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public bomber + (package + (name "bomber") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/bomber-" version ".tar.xz")) + (sha256 + (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletiom" ,kcompletion) + ("kconfig" ,kconfig) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Arcade bombing game") + (description "Bomber is a single player arcade game. + +The player is invading various cities in a plane that is decreasing in height. +The goal of the game is to destroy all the buildings and advance to the next +level. Each level gets a bit harder by increasing the speed of the plane and +the height of the buildings. + +Bomber is a game where you fly a spaceship and attempt to bomb the buildings +below you. Each pass the spaceship makes, it gets lower and lower. If you've +not destroyed a building in your path, you will crash into it. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public granatier + (package + (name "granatier") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/granatier-" version ".tar.xz")) + (sha256 + (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("knewstuff" ,knewstuff) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Bomberman clone") + (description "Granatier is a clone of the classic Bomberman game, +inspired by the work of the Clanbomber clone. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public ksirk + (package + (name "ksirk") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/ksirk-" version ".tar.xz")) + (sha256 + (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcrash" ,kcrash) + ("ki18n" ,ki18n) + ("kiconthemes" ,kiconthemes) + ("kio" ,kio) + ("knewstuff" ,knewstuff) + ("kwallet" ,kwallet) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("phonon" ,phonon) + ("qca" ,qca) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg) + ("zlib" ,zlib))) + (home-page "https://games.kde.org/") + (synopsis "Computerized version of the well known strategy board game +'Risk'") + (description "KsirK is a multi-player network-enabled game. The goal of +the game is simply to conquer the world by attacking your neighbors with your +armies. + +At the beginning of the game, countries are distributed to all the players. +Each country contains one army represented by an infantryman. Each player has +some armies to distribute to his countries. On each turn, each player can +attack his neighbours, eventually conquering one or more countries. At the +end of each turn, some bonus armies are distributed to the players in function +of the number of countries they own. The winner is the player that conquered +all the world. + +Features: +@itemize +@item Support for 1-6 human or computer players +@item Multi-player gaming over a network +@item You can easily create new skins with SVG graphics and the skin editor +@item Hot New Stuff support. You can easily download and install new skins +@end itemize + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+)))) + +(define-public palapeli + (package + (name "palapeli") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/palapeli-" version ".tar.xz")) + (sha256 + (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("karchive" ,karchive) + ("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kcrash" ,kcrash) + ("ki18n" ,ki18n) + ("ki18n" ,ki18n) + ("kio" ,kio) + ("kitemviews" ,kitemviews) + ("knotifications" ,knotifications) + ("kservice" ,kservice) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg) + ("shared-mime-info" ,shared-mime-info))) + (home-page "https://games.kde.org/") + (synopsis "Jigsaw puzzle game") + (description "Palapeli is a jigsaw puzzle game. Unlike other games in +that genre, you are not limited to aligning pieces on imaginary grids. The +pieces are freely moveable. Also, Palapeli features real persistency, i.e. +everything you do is saved on your disk immediately. + +Palapeli is the Finnish word for jigsaw puzzle. + +This package is part of the KDE games module.") + (license license:gpl2+))) + +(define-public kiriki + (package + (name "kiriki") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/kiriki-" version ".tar.xz")) + (sha256 + (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kiconthemes" ,kiconthemes) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Yahtzee dice game") + (description "Kiriki is an addictive and fun dice game, designed to be +played by as many as six players. + +Participants have to collect points by rolling five dice for up to three times +per single turn to make combinations with the highest score. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public kigo + (package + (name "kigo") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/kigo-" version ".tar.xz")) + (sha256 + (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kio" ,kio) + ("knewstuff", knewstuff) + ("ktextwidgets" ,ktextwidgets) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Go board game") + (description "Kigo is an open-source implementation of the popular Go +game. + +Go is a strategic board game for two players. It is also known as +igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted +for being rich in strategic complexity despite its simple rules. The game is +played by two players who alternately place black and white stones (playing +pieces, now usually made of glass or plastic) on the vacant intersections of a +grid of 19x19 lines (9x9 or 13x13 for easier games). + +You also need to install a go engine, e.g. @code{gnugo}. + +This package is part of the KDE games module.") + (license license:gpl3+))) + +(define-public kubrick + (package + (name "kubrick") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/kubrick-" version ".tar.xz")) + (sha256 + (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("glu" ,glu) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("ki18n" ,ki18n) + ("kio" ,kio) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Game based on Rubik's Cube") + (description "Kubrick is a game based on the Rubik's Cube puzzle. + +The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular +\"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a +selection of puzzles at several levels of difficulty, as well as demos of +pretty patterns and solution moves, or you can make up your own puzzles. The +game has unlimited undo, redo, save and reload capabilities. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public lskat + (package + (name "lskat") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/lskat-" version ".tar.xz")) + (sha256 + (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kguiaddons" ,kguiaddons) + ("ki18n" ,ki18n) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Lieutnant Skat card game") + (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and +engaging card game for two players, where the second player is either live +opponent, or a built in artificial intelligence. + +Lieutnant Skat is a simplified variant of the Skat card game for two players. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+)))) + +(define-public kapman + (package + (name "kapman") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/kapman-" version ".tar.xz")) + (sha256 + (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Pac-Man clone") + (description "Kapman is a clone of the well known game Pac-Man. + +You must run through the maze to eat all pills without being captured by a +ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a +few seconds. When a stage is cleared of pills and energizer the player is +taken to the next stage with slightly increased game speed + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public kspaceduel + (package + (name "kspaceduel") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/kspaceduel-" version ".tar.xz")) + (sha256 + (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Two player game with shooting spaceships flying around a sun") + (description "KSpaceduel is a space battle game for one or two players, +where two ships fly around a star in a struggle to be the only survivor. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public bovo + (package + (name "bovo") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/bovo-" version ".tar.xz")) + (sha256 + (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Classic pen and paper game: five in a line") + (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five +points\") like game for two players, where the opponents alternate in placing +their respective pictogram on the game board. The winner is the first to +complete a line of five markers. (Also known as: Connect Five, Five in a row, +X and O, Naughts and Crosses) + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public killbots + (package + (name "killbots") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/killbots-" version ".tar.xz")) + (sha256 + (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Port of the classic BSD console game robots") + (description "Killbots is a simple game of evading killer robots. + +Who created the robots and why they have been programmed to destroy, no one +knows. All that is known is that the robots are numerous and their sole +objective is to destroy you. Fortunately for you, their creator has focused +on quantity rather than quality and as a result the robots are severely +lacking in intelligence. Your superior wit and a fancy teleportation device +are your only weapons against the never-ending stream of mindless automatons. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public ksnakeduel + (package + (name "ksnakeduel") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/ksnakeduel-" version ".tar.xz")) + (sha256 + (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("kguiaddons" ,kguiaddons) + ("ki18n" ,ki18n) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Snake race played against the computer") + (description "KSnakeDuel is a fast action game where you steer a snake +which has to eat food. While eating the snake grows. But once a player +collides with the other snake or the wall the game is lost. This becomes of +course more and more difficult the longer the snakes grow. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public kollision + (package + (name "kollision") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/kollision-" version ".tar.xz")) + (sha256 + (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Simple ball dodging game") + (description "In Kollision you use mouse to control a small blue ball in a +closed space environment filled with small red balls, which move about +chaotically. Your goal is to avoid touching any of those red balls with your +blue one, because the moment you do the game will be over. The longer you can +stay in game the higher will your score be. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public knavalbattle + (package + (name "knavalbattle") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version +"/src/knavalbattle-" version ".tar.xz")) + (sha256 + (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kauth" ,kauth) + ("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("kdnssd" ,kdnssd) + ("ki18n" ,ki18n) + ("ktextwidgets" ,ktextwidgets) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Battleship board game with built-in game server") + (description "KBattleship is a Battle Ship game for KDE. + +Ships are placed on a board which represents the sea. Players try to hit each +others ships in turns without knowing where they are placed. The first player +to destroy all ships wins the game. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public kreversi + (package + (name "kreversi") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version +"/src/kreversi-" version ".tar.xz")) + (sha256 + (base32 "0b6q8df2bawgnrswhq59z37axad0q3zpvvzxdds7sz1lw505xw9h")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("kdeclarative" ,kdeclarative) + ("ki18n" ,ki18n) + ("kiconthemes" ,kiconthemes) + ("kio" ,kio) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Old reversi board game, also known as othello") + (description "KReversi is a simple one player strategy game played +against the computer. + +If a player's piece is captured by an opposing player, that piece is turned +over to reveal the color of that player. A winner is declared when one player +has more pieces of his own color on the board and there are no more possible +moves. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) + +(define-public ksquares + (package + (name "ksquares") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/ksquares-" version ".tar.xz")) + (sha256 + (base32 "0hv8hls5s627lys08nnw72rfzsafj3dmp49mh2afzmh6lgk9h5vy")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kcompletion" ,kcompletion) + ("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative))) + (home-page "https://games.kde.org/") + (synopsis "Dots and Boxes game") + (description "KSquares is an implementation of the popular paper based +game Squares. Two players take turns connecting dots on a grid to complete +squares, the player with the most squares wins. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+)))) + +(define-public kjumpingcube + (package + (name "kjumpingcube") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/kjumpingcube-" version ".tar.xz")) + (sha256 + (base32 "0d67zqkf2xffjkj671gl2n6nj6jajyn6rgqqj5i6gm500mqi9rm1")))) + (properties `((tags . ("Desktop" "KDE" "Games")))) + (build-system qt-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("kdoctools" ,kdoctools))) + (inputs + `(("kconfig" ,kconfig) + ("kconfigwidgets" ,kconfigwidgets) + ("kcoreaddons" ,kcoreaddons) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("ki18n" ,ki18n) + ("kio" ,kio) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libkdegames" ,libkdegames) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (home-page "https://games.kde.org/") + (synopsis "Simple tactical game for number-crunchers") + (description "KJumpingcube is a simple tactical game for one or two +players, played on a grid of numbered squares. Each turn, players compete for +control of the board by capturing or adding to one square. + +This package is part of the KDE games module.") + (license (list license:gpl2+ license:fdl1.2+)))) diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm index 477e9a460a..41801ed0e6 100644 --- a/gnu/packages/geo.scm +++ b/gnu/packages/geo.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2019 Guillaume Le Vaillant ;;; Copyright © 2019 Efraim Flashner ;;; Copyright © 2019 Wiktor Żelazny +;;; Copyright © 2019 Hartmut Goebel ;;; ;;; This file is part of GNU Guix. ;;; @@ -64,6 +65,7 @@ (define-module (gnu packages geo) #:use-module (gnu packages pkg-config) #:use-module (gnu packages protobuf) #:use-module (gnu packages python) + #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages sqlite) @@ -112,7 +114,7 @@ (define-public geos (define-public gnome-maps (package (name "gnome-maps") - (version "3.30.3.1") + (version "3.32.2.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -120,7 +122,7 @@ (define-public gnome-maps name "-" version ".tar.xz")) (sha256 (base32 - "0xqk3yrds0w8bjmpf4jw0370phvm65av82nqrx7fp1648h9nq7xi")))) + "1m191iq1gjaqz79ci3dkbmwrkxp7pzknngimlf5bqib5x8yairlb")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -1213,3 +1215,79 @@ (define-public josm sources as well as from online sources and allows to edit the OSM data (nodes, ways, and relations) and their metadata tags.") (license license:gpl2+))) + +(define-public libmaxminddb + (package + (name "libmaxminddb") + (version "1.4.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/maxmind/libmaxminddb" + "/releases/download/" version "/" + "/libmaxminddb-" version ".tar.gz")) + (sha256 + (base32 "0mnimbaxnnarlw7g1rh8lpxsyf7xnmzwcczcc3lxw8xyf6ljln6x")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'configure 'set-cc-to-gcc + (lambda _ + (setenv "CC" "gcc")))))) + (native-inputs + `(("perl" ,perl))) + (home-page "https://maxmind.github.io/libmaxminddb/") + (synopsis "C library for the MaxMind DB file format") + (description "The libmaxminddb library provides a C library for reading +MaxMind DB files, including the GeoIP2 databases from MaxMind. The MaxMind DB +format is a custom, but open, binary format designed to facilitate fast +lookups of IP addresses while allowing flexibility in the type of data +associated with an address.") + (license license:asl2.0))) + +(define-public python-maxminddb + (package + (name "python-maxminddb") + (version "1.5.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "maxminddb" version)) + (sha256 + (base32 + "0y9giw81k4wdmpryr4k42w50z292mf364a6vs1vxf83ksc9ig6j4")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ;; Tests require a copy of the maxmind database + (inputs + `(("libmaxminddb" ,libmaxminddb))) + (home-page "http://www.maxmind.com/") + (synopsis "Reader for the MaxMind DB format") + (description "MaxMind DB is a binary file format that stores data indexed +by IP address subnets (IPv4 or IPv6). This is a Python module for reading +MaxMind DB files.") + (license license:asl2.0))) + +(define-public python-geoip2 + (package + (name "python-geoip2") + (version "2.9.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "geoip2" version)) + (sha256 + (base32 + "1w7cay5q6zawjzivqbwz5cqx1qbdjw6kbriccb7l46p7b39fkzzp")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ;; Tests require a copy of the maxmind database + (inputs + `(("python-maxminddb" ,python-maxminddb) + ("python-requests" ,python-requests))) + (home-page "http://www.maxmind.com/") + (synopsis "MaxMind GeoIP2 API") + (description "Provides an API for the GeoIP2 web services and databases. +The API also works with MaxMind’s free GeoLite2 databases.") + (license license:asl2.0))) diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm index 760131b83d..d05bdf0ac0 100644 --- a/gnu/packages/gnome-xyz.scm +++ b/gnu/packages/gnome-xyz.scm @@ -100,6 +100,8 @@ (define-public delft-icon-theme (begin (use-modules (guix build utils)) (copy-recursively (assoc-ref %build-inputs "source") "icons") + (substitute* "icons/Delft/index.theme" + (("gnome") "Adwaita")) (delete-file "icons/README.md") (delete-file "icons/LICENSE") (delete-file "icons/logo.jpg") @@ -115,7 +117,7 @@ (define-public delft-icon-theme (define-public gnome-shell-extension-dash-to-dock (package (name "gnome-shell-extension-dash-to-dock") - (version "65") + (version "66") (source (origin (method git-fetch) (uri (git-reference @@ -124,7 +126,7 @@ (define-public gnome-shell-extension-dash-to-dock version)))) (sha256 (base32 - "0ln49l9s0yfl30pi77pz7xlmh63l9vjppi863kry5lay10dsvz47")) + "04krl6rxlp1qc97psraf2kwin7h0mx4c7pnfpi7vhplmvasrwkfh")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 108004434c..2997647d23 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -14,7 +14,7 @@ ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner ;;; Copyright © 2016, 2017, 2018 Rene Saavedra ;;; Copyright © 2016 Jochem Raat -;;; Copyright © 2016, 2017 Kei Kebreau +;;; Copyright © 2016, 2017, 2019 Kei Kebreau ;;; Copyright © 2016 Jan Nieuwenhuizen ;;; Copyright © 2016 Roel Janssen ;;; Copyright © 2016, 2018 Leo Famulari @@ -42,6 +42,7 @@ ;;; Copyright © 2019 Maxim Cournoyer ;;; Copyright © 2019 Martin Becze ;;; Copyright © 2019 David Wilson +;;; Copyright © 2019 Raghav Gururajan ;;; ;;; This file is part of GNU Guix. ;;; @@ -104,6 +105,7 @@ (define-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages ibus) + #:use-module (gnu packages icu4c) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) #:use-module (gnu packages inkscape) @@ -116,6 +118,7 @@ (define-module (gnu packages gnome) #:use-module (gnu packages lirc) #:use-module (gnu packages lua) #:use-module (gnu packages mail) + #:use-module (gnu packages mp3) #:use-module (gnu packages multiprecision) #:use-module (gnu packages music) #:use-module (gnu packages ncurses) @@ -472,10 +475,65 @@ (define-public gnome-common commonly used macros.") (license license:gpl2+))) +(define-public gnome-contacts + (package + (name "gnome-contacts") + (version "3.32.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/gnome-contacts/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "17g1gh8yj58cfpdx69h2szivlbjgvv982kmhnkkh0i5bwj0zs2yy")))) + (build-system meson-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'generate-vapis + (lambda* (#:key inputs #:allow-other-keys) + ;; To generate goa's missing .vapi file + (define goa + (assoc-ref inputs "gnome-online-accounts:lib")) + + (invoke "vapigen" "--directory=vapi" "--pkg=gio-2.0" + "--library=goa-1.0" + (string-append goa "/share/gir-1.0/Goa-1.0.gir")) + #t))))) + (native-inputs + `(("glib:bin" ,glib "bin") + ("gtk+:bin" ,gtk+ "bin") + ("pkg-config" ,pkg-config))) + (inputs + `(("cheese" ,cheese) + ("docbook-xml" ,docbook-xml) + ("dockbook-xsl" ,docbook-xsl) + ("evolution-data-server" ,evolution-data-server) + ("gettext" ,gettext-minimal) + ("gnome-desktop" ,gnome-desktop) + ("gnome-online-accounts:lib" ,gnome-online-accounts "lib") + ("gobject-introspection" ,gobject-introspection) + ("gst-plugins-base" ,gst-plugins-base) + ("gtk+" ,gtk+) + ("libgee" ,libgee) + ("libxslt" ,libxslt) + ("telepathy-glib" ,telepathy-glib) + ("vala" ,vala))) + (propagated-inputs + `(("folks", folks) + ("telepathy-mission-control" ,telepathy-mission-control))) + (synopsis "GNOME's integrated address book") + (description + "GNOME Contacts organizes your contact information from online and +offline sources, providing a centralized place for managing your contacts.") + (home-page "https://wiki.gnome.org/Apps/Contacts") + (license license:gpl2+))) + (define-public gnome-desktop (package (name "gnome-desktop") - (version "3.30.2") + (version "3.32.2") (source (origin (method url-fetch) @@ -484,8 +542,8 @@ (define-public gnome-desktop name "-" version ".tar.xz")) (sha256 (base32 - "0k6iccfj9naw42dl2mgljfvk12dmvg06plg86qd81nksrf9ycxal")))) - (build-system gnu-build-system) + "0bidx4626x7k2myv6f64qv4fzmxv8v475wibiz19kj8hjfr737q9")))) + (build-system meson-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -495,27 +553,39 @@ (define-public gnome-desktop (substitute* "libgnome-desktop/gnome-languages.c" (("\"locale\"") (string-append "\"" libc "/bin/locale\""))) - #t)))))) + #t))) + (add-before 'check 'pre-check + (lambda* (#:key inputs #:allow-other-keys) + ;; Tests require a running X server and locales. + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1") + (setenv "GUIX_LOCPATH" + (string-append (assoc-ref inputs "glibc-locales") + "/lib/locale")) + #t))))) (native-inputs - `(("gobject-introspection" ,gobject-introspection) + `(("glib:bin" ,glib "bin") ; for gdbus-codegen + ("glibc-locales" ,glibc-locales) ; for tests + ("gobject-introspection" ,gobject-introspection) ("itstool" ,itstool) ("intltool" ,intltool) ("pkg-config" ,pkg-config) - ("xmllint" ,libxml2))) + ("xmllint" ,libxml2) + ("xorg-server" ,xorg-server-for-tests))) (propagated-inputs ;; Required by gnome-desktop-3.0.pc. `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("gtk+" ,gtk+))) - (inputs - `(("gdk-pixbuf" ,gdk-pixbuf) - ("glib" ,glib) + ("gtk+" ,gtk+) ("iso-codes" ,iso-codes) ("libseccomp" ,libseccomp) ("libx11" ,libx11) + ("xkeyboard-config" ,xkeyboard-config))) + (inputs + `(("gdk-pixbuf" ,gdk-pixbuf) + ("glib" ,glib) ("libxext" ,libxext) ("libxkbfile" ,libxkbfile) - ("libxrandr" ,libxrandr) - ("xkeyboard-config" ,xkeyboard-config))) + ("libxrandr" ,libxrandr))) (home-page "https://www.gnome.org/") (synopsis "Libgnome-desktop, gnome-about, and desktop-wide documents") @@ -563,7 +633,7 @@ (define-public gnome-doc-utils (define-public gnome-disk-utility (package (name "gnome-disk-utility") - (version "3.30.2") + (version "3.32.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -571,7 +641,7 @@ (define-public gnome-disk-utility name "-" version ".tar.xz")) (sha256 (base32 - "1365fabz3q7n3bl775z82m1nzg18birxxyd7l2ssbbkqrx3h7wgi")))) + "08vwbji9m1nhjjdiyhhaqi8cncys7i89b4bpy095f8475v8y05bg")))) (build-system meson-build-system) (arguments '(#:phases @@ -854,7 +924,7 @@ (define-public evince (define-public gsettings-desktop-schemas (package (name "gsettings-desktop-schemas") - (version "3.28.1") + (version "3.32.0") (source (origin (method url-fetch) @@ -863,8 +933,8 @@ (define-public gsettings-desktop-schemas name "-" version ".tar.xz")) (sha256 (base32 - "0bshwm49cd01ighsxqlbqn10q0ch71ff99gcrx8pr2gyky2ad3pq")))) - (build-system gnu-build-system) + "0d8a6479vappgplq5crdr3ah0ykqcr3fw533wkx9v1a8lnrv8n9d")))) + (build-system meson-build-system) (arguments '(#:phases (modify-phases %standard-phases (add-after 'unpack 'set-adwaita-theme-file-name @@ -954,18 +1024,16 @@ (define-public gnome-icon-theme `(("icon-naming-utils" ,icon-naming-utils) ("intltool" ,intltool) ("pkg-config" ,pkg-config))) - (home-page "https://art.gnome.org/") - (synopsis - "GNOME icon theme") - (description - "Icons for the GNOME desktop.") + (home-page "https://wiki.gnome.org/Personalization") + (synopsis "GNOME icon theme") + (description "Icons for the GNOME desktop.") (license license:lgpl3))) ; or Creative Commons BY-SA 3.0 ;; gnome-icon-theme was renamed to adwaita-icon-theme after version 3.12.0. (define-public adwaita-icon-theme (package (inherit gnome-icon-theme) (name "adwaita-icon-theme") - (version "3.30.1") + (version "3.32.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -973,7 +1041,7 @@ (define-public adwaita-icon-theme name "-" version ".tar.xz")) (sha256 (base32 - "1kp1lis3dr16jmlgycz1b29jsr6ir8wmqj6laqwlhs663cmjlxbd")))) + "11ij35na8nisvxx3qh527iz33h6z2q1a7iinqyp7p65v0zjbd3b9")))) (native-inputs `(("gtk-encode-symbolic-svg" ,gtk+ "bin"))))) @@ -2234,7 +2302,7 @@ (define-public libbonoboui (define-public libwnck (package (name "libwnck") - (version "3.30.0") + (version "3.32.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -2242,10 +2310,12 @@ (define-public libwnck name "-" version ".tar.xz")) (sha256 (base32 - "0f9lvhm3w25046dqq8xyg7nzggxpmdriwrb661nng05a8qk0svdc")))) - (build-system gnu-build-system) + "1jp3p1lnwnwi6fxl2rz3166cmwzwy9vqz896anpwc3wdy9f875cm")))) + (build-system meson-build-system) (native-inputs `(("pkg-config" ,pkg-config) + ("glib" ,glib "bin") ; for glib-mkenums + ("gobject-introspection" ,gobject-introspection) ; for g-ir-scanner ("intltool" ,intltool))) (propagated-inputs `(("gtk+" ,gtk+) @@ -2273,6 +2343,10 @@ (define-public libwnck-2 (sha256 (base32 "15713yl0f8f3p99jzqqfmbicrdswd3vwpx7r3bkf1bgh6d9lvs4b")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("intltool" ,intltool))) (propagated-inputs `(("gtk+" ,gtk+-2) ("libxres" ,libxres) @@ -2442,7 +2516,7 @@ (define-public gnome-themes-standard (define-public seahorse (package (name "seahorse") - (version "3.30.1.1") + (version "3.32.2") (source (origin (method url-fetch) @@ -2451,12 +2525,13 @@ (define-public seahorse version ".tar.xz")) (sha256 (base32 - "12x7xmwh62yl0ax90v8nkx3jqzviaz9hz2g56yml78wzww20gawy")) + "0d8zdzmlz7fjv9xl20zl4ckidf465mvdjnbpxy3k08y9iw423q4x")) (patches (search-patches "seahorse-gkr-use-0-on-empty-flags.patch")))) (build-system meson-build-system) (arguments - '(#:phases + '(#:glib-or-gtk? #t + #:phases (modify-phases %standard-phases (add-after 'unpack 'skip-gtk-update-icon-cache ;; Don't create 'icon-theme.cache'. @@ -2472,6 +2547,7 @@ (define-public seahorse ("openldap" ,openldap) ("openssh" ,openssh) ("avahi" ,avahi) + ("libpwquality" ,libpwquality) ("libsecret" ,libsecret) ("libsoup" ,libsoup))) (native-inputs @@ -2481,7 +2557,7 @@ (define-public seahorse ("pkg-config" ,pkg-config) ("vala" ,vala) ("xmllint" ,libxml2))) - (home-page "https://launchpad.net/gnome-themes-standard") + (home-page "https://wiki.gnome.org/Apps/Seahorse") (synopsis "Manage encryption keys and passwords in the GNOME keyring") (description "Seahorse is a GNOME application for managing encryption keys and @@ -2918,7 +2994,7 @@ (define-public rest (define-public libsoup (package (name "libsoup") - (version "2.68.2") + (version "2.68.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/libsoup/" @@ -2926,7 +3002,7 @@ (define-public libsoup "libsoup-" version ".tar.xz")) (sha256 (base32 - "0crr9qprmacr626fx83cx81ggk85zsgxr4mn577kpzj6m40k1bai")))) + "1yxs0ax4rq3g0lgkbv7mz497rqj16iyyizddyc13gzxh6n7b0jsk")))) (build-system meson-build-system) (outputs '("out" "doc")) (arguments @@ -3089,7 +3165,7 @@ (define-public libsecret (define-public five-or-more (package (name "five-or-more") - (version "3.30.0") + (version "3.32.0") (source (origin (method url-fetch) @@ -3098,16 +3174,29 @@ (define-public five-or-more name "-" version ".tar.xz")) (sha256 (base32 - "00d729p251kh96624i7qg2370r5mxwafs016i6hy01vsr71jzb9x")))) - (build-system glib-or-gtk-build-system) + "0v52i22ygv6y4zqs8nyb1qmacmj9whhqrw7qss6vn7by4nsikhrn")))) + (build-system meson-build-system) + (arguments + '(#:glib-or-gtk? #t + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'skip-gtk-update-icon-cache + (lambda _ + (substitute* "meson_post_install.py" + (("gtk-update-icon-cache") (which "true"))) + #t))))) (native-inputs `(("pkg-config" ,pkg-config) + ("appstream-glib" ,appstream-glib) ("desktop-file-utils" ,desktop-file-utils) + ("glib:bin" ,glib "bin") ; for glib-compile-resources ("intltool" ,intltool) ("itstool" ,itstool) + ("vala" ,vala) ("xmllint" ,libxml2))) (inputs `(("gtk+" ,gtk+) + ("libgnome-games-support" ,libgnome-games-support) ("librsvg" ,librsvg))) (home-page "https://wiki.gnome.org/Apps/Five%20or%20more") (synopsis "Logic puzzle game") @@ -3120,7 +3209,7 @@ (define-public five-or-more (define-public gnome-mines (package (name "gnome-mines") - (version "3.30.1.1") + (version "3.32.2") (source (origin (method url-fetch) @@ -3129,12 +3218,17 @@ (define-public gnome-mines name "-" version ".tar.xz")) (sha256 (base32 - "08ddk400sg1g3q26gnm5mgv81vdqyix0yl7pd47p50vkc1w6f33z")))) + "1nv966wkp2rqxzcdb76bwlbzpjqadcaqzrnkxpzwnvjjr167yx8g")))) (build-system meson-build-system) (arguments - `(#:phases + '(#:glib-or-gtk? #t + #:phases (modify-phases %standard-phases - (delete 'bootstrap)))) + (add-after 'unpack 'skip-gtk-update-icon-cache + (lambda _ + (substitute* "build-aux/meson_post_install.py" + (("gtk-update-icon-cache") (which "true"))) + #t))))) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-compile-resources ("pkg-config" ,pkg-config) @@ -3158,7 +3252,7 @@ (define-public gnome-mines (define-public gnome-sudoku (package (name "gnome-sudoku") - (version "3.30.0") + (version "3.32.0") (source (origin (method url-fetch) @@ -3167,13 +3261,24 @@ (define-public gnome-sudoku name "-" version ".tar.xz")) (sha256 (base32 - "1xy986s51jnrcqwan2hy4bjdg6797yr9s7gxx2z2q4j4gkx3qa1f")))) - (build-system glib-or-gtk-build-system) + "1wwdjflw1lbx3cv6gvqcgp5jnjkrq37ld6mjbjj03g3vr90qaf0l")))) + (build-system meson-build-system) + (arguments + '(#:glib-or-gtk? #t + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'skip-gtk-update-icon-cache + (lambda _ + (substitute* "build-aux/post_install.py" + (("gtk-update-icon-cache") (which "true"))) + #t))))) (native-inputs `(("pkg-config" ,pkg-config) ("desktop-file-utils" ,desktop-file-utils) + ("glib:bin" ,glib "bin") ; for glib-compile-resources ("intltool" ,intltool) ("itstool" ,itstool) + ("vala" ,vala) ("xmllint" ,libxml2))) (inputs `(("gtk+" ,gtk+) @@ -3193,7 +3298,7 @@ (define-public gnome-sudoku (define-public gnome-terminal (package (name "gnome-terminal") - (version "3.30.3") + (version "3.32.2") (source (origin (method url-fetch) @@ -3202,7 +3307,7 @@ (define-public gnome-terminal name "-" version ".tar.xz")) (sha256 (base32 - "0bar8qazk39acsif31h8i408nl82mzdcdg6p7ymak4l9pxyscxf8")))) + "0shhpnagasyp1kxgjczfrivcxbgrrl3y8lzvp1z101m67h4jp6km")))) (build-system glib-or-gtk-build-system) (arguments '(#:configure-flags @@ -3505,7 +3610,7 @@ (define-public libgweather (define-public gnome-settings-daemon (package (name "gnome-settings-daemon") - (version "3.30.2") + (version "3.32.1") (source (origin (method url-fetch) @@ -3514,7 +3619,7 @@ (define-public gnome-settings-daemon name "-" version ".tar.xz")) (sha256 (base32 - "0c663csa3gnsr6wm0xfll6aani45snkdj7zjwjfzcwfh8w4a3z12")))) + "02d0s0g2mmqfib44r3sf0499r08p61s8l2ndsjssbam1bi7x2dks")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -3674,7 +3779,7 @@ (define-public amtk (define-public devhelp (package (name "devhelp") - (version "3.30.1") + (version "3.32.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -3682,10 +3787,11 @@ (define-public devhelp name "-" version ".tar.xz")) (sha256 (base32 - "036sddvhs0blqpc2ixmjdl9vxynvkn5jpgn0jxr1fxcm4rh3q07a")))) + "06sa83zggk29wcg75fl3gqh0rmi7cd3gsbk09a2z23r7vpy7xanq")))) (build-system meson-build-system) (arguments - '(#:phases + '(#:glib-or-gtk? #t + #:phases (modify-phases %standard-phases (add-after 'unpack 'skip-gtk-update-icon-cache ;; Don't create 'icon-theme.cache'. @@ -4004,7 +4110,7 @@ (define-public libgnome-games-support (define-public gnome-klotski (package (name "gnome-klotski") - (version "3.22.3") + (version "3.32.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -4012,13 +4118,25 @@ (define-public gnome-klotski name "-" version ".tar.xz")) (sha256 (base32 - "0prc0s28pdflgzyvk1g0yfx982q2grivmz3858nwpqmbkha81r7f")))) - (build-system glib-or-gtk-build-system) + "1p4s15gxj6gasix22z9vlx2yrx196fvcxr6v6qrl569idfgjbi72")))) + (build-system meson-build-system) + (arguments + '(#:glib-or-gtk? #t + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "build-aux/meson_post_install.py" + (("gtk-update-icon-cache") (which "true"))) + #t))))) (native-inputs `(("desktop-file-utils" ,desktop-file-utils) + ("glib:bin" ,glib "bin") ; for glib-compile-resources ("intltool" ,intltool) ("itstool" ,itstool) ("pkg-config" ,pkg-config) + ("vala" ,vala) ("xmllint" ,libxml2))) (inputs `(("gtk+" ,gtk+) @@ -4036,7 +4154,7 @@ (define-public gnome-klotski (define-public grilo (package (name "grilo") - (version "0.3.3") + (version "0.3.10") (source (origin (method url-fetch) @@ -4045,13 +4163,15 @@ (define-public grilo name "-" version ".tar.xz")) (sha256 (base32 - "1qx072m0gl6m3d5g5cbbf13p4h217icmlxjnrn829x5xqwi451sw")))) - (build-system gnu-build-system) + "1s7ilyywf18q26aj5c4709kfizqywjlnacp4jzmj9v9i9kkv4i3y")))) + (build-system meson-build-system) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums and glib-genmarshal ("intltool" ,intltool) ("pkg-config" ,pkg-config) - ("gobject-introspection" ,gobject-introspection))) + ("gobject-introspection" ,gobject-introspection) + ("gtk-doc" ,gtk-doc) + ("vala" ,vala))) (inputs `(("cyrus-sasl" ,cyrus-sasl) ("glib" ,glib) @@ -4060,26 +4180,12 @@ (define-public grilo ("liboauth" ,liboauth) ("libsoup" ,libsoup) ("totem-pl-parser" ,totem-pl-parser))) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-introspection-install-dir - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* '("src/Makefile.in" - "libs/pls/Makefile.in" - "libs/net/Makefile.in") - (("@INTROSPECTION_GIRDIR@") - (string-append out "/share/gir-1.0/")) - (("@INTROSPECTION_TYPELIBDIR@") - (string-append out "/lib/girepository-1.0/"))) - #t)))))) (native-search-paths (list (search-path-specification (variable "GRL_PLUGIN_PATH") (files (list (string-append "lib/grilo-" (version-major+minor version))))))) - (home-page "https://live.gnome.org/Grilo") + (home-page "https://wiki.gnome.org/action/show/Projects/Grilo") (synopsis "Framework for discovering and browsing media") (description "Grilo is a framework focused on making media discovery and browsing easy @@ -4141,7 +4247,7 @@ (define-public grilo-plugins (define-public totem (package (name "totem") - (version "3.30.0") + (version "3.32.1") (source (origin (method url-fetch) @@ -4150,9 +4256,7 @@ (define-public totem name "-" version ".tar.xz")) (sha256 (base32 - "0rahkybxbmxhlmrrgrzxny1xm7wycx7ib4blxp1i2l1q3i8s84b0")) - (patches (search-patches "totem-meson-easy-codec.patch" - "totem-meson-compat.patch")))) + "0yra8apc7smpwf7d1k8crhrm8d4wix24ds6i9yxbch1v11jnhr3v")))) (build-system meson-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -4161,7 +4265,9 @@ (define-public totem ("glib:bin" ,glib "bin") ;for 'glib-mkenums' ("intltool" ,intltool) ("itstool" ,itstool) - ("xmllint" ,libxml2))) + ("xmllint" ,libxml2) + ("python-pylint" ,python-pylint) + ("xorg-server" ,xorg-server-for-tests))) (propagated-inputs `(("dconf" ,dconf))) (inputs @@ -4189,8 +4295,7 @@ (define-public totem ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) ("adwaita-icon-theme" ,adwaita-icon-theme) ("python" ,python) - ("python-pygobject" ,python2-pygobject) - ;; XXX TODO pylint needed for python support + ("python-pygobject" ,python-pygobject) ("totem-pl-parser" ,totem-pl-parser) ("grilo" ,grilo) ("grilo-plugins" ,grilo-plugins) @@ -4198,12 +4303,6 @@ (define-public totem (arguments `(#:glib-or-gtk? #t - ;; Disable parallel builds until - ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=28813 is - ;; fixed. Try enabling it when updating this package in case - ;; upstream has fixed it. - #:parallel-build? #f - ;; Disable automatic GStreamer plugin installation via PackageKit and ;; all that. #:configure-flags '("-D" "enable-easy-codec-installation=no" @@ -4211,7 +4310,6 @@ (define-public totem ;; Do not build .a files for the plugins, it's ;; completely useless. This saves 2 MiB. "--default-library" "shared") - #:phases (modify-phases %standard-phases (add-after 'unpack 'skip-gtk-update-icon-cache @@ -4225,6 +4323,13 @@ (define-public totem (lambda _ (setenv "DESTDIR" "/") #t)) + (add-before + 'check 'pre-check + (lambda _ + ;; Tests require a running X server. + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1") + #t)) (add-after 'install 'wrap-totem (lambda* (#:key inputs outputs #:allow-other-keys) @@ -4336,7 +4441,7 @@ (define-public rhythmbox (define-public eog (package (name "eog") - (version "3.28.4") + (version "3.32.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -4344,7 +4449,7 @@ (define-public eog name "-" version ".tar.xz")) (sha256 (base32 - "1wrq3l3z0x6q0hnc1vqr2hnyb1b14qw6aqvc5dldfgbs0yys6p55")))) + "1bcxpqgzlk2cy4wfb3b5h66mhpj2fhrk1rrb5qqcv5xrr62ik5xy")))) (build-system meson-build-system) (arguments `(#:configure-flags @@ -4682,7 +4787,7 @@ (define-public eolie (define-public epiphany (package (name "epiphany") - (version "3.30.4") + (version "3.32.5") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/epiphany/" @@ -4690,7 +4795,7 @@ (define-public epiphany "epiphany-" version ".tar.xz")) (sha256 (base32 - "0nk0krzrfck6hhfs52f4sjmj93yjyvabm72bq8i8f9l1pass5vgd")))) + "1hj4yy53fwh96h17cqiw3gxc070vmc7yqwc7phvhnpyinkp9g5my")))) (build-system meson-build-system) (arguments @@ -4831,7 +4936,7 @@ (define-public yelp-xsl (define-public yelp (package (name "yelp") - (version "3.30.0") + (version "3.32.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -4839,7 +4944,7 @@ (define-public yelp name "-" version ".tar.xz")) (sha256 (base32 - "060a902j15k76fyhk8xfl38ipvrrcc0qd7nm2mcck4ifb45b0zv4")))) + "0yrl96icmmrxvg7sxl519gzg9qb368cmzgrr9ddh181ignkxzx7f")))) (build-system glib-or-gtk-build-system) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc. @@ -5014,7 +5119,7 @@ (define-public shotwell (define-public file-roller (package (name "file-roller") - (version "3.30.1") + (version "3.32.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -5022,11 +5127,12 @@ (define-public file-roller name "-" version ".tar.xz")) (sha256 (base32 - "0kiragsqyixyx15747b71qc4nw8y4jx9d55wgg612xb0hp5l9pj1")))) + "0w8s6hakgsvb2nqwbv0lr8ki4cbf1pz5z3qwkb0b2k7ppbh7j2n6")))) (build-system meson-build-system) (native-inputs `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database ("intltool" ,intltool) + ("itstool" ,itstool) ("pkg-config" ,pkg-config) ("gtk+" ,gtk+ "bin") ; gtk-update-icon-cache ("glib:bin" ,glib "bin"))) @@ -5037,7 +5143,7 @@ (define-public file-roller ("json-glib" ,json-glib) ("libarchive" ,libarchive) ("libnotify" ,libnotify) - ("itstool" ,itstool) + ("nettle" ,nettle) ("libxml2" ,libxml2))) (synopsis "Graphical archive manager for GNOME") (description "File Roller is an archive manager for the GNOME desktop @@ -5049,7 +5155,7 @@ (define-public file-roller (define-public gnome-session (package (name "gnome-session") - (version "3.30.1") + (version "3.32.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -5057,7 +5163,7 @@ (define-public gnome-session name "-" version ".tar.xz")) (sha256 (base32 - "0fbpq103md4g9gi67rxnwvha21629nxx7qazddy6q6494sbqbzpa")))) + "0zrzkpd406i159mla7bfs5npa32fgqh66aip1rfq02rgsgmc9m5v")))) (arguments '(#:glib-or-gtk? #t #:phases @@ -5178,7 +5284,7 @@ (define-public gjs (define-public gedit (package (name "gedit") - (version "3.30.2") + (version "3.32.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -5186,38 +5292,72 @@ (define-public gedit name "-" version ".tar.xz")) (sha256 (base32 - "0qwig35hzvjaqic9x92jcpmycnvcybsbnbiw6rppryx0arwb3wza")))) - (build-system glib-or-gtk-build-system) + "1q2rk7fym542c7k3bn2wlnzgy384gxacbifsjny0spbg95gfybvl")))) + (build-system meson-build-system) (arguments - `(#:phases + `(#:glib-or-gtk? #t + #:configure-flags + ;; Otherwise, the RUNPATH will lack the final path component. + (list (string-append "-Dc_link_args=-Wl,-rpath=" + (assoc-ref %outputs "out") "/lib/gedit")) + + ;; XXX: Generated .h files are sometimes used before being built. + #:parallel-build? #f + + #:phases (modify-phases %standard-phases - (add-after - 'install 'wrap-gedit - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (gtksourceview (assoc-ref inputs "gtksourceview")) - (gi-typelib-path (getenv "GI_TYPELIB_PATH")) - (python-path (getenv "PYTHONPATH"))) - (wrap-program (string-append out "/bin/gedit") - ;; For plugins. - `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)) - `("PYTHONPATH" ":" prefix (,python-path)) - ;; For language-specs. - `("XDG_DATA_DIRS" ":" prefix (,(string-append gtksourceview - "/share"))))) - #t))))) + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "build-aux/meson/post_install.py" + (("gtk-update-icon-cache") (which "true"))) + #t)) + (add-after 'unpack 'patch-libgd-fetch + (lambda* (#:key inputs #:allow-other-keys) + (let ((libgd (assoc-ref inputs "libgd"))) + ;; Calling git is unnecessary because libgd is fetched as a + ;; native input to this package. + (substitute* "meson.build" + ((".*git.*") "")) + (copy-recursively libgd "subprojects/libgd") + #t))) + (add-after 'install 'wrap-gedit + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (gtksourceview (assoc-ref inputs "gtksourceview")) + (gi-typelib-path (getenv "GI_TYPELIB_PATH")) + (python-path (getenv "PYTHONPATH"))) + (wrap-program (string-append out "/bin/gedit") + ;; For plugins. + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)) + `("PYTHONPATH" ":" prefix (,python-path)) + ;; For language-specs. + `("XDG_DATA_DIRS" ":" prefix (,(string-append gtksourceview + "/share"))))) + #t))))) (propagated-inputs `(("dconf" ,dconf))) (native-inputs - `(("intltool" ,intltool) + `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database + ("intltool" ,intltool) ("itstool" ,itstool) + ("glib:bin" ,glib "bin") ; for glib-mkenums, etc. ("gobject-introspection" ,gobject-introspection) + ("libgd" + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.gnome.org/GNOME/libgd") + (commit "c7c7ff4e05d3fe82854219091cf116cce6b19de0"))) + (file-name (git-file-name "libgd" version)) + (sha256 + (base32 "16yld0ap7qj1n96h4f2sqkjmibg7xx5xwkqxdfzam2nmyfdlrrrs")))) ("pkg-config" ,pkg-config))) (inputs `(("glib" ,glib) ("gspell" ,gspell) ("gtk+" ,gtk+) - ("gtksourceview" ,gtksourceview-3) + ("gtksourceview" ,gtksourceview) ("libpeas" ,libpeas) ("libxml2" ,libxml2) ("iso-codes" ,iso-codes) @@ -5265,7 +5405,7 @@ (define-public zenity (define-public mutter (package (name "mutter") - (version "3.30.2") + (version "3.32.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -5273,39 +5413,46 @@ (define-public mutter name "-" version ".tar.xz")) (sha256 (base32 - "0qr3w480p31nbiad49213rj9rk6p9fl82a68pzznpz36p30dq96z")))) + "1h577i2ap7dpfy1jg101jvc6nzccc0csgvd55ahydlr8f94frcva")))) ;; NOTE: Since version 3.21.x, mutter now bundles and exports forked ;; versions of cogl and clutter. As a result, many of the inputs, ;; propagated-inputs, and configure flags used in cogl and clutter are ;; needed here as well. - (build-system gnu-build-system) + (build-system meson-build-system) (arguments - '(#:configure-flags - ;; XXX: build fails with [-Werror]: - ;; backends/meta-cursor-renderer.c:112:5: error: - ;; implicit declaration of function ?roundf? - (list "--enable-compile-warnings=minimum" - - "--enable-native-backend" + '(;; XXX: All mutter tests fail with the following error: + ;; Settings schema 'org.gnome.mutter' is not installed + #:tests? #f + #:glib-or-gtk? #t + #:configure-flags + ;; Otherwise, the RUNPATH will lack the final path component. + (list (string-append "-Dc_link_args=-Wl,-rpath=" + (assoc-ref %outputs "out") "/lib:" + (assoc-ref %outputs "out") "/lib/mutter-4") ;; The following flags are needed for the bundled clutter - "--enable-x11-backend=yes" - - (string-append "--with-xwayland-path=" + (string-append "-Dxwayland_path=" (assoc-ref %build-inputs "xorg-server-xwayland") "/bin/Xwayland") ;; the remaining flags are needed for the bundled cogl - "--enable-cogl-gst" - (string-append "--with-gl-libname=" + (string-append "-Dopengl_libname=" (assoc-ref %build-inputs "mesa") "/lib/libGL.so")) #:phases (modify-phases %standard-phases + (add-after 'unpack 'disable-werror + (lambda _ + ;; XXX: build fails with [-Werror]: + ;; backends/meta-cursor-renderer.c:112:5: error: + ;; implicit declaration of function ?roundf? + (substitute* "meson.build" + (("'-Werror=.*',") "")) + #t)) ;; Replace references to systemd libraries to elogind references. (add-before 'configure 'use-elogind (lambda _ - (substitute* (list "configure" + (substitute* (list "meson.build" "src/backends/native/meta-launcher.c" "src/core/main.c") (("systemd") "elogind")) @@ -5315,6 +5462,7 @@ (define-public mutter ("gobject-introspection" ,gobject-introspection) ("intltool" ,intltool) ("pkg-config" ,pkg-config) + ("xorg-server" ,xorg-server-for-tests) ;; For git build ("autoconf" ,autoconf) ("automake" ,automake) @@ -5344,13 +5492,16 @@ (define-public mutter (inputs `(("elogind" ,elogind) ("gnome-desktop" ,gnome-desktop) + ("gnome-settings-daemon" ,gnome-settings-daemon) ("libcanberra-gtk" ,libcanberra) ("libgudev" ,libgudev) ("libice" ,libice) ("libsm" ,libsm) + ("libwacom" ,libwacom) ("libxkbfile" ,libxkbfile) ("libxrandr" ,libxrandr) ("libxtst" ,libxtst) + ("pipewire" ,pipewire) ("startup-notification" ,startup-notification) ("upower-glib" ,upower) ("xkeyboard-config" ,xkeyboard-config) @@ -5368,7 +5519,7 @@ (define-public mutter (define-public gnome-online-accounts (package (name "gnome-online-accounts") - (version "3.30.2") + (version "3.32.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -5376,7 +5527,7 @@ (define-public gnome-online-accounts name "-" version ".tar.xz")) (sha256 (base32 - "1p1gdgryziklrgngn6m13xnvfx4gb01h723nndfi9944r24fbiq5")))) + "08g9kdj8fzcgp76z2zsj9m7wfjks9z6xfrfrbfmcr69k40mapfx8")))) (outputs '("out" "lib")) (build-system glib-or-gtk-build-system) (arguments @@ -5402,6 +5553,7 @@ (define-public gnome-online-accounts ("gobject-introspection" ,gobject-introspection) ("intltool" ,intltool) ("pkg-config" ,pkg-config) + ("vala" ,vala) ("xsltproc" ,libxslt))) (propagated-inputs `(("glib" ,glib) ; required by goa-1.0.pc @@ -5424,7 +5576,7 @@ (define-public gnome-online-accounts (define-public evolution-data-server (package (name "evolution-data-server") - (version "3.30.5") + (version "3.32.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -5433,7 +5585,7 @@ (define-public evolution-data-server (patches (search-patches "evolution-data-server-locales.patch")) (sha256 (base32 - "1s952wyhgcbmq9nfgk75v15zdy1h3wy5p5rmkqibaavmc0pk3mli")))) + "0zsc9xwy6ixk3x0dx69ax5isrdw8qxjdxg2i5fr95s40nss7rxl3")))) (build-system cmake-build-system) (arguments '(#:configure-flags @@ -5460,11 +5612,13 @@ (define-public evolution-data-server (delete-file-recursively "tests/book-migration") (substitute* "tests/CMakeLists.txt" (("add_subdirectory\\(book-migration\\)") "")) - ;; tests/libedata-cal/test-cal-meta-backend.c:1328:test_get_attachment_uris: - ;; assertion failed (uris->data == expected_uri): - ;; ("" == "file:///tests/libedata-cal/components/event-1.ics") - (substitute* "tests/libedata-cal/CMakeLists.txt" - (("test-cal-meta-backend") "")) + ;; tests/libebook/client/test-book-client-view-operations:8077): + ;; e-data-server-WARNING **: + ;; (src/libedataserver/e-source-registry.c:264):thread_closure_free: + ;; runtime check failed: + ;; (!g_main_context_pending (closure->main_context)) + (substitute* "tests/libebook/client/CMakeLists.txt" + (("test-book-client-view-operations") "")) #t)) (add-after 'unpack 'patch-paths (lambda _ @@ -5583,7 +5737,7 @@ (define-public caribou (define-public network-manager (package (name "network-manager") - (version "1.14.4") + (version "1.18.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/NetworkManager/" @@ -5592,7 +5746,7 @@ (define-public network-manager (patches (search-patches "nm-plugin-path.patch")) (sha256 (base32 - "064cgj9za0kzarks0lrv0qw2ysdphb5l97iw0c964bfiqzjfv8rm")) + "0pnh1wr2p1fqa5pr945fr3lngfc5ccfrmgddqsg55lxnjpv0ggd3")) (modules '((guix build utils))) (snippet '(begin @@ -5995,7 +6149,7 @@ (define-public libxml++-2 (define-public gdm (package (name "gdm") - (version "3.30.3") + (version "3.32.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -6003,7 +6157,7 @@ (define-public gdm name "-" version ".tar.xz")) (sha256 (base32 - "15f7lz7z75krgbq8vb800afj96h8mw2fpy1s28za2911x5vgq0ak")))) + "12ypdz9i24hwbl1d1wnnxb8zlvfa4f49n9ac5cl9d6h8qp4b0gb4")))) (build-system glib-or-gtk-build-system) (arguments '(#:configure-flags @@ -6112,7 +6266,7 @@ (define-public gdm "\") == 0 && " "g_strcmp0(base_name, \"fail.desktop\") == 0)")) (("g_error [(]\"GdmSession: no session desktop files installed, aborting\\.\\.\\.\"[)];") - "{ self->priv->fallback_session_name = g_strdup(\"fail\"); goto out; }")) + "{ self->fallback_session_name = g_strdup(\"fail\"); goto out; }")) #t)) ;; GDM requires that there be at least one desktop entry ;; file. This phase installs a hidden one that simply @@ -6210,7 +6364,7 @@ (define-public libgtop (define-public gnome-bluetooth (package (name "gnome-bluetooth") - (version "3.28.0") + (version "3.32.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -6218,7 +6372,7 @@ (define-public gnome-bluetooth name "-" version ".tar.xz")) (sha256 (base32 - "0q7yzklrlayj99risj096mr5x35anx94wvr6nbf6pwbvvzv7453p")))) + "1am1gf0nzwg6x1s8ly13j0xnjzgrfj06j0dp52x4zy9s67ywlhb4")))) (build-system meson-build-system) (native-inputs `(("glib:bin" ,glib "bin") ; for gdbus-codegen, etc. @@ -6229,10 +6383,11 @@ (define-public gnome-bluetooth ("xmllint" ,libxml2))) (propagated-inputs ;; gnome-bluetooth-1.0.pc refers to all these. - `(("gtk+" ,gtk+) - ("udev" ,eudev))) + `(("glib" ,glib) + ("gtk+" ,gtk+))) (inputs - `(("libcanberra" ,libcanberra) + `(("eudev" ,eudev) + ("libcanberra" ,libcanberra) ("libnotify" ,libnotify))) (synopsis "GNOME Bluetooth subsystem") (home-page "https://wiki.gnome.org/Projects/GnomeBluetooth") @@ -6244,7 +6399,7 @@ (define-public gnome-bluetooth (define-public gnome-control-center (package (name "gnome-control-center") - (version "3.30.3") + (version "3.32.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -6252,9 +6407,7 @@ (define-public gnome-control-center name "-" version ".tar.xz")) (sha256 (base32 - "0gih1cmqbv803kp30704sllghb0impa0mmv3j8pndfg4zr2mnq9r")) - (patches - (search-patches "gnome-control-center-udisks.patch")))) + "03np0mhfl9kkdw4cb711pda0cli9zgh2bq2gqn2zwbdi3qnhk9gs")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -6301,7 +6454,11 @@ (define-public gnome-control-center ("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache ("intltool" ,intltool) ("pkg-config" ,pkg-config) - ("xsltproc" ,libxslt))) + ("xsltproc" ,libxslt) + ;; For tests + ("hicolor-icon-theme" ,hicolor-icon-theme) + ("python-dbusmock" ,python-dbusmock) + ("xorg-server" ,xorg-server-for-tests))) (inputs `(("accountsservice" ,accountsservice) ("clutter-gtk" ,clutter-gtk) @@ -6317,6 +6474,7 @@ (define-public gnome-control-center ("gnome-session" ,gnome-session) ("gnome-settings-daemon" ,gnome-settings-daemon) ("grilo" ,grilo) + ("gsound" ,gsound) ("ibus" ,ibus) ("libcanberra" ,libcanberra) ("libgnomekbd" ,libgnomekbd) @@ -6349,7 +6507,7 @@ (define-public gnome-control-center (define-public gnome-shell (package (name "gnome-shell") - (version "3.30.2") + (version "3.32.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -6357,7 +6515,7 @@ (define-public gnome-shell name "-" version ".tar.xz")) (sha256 (base32 - "0kacd4w9lc5finsvs170i7827qkxwd1ddj0g2giizwffpjdjqqr2")) + "0anlkdnqsp5fqvmg95rqjpp1ifcx5xzsvwcrdsvb1cqzbh6inmp5")) (patches (search-patches "gnome-shell-theme.patch")) (modules '((guix build utils))) (snippet @@ -6573,7 +6731,7 @@ (define-public gnome-autoar (define-public tracker (package (name "tracker") - (version "2.0.4") + (version "2.2.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/tracker/" @@ -6581,35 +6739,26 @@ (define-public tracker "tracker-" version ".tar.xz")) (sha256 (base32 - "1mfc5lv820kr7ssi7hldn25gmshh65k19kh478qjsnb64sshsbyf")))) - (build-system glib-or-gtk-build-system) + "1rp2c6k7ajcm553p9kpni87zgi9aplm3s01rl7pk575az5i399y6")))) + (build-system meson-build-system) (arguments - `(#:phases + `(#:glib-or-gtk? #t + #:configure-flags + ;; Otherwise, the RUNPATH will lack the final path component. + (list (string-append "-Dc_link_args=-Wl,-rpath=" + (assoc-ref %outputs "out") "/lib:" + (assoc-ref %outputs "out") "/lib/tracker-2.0")) + #:phases (modify-phases %standard-phases (add-after 'unpack 'disable-broken-tests (lambda _ - ;; FIXME: Most of these fail with GLib-GIO-FATAL-ERROR: Settings - ;; schema 'org.freedesktop.Tracker.FTS' is not installed. - (substitute* "tests/libtracker-miner/Makefile.in" - (("tracker-file-notifier-test\\$\\(EXEEXT\\)") "") - (("tracker-miner-fs-test\\$\\(EXEEXT\\)") "") - (("tracker-monitor-test\\$\\(EXEEXT\\)") "")) - (substitute* "tests/libtracker-fts/Makefile.in" - (("tracker-fts-test\\$\\(EXEEXT\\)") "")) - (substitute* "tests/libtracker-data/Makefile.in" - (("tracker-ontology\\$\\(EXEEXT\\)") "") - (("tracker-ontology-change\\$\\(EXEEXT\\)") "") - (("tracker-backup\\$\\(EXEEXT\\)") "") - (("tracker-sparql-blank\\$\\(EXEEXT\\)") "") - (("tracker-sparql\\$\\(EXEEXT\\)") "")) ;; These fail because the SPARQL backend could not be loaded. ;; That's because /etc/machine-id is missing, but ;; DBUS_FATAL_WARNINGS does not help here. - (substitute* "tests/libtracker-sparql/Makefile.in" - (("tracker-gb-737023-test\\$\\(EXEEXT\\)") "") - (("tracker-sparql-test\\$\\(EXEEXT\\)") "")) - (substitute* "tests/tracker-steroids/Makefile.in" - (("tracker-test\\$\\(EXEEXT\\)") "")) + (substitute* "tests/libtracker-sparql/meson.build" + (("'sparql',") "")) + (substitute* "tests/tracker-steroids/meson.build" + (("test\\(.*") "")) #t)) ;; Two tests fail if LANG is not set. (add-before 'check 'pre-check @@ -6619,39 +6768,101 @@ (define-public tracker (setenv "DBUS_FATAL_WARNINGS" "0") #t))))) (native-inputs - `(("gnome-common" ,gnome-common) + `(("glib:bin" ,glib "bin") + ("gnome-common" ,gnome-common) ("gobject-introspection" ,gobject-introspection) + ("python-pygobject" ,python-pygobject) ("intltool" ,intltool) ("pkg-config" ,pkg-config) ("vala" ,vala))) (inputs `(("gtk+" ,gtk+) ("dbus" ,dbus) - ("gstreamer" ,gstreamer) - ("gst-plugins-base" ,gst-plugins-base) ("sqlite" ,sqlite) ("python" ,python) ("poppler" ,poppler) - ("libgsf" ,libgsf) - ("libexif" ,libexif) ("libpng" ,libpng) ("libtiff" ,libtiff) - ("libvorbis" ,libvorbis) - ("flac" ,flac) - ("totem-pl-parser" ,totem-pl-parser) ("zlib" ,zlib) - ("exempi" ,exempi) ("libxml2" ,libxml2) - ("upower" ,upower) ("libunistring" ,libunistring) - ("giflib" ,giflib) ("json-glib" ,json-glib) ("openjpeg" ,openjpeg-1) - ("libosinfo" ,libosinfo) - ("libcue" ,libcue) ("libseccomp" ,libseccomp) ("libsoup" ,libsoup) - ("libuuid" ,util-linux))) + ("libuuid" ,util-linux) + ("network-manager" ,network-manager))) + (synopsis "Metadata database, indexer and search tool") + (home-page "https://wiki.gnome.org/Projects/Tracker") + (description + "Tracker is an advanced framework for first class objects with associated +metadata and tags. It provides a one stop solution for all metadata, tags, +shared object databases, search tools and indexing.") + ;; src/libtracker-*/* and src/tracker-extract/* are covered by lgpl2.1+, + ;; src/gvdb/* are covered by lgpl2.0+, and the rest is gpl2+. + (license (list license:gpl2+ + license:lgpl2.1+ + license:lgpl2.0+)))) + +(define-public tracker-miners + (package + (name "tracker-miners") + (version "2.2.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/tracker-miners/" + (version-major+minor version) + "/tracker-miners-" version ".tar.xz")) + (sha256 + (base32 + "0kk5xaajamb8jlm6cfdbc2m3axzr6bnph84m7697xmb0pkg8hdiw")))) + (build-system meson-build-system) + (arguments + `(#:glib-or-gtk? #t + #:configure-flags + (list "-Dminer_rss=false" ; libgrss is required. + ;; Ensure the RUNPATH contains all installed library locations. + (string-append "-Dc_link_args=-Wl,-rpath=" + (assoc-ref %outputs "out") + "/lib/tracker-miners-2.0") + ;; TODO: Enable functional tests. Currently, the following error + ;; appears: + ;; Exception: The functional tests require DConf to be the default + ;; GSettings backend. Got GKeyfileSettingsBackend instead. + "-Dfunctional_tests=false"))) + (native-inputs + `(("dbus" ,dbus) + ("intltool" ,intltool) + ("glib:bin" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) + ("pkg-config" ,pkg-config) + ("python-pygobject" ,python-pygobject))) + (inputs + `(("exempi" ,exempi) + ("ffmpeg" ,ffmpeg) + ("flac" ,flac) + ("giflib" ,giflib) + ("glib" ,glib) + ("gstreamer" ,gstreamer) + ("icu4c" ,icu4c) + ("libcue" ,libcue) + ("libexif" ,libexif) + ("libgsf" ,libgsf) + ("libgxps" ,libgxps) + ("libiptcdata" ,libiptcdata) + ("libjpeg" ,libjpeg) + ("libosinfo" ,libosinfo) + ("libpng" ,libpng) + ("libseccomp" ,libseccomp) + ("libtiff" ,libtiff) + ("libvorbis" ,libvorbis) + ("libxml2" ,libxml2) + ("poppler" ,poppler) + ("taglib" ,taglib) + ("totem-pl-parser" ,totem-pl-parser) + ("tracker" ,tracker) + ("upower" ,upower) + ("zlib" ,zlib))) (synopsis "Metadata database, indexer and search tool") (home-page "https://wiki.gnome.org/Projects/Tracker") (description @@ -6667,7 +6878,7 @@ (define-public tracker (define-public nautilus (package (name "nautilus") - (version "3.30.5") + (version "3.32.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -6675,7 +6886,7 @@ (define-public nautilus name "-" version ".tar.xz")) (sha256 (base32 - "144r4py9b8w9ycsg6fggjg05kwvymh003qsb3h6apgpch5y3zgnv")))) + "1x9crzbj6rrrf8w5dkcx0c14j40byr4ijpzkwd5dcrbfvvdy1r01")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -6696,9 +6907,11 @@ (define-public nautilus ("exempi" ,exempi) ("gnome-desktop" ,gnome-desktop) ("gnome-autoar" ,gnome-autoar) + ("gst-plugins-base" ,gst-plugins-base) ("libseccomp" ,libseccomp) ("libselinux" ,libselinux) ("tracker" ,tracker) + ("tracker-miners" ,tracker-miners) ;; XXX: gtk+ is required by libnautilus-extension.pc ;; ;; Don't propagate it to reduces "profile pollution" of the 'gnome' meta @@ -6718,7 +6931,7 @@ (define-public nautilus (define-public baobab (package (name "baobab") - (version "3.30.0") + (version "3.32.0") (source (origin (method url-fetch) (uri (string-append @@ -6727,7 +6940,7 @@ (define-public baobab name "-" version ".tar.xz")) (sha256 (base32 - "0kx721s1hhw1g0nvbqhb93g8iq6f852imyhfhl02zcqy4ipx0kay")))) + "0b33s9bhpiffv5wl76cq2bbnqhvx3qs2vxyxmil5gcs583llqh9r")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t)) @@ -6754,7 +6967,7 @@ (define-public baobab (define-public gnome-backgrounds (package (name "gnome-backgrounds") - (version "3.30.0") + (version "3.32.0") (source (origin (method url-fetch) @@ -6763,11 +6976,11 @@ (define-public gnome-backgrounds name "-" version ".tar.xz")) (sha256 (base32 - "1179jrl16bp9gqabqhw7nnfp8qzf5y1vf9fi45bni6rfmwm3mrpc")))) + "1s5krdmd3md44p1fgr2lqm5ifxb8s1vzx6hm11sb4cgzr4dw6lrz")))) (build-system meson-build-system) (native-inputs `(("intltool" ,intltool))) - (home-page "https://git.gnome.org/browse/gnome-backgrounds") + (home-page "https://gitlab.gnome.org/GNOME/gnome-backgrounds") (synopsis "Background images for the GNOME desktop") (description "GNOME backgrounds package contains a collection of graphics files which @@ -6782,7 +6995,7 @@ (define-public gnome-backgrounds (define-public gnome-screenshot (package (name "gnome-screenshot") - (version "3.30.0") + (version "3.32.0") (source (origin (method url-fetch) @@ -6791,7 +7004,7 @@ (define-public gnome-screenshot name "-" version ".tar.xz")) (sha256 (base32 - "06dx3svxq6sar4913mrz5lzb7hmc66wck138vmyxj8x8iv1iw0w8")))) + "09ha7dizjm5ymqpjyrqd10ijfb3xlqc1mwg9ajkrbfry11q9yq4b")))) (build-system meson-build-system) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. @@ -6816,7 +7029,7 @@ (define-public gnome-screenshot (define-public dconf-editor (package (name "dconf-editor") - (version "3.30.2") + (version "3.32.0") (source (origin (method url-fetch) @@ -6825,7 +7038,7 @@ (define-public dconf-editor name "-" version ".tar.xz")) (sha256 (base32 - "06f736spn20s7qjsz00xw44v8r8bjhyrz1v3bix6v416jc5jp6ia")))) + "1fmsmlh16njjm948grz20mzrsvb4wjj7pl1fvkrkxqi7mhr177gi")))) (build-system meson-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -6917,6 +7130,7 @@ (define-public gnome ("gnome-backgrounds" ,gnome-backgrounds) ("gnome-bluetooth" ,gnome-bluetooth) ("gnome-calculator" ,gnome-calculator) + ("gnome-contacts" ,gnome-contacts) ("gnome-control-center" ,gnome-control-center) ("gnome-disk-utility" ,gnome-disk-utility) ("gnome-default-applications" ,gnome-default-applications) @@ -7064,7 +7278,7 @@ (define-public libzapojit (define-public gnome-clocks (package (name "gnome-clocks") - (version "3.30.1") + (version "3.32.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -7072,7 +7286,7 @@ (define-public gnome-clocks name "-" version ".tar.xz")) (sha256 (base32 - "009fr6zwv37wryi0c0syi4i7pxpdbn3gliws68l99cjsbn2qd6pc")))) + "1w6lgjdak3x76c9gyhd1lqrdmjfh8q77sjnrkcimylsg0jq913bc")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t)) @@ -7102,7 +7316,7 @@ (define-public gnome-clocks (define-public gnome-calendar (package (name "gnome-calendar") - (version "3.30.1") + (version "3.32.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -7110,7 +7324,7 @@ (define-public gnome-calendar name "-" version ".tar.xz")) (sha256 (base32 - "1avi7a29y8d8kzwslp51nwy6s692alms7917454j0xpfc6hnw62s")))) + "07p73cvzj8idr80npja5yiv9pjfyi6qqfhaz5jwcgqspqbnhnl7k")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -7232,7 +7446,7 @@ (define-public gnome-dictionary (define-public gnome-tweaks (package (name "gnome-tweaks") - (version "3.30.2") + (version "3.32.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/gnome-tweaks/" @@ -7242,7 +7456,7 @@ (define-public gnome-tweaks (list (search-patch "gnome-tweaks-search-paths.patch"))) (sha256 (base32 - "0j63siy1i5pl2g6di1r9vjn54m9ahh42wj20j6689pza2lamay1z")))) + "037r35cw34ifcs676fq9n2v4mh1nkqx0qk474bznf18mr6r62h55")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -7291,7 +7505,7 @@ (define-public gnome-tweak-tool (define-public gnome-shell-extensions (package (name "gnome-shell-extensions") - (version "3.30.1") + (version "3.32.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -7299,7 +7513,7 @@ (define-public gnome-shell-extensions name "-" version ".tar.xz")) (sha256 (base32 - "1grxn4f5x754r172wmnf0h0xpy69afmj359zsj1rwgqlzw4i4c5p")))) + "07libf6z24n42hpdsq163w0j8xyrav0lxqrwxrvq5kbz8zxv5ch2")))) (build-system meson-build-system) (arguments '(#:configure-flags '("-Dextension_set=all"))) @@ -7756,7 +7970,7 @@ (define-public bluefish (define-public gnome-system-monitor (package (name "gnome-system-monitor") - (version "3.30.0") + (version "3.32.1") (source (origin (method url-fetch) @@ -7765,7 +7979,7 @@ (define-public gnome-system-monitor name "-" version ".tar.xz")) (sha256 (base32 - "0g0y565bjs6bdszrnxsz1f7hcm1x59i3mfvplysirh7nz3hpz888")))) + "1wd43qdgjav6xamq5z5cy8fri5zr01jga3plc9w95gcia0rk3ha8")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -7798,7 +8012,7 @@ (define-public gnome-system-monitor (define-public python-pyatspi (package (name "python-pyatspi") - (version "2.26.0") + (version "2.34.0") (source (origin (method url-fetch) (uri (string-append @@ -7807,9 +8021,7 @@ (define-public python-pyatspi "/pyatspi-" version ".tar.xz")) (sha256 (base32 - "0xdnix7gxzgf75xy9ris4dd6b05mqwicw190b98xqmypydyf95n6")) - ;; Patch from upstream, fixed in newer versions. - (patches (search-patches "python-pyatspi-python-37.patch")))) + "0j3f75j0zd6ca8msg7yr19qsfirqkn9fk8pqbjnlhqrpri455g4p")))) (build-system gnu-build-system) (arguments `(#:phases @@ -7839,7 +8051,7 @@ (define-public python-pyatspi (define-public orca (package (name "orca") - (version "3.30.2") + (version "3.32.0") (source (origin (method url-fetch) (uri (string-append @@ -7848,7 +8060,7 @@ (define-public orca name "-" version ".tar.xz")) (sha256 (base32 - "17asibc46i5gr2fw04jvvdi85zzmxwlnhyq7r6cr3m5prrdr8a53")))) + "05jqzlg0f1x53hyl0l9282ynmw37159g6dsbrid12b7sjs12cc1i")))) (build-system glib-or-gtk-build-system) (arguments '(#:phases @@ -8098,7 +8310,7 @@ (define-public gnome-video-effects (define-public cheese (package (name "cheese") - (version "3.30.0") + (version "3.32.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -8106,7 +8318,7 @@ (define-public cheese version ".tar.xz")) (sha256 (base32 - "0zz2bgjaf2lsmfs3zn24925vbjb0rycr39i288brlbzixrpcyljr")))) + "1xlmsm4zsx05ahvpd4mgy1hfhxbag0r5i6p63bksjxdligdd36kv")))) (arguments ;; Tests require GDK. `(#:tests? #f @@ -8304,7 +8516,7 @@ (define-public workrave (define-public ghex (package (name "ghex") - (version "3.18.3") + (version "3.18.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/ghex/" @@ -8312,10 +8524,21 @@ (define-public ghex "ghex-" version ".tar.xz")) (sha256 (base32 - "1lq8920ad2chi9ibmyq0x9hg9yk63b0kdbzid03w42cwdzw50x66")))) - (build-system glib-or-gtk-build-system) + "1h1pjrr9wynclfykizqd78dbi785wjz6b63p31k87kjvzy8w3nf2")))) + (build-system meson-build-system) + (arguments + '(#:glib-or-gtk? #t + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "meson_post_install.py" + (("gtk-update-icon-cache") (which "true"))) + #t))))) (native-inputs `(("pkg-config" ,pkg-config) + ("glib:bin" ,glib "bin") ; for glib-compile-schemas ("gnome-common" ,gnome-common) ("which" ,which) ("intltool" ,intltool) @@ -8374,7 +8597,7 @@ (define-public libdazzle (define-public evolution (package (name "evolution") - (version "3.30.5") + (version "3.32.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/evolution/" @@ -8382,7 +8605,7 @@ (define-public evolution "evolution-" version ".tar.xz")) (sha256 (base32 - "1hhxj3rh921pp3l3c5k33bdypcas1p66krzs65k1qn82c5fpgl2h")))) + "00hmmg4hfns8rq9rcilmy0gi1xkksld27lfbd9zmw2xw37wjmbqh")))) (build-system cmake-build-system) (arguments `(#:imported-modules (,@%cmake-build-system-modules diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index ce45ef33f7..abce1aa41a 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -260,14 +260,14 @@ (define-public npth (define-public gnupg (package (name "gnupg") - (version "2.2.18") + (version "2.2.19") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) (sha256 (base32 - "02pcdmb9p4a8hil88gyd86mnc85jldss3cl02jvbkcjmrbi7rlrh")))) + "1h6yx6sdpz3lf9gdppgxqcf73baynr8gflmh43286fkgw3058994")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index 4b18bd43da..674b24e594 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -2218,7 +2218,7 @@ (define-public python-on-guile (define-public guile-file-names (package (name "guile-file-names") - (version "0.2") + (version "0.3") (source (origin (method url-fetch) (uri (string-append "http://brandon.invergo.net/software/download/" @@ -2226,7 +2226,7 @@ (define-public guile-file-names version ".tar.gz")) (sha256 (base32 - "1kwx5hanl40960w2nhyga7ry4l6c3c57zdrihk4yajj87vn3pmi8")))) + "01chizdxkhw6aqv629vxka9f5x3534ij7r0jqndawsg2vxm1r9sz")))) (build-system gnu-build-system) (arguments `(#:phases diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index f0317def1d..889635a345 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -250,6 +250,18 @@ (define-public guile-2.2 (variable "GUILE_LOAD_COMPILED_PATH") (files '("lib/guile/2.2/site-ccache"))))))) +(define-public guile-2.2/bug-fix + ;; This variant contains a bug fix for a relatively rare crash that could + ;; affect shepherd as PID 1: . + (package + (inherit guile-2.2) + (version (string-append (package-version guile-2.2) "-1")) + (source (origin + (inherit (package-source guile-2.2)) + (patches + (append (search-patches "guile-finalization-crash.patch") + (origin-patches (package-source guile-2.2)))))))) + (define-public guile-2.2/fixed ;; A package of Guile 2.2 that's rarely changed. It is the one used ;; in the `base' module, and thus changing it entails a full rebuild. @@ -276,14 +288,14 @@ (define-public guile-next (package (inherit guile-2.2) (name "guile-next") - (version "2.9.5") + (version "2.9.6") (source (origin (inherit (package-source guile-2.2)) (uri (string-append "ftp://alpha.gnu.org/gnu/guile/guile-" version ".tar.xz")) (sha256 (base32 - "1db91mhvphzmiyw6f41ks9haysphygngv400ivgqf23lg22wn5zr")))) + "09rihg5bhzhdk6hfkpav6ajny69dflabgvnm8r7lran723gy5vbf")))) (native-search-paths (list (search-path-specification (variable "GUILE_LOAD_PATH") diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm index 1672170131..5888e8542e 100644 --- a/gnu/packages/haskell-web.scm +++ b/gnu/packages/haskell-web.scm @@ -1527,3 +1527,71 @@ (define-public ghc-js-flot version. The package is designed to meet the redistribution requirements of downstream users (e.g. Debian).") (license license:expat))) + +(define-public ghc-happstack-server + (package + (name "ghc-happstack-server") + (version "7.5.4") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/happstack-server/happstack-server-" + version ".tar.gz")) + (sha256 + (base32 + "0i7csvmwv7n68gkwqzi985p2mjdgzipjnlj873sdiknhx9pfmq70")))) + (build-system haskell-build-system) + (inputs + `(("ghc-network" ,ghc-network) + ("ghc-network-bsd" ,ghc-network-bsd) + ("ghc-network-uri" ,ghc-network-uri) + ("ghc-base64-bytestring" ,ghc-base64-bytestring) + ("ghc-blaze-html" ,ghc-blaze-html) + ("ghc-exceptions" ,ghc-exceptions) + ("ghc-extensible-exceptions" + ,ghc-extensible-exceptions) + ("ghc-hslogger" ,ghc-hslogger) + ("ghc-html" ,ghc-html) + ("ghc-monad-control" ,ghc-monad-control) + ("ghc-old-locale" ,ghc-old-locale) + ("ghc-semigroups" ,ghc-semigroups) + ("ghc-sendfile" ,ghc-sendfile) + ("ghc-system-filepath" ,ghc-system-filepath) + ("ghc-syb" ,ghc-syb) + ("ghc-threads" ,ghc-threads) + ("ghc-transformers-base" ,ghc-transformers-base) + ("ghc-transformers-compat" + ,ghc-transformers-compat) + ("ghc-utf8-string" ,ghc-utf8-string) + ("ghc-zlib" ,ghc-zlib))) + (native-inputs `(("ghc-hunit" ,ghc-hunit))) + (home-page "http://happstack.com") + (synopsis "Web related tools and services for Haskell") + (description + "Happstack Server provides an HTTP server and a rich set of functions for +routing requests, handling query parameters, generating responses, working with +cookies, serving files, and more.") + (license license:bsd-3))) + +(define-public ghc-sendfile + (package + (name "ghc-sendfile") + (version "0.7.11.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/sendfile/sendfile-" + version ".tar.gz")) + (sha256 + (base32 + "0988snmx3bylpw3kcq8hsgji8idc6xcrcfp275qjv3apfdgc9rp0")))) + (build-system haskell-build-system) + (inputs `(("ghc-network" ,ghc-network))) + (home-page + "https://hub.darcs.net/stepcut/sendfile") + (synopsis "Portable sendfile library for Haskell") + (description + "Haskell library which exposes zero-copy sendfile functionality in a portable way.") + (license license:bsd-3))) diff --git a/gnu/packages/i2p.scm b/gnu/packages/i2p.scm index 075f1f403f..f8c3f3bb5c 100644 --- a/gnu/packages/i2p.scm +++ b/gnu/packages/i2p.scm @@ -30,7 +30,7 @@ (define-module (gnu packages i2p) (define-public i2pd (package (name "i2pd") - (version "2.27.0") + (version "2.29.0") (source (origin (method git-fetch) @@ -39,7 +39,7 @@ (define-public i2pd (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "00y0y57z84gakwa88zzm0g3ixgc6y7zm35rjiysiajzvmdq5w1wf")))) + (base32 "1issg3aidwikk4g12sa8q81zzp0hd0g8wdy2dx4899z8yrscl300")))) (build-system cmake-build-system) (inputs `(("boost" ,boost) ("miniupnpc" ,miniupnpc) @@ -68,7 +68,12 @@ (define-public i2pd "./tests") (with-directory-excursion "tests" (substitute* "Makefile" - (("../libi2pd/") (string-append source "/libi2pd/"))) + (("../libi2pd/") (string-append source "/libi2pd/")) + ;; Disable the x25519 test, which only compiles if + ;; openssl doesn't have X25519 support, but the + ;; version we use has it. + (("test-base-64 test-x25519 test-aeadchacha20poly1305") + "test-base-64 test-aeadchacha20poly1305")) (apply invoke "make" "all" `(,@(if parallel-tests? `("-j" ,(number->string diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm index e280b81c61..ee6c8ea485 100644 --- a/gnu/packages/kde-frameworks.scm +++ b/gnu/packages/kde-frameworks.scm @@ -2128,6 +2128,11 @@ (define-public baloo (setenv "HOME" (getcwd)) ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") + (with-output-to-file "bin/BLACKLIST" + (lambda _ + ;; Blacklist some failing tests. FIXME: Make them pass. + (display "[testRenameFile]\n*\n") + (display "[testMoveFile]\n*\n"))) #t)) (add-after 'unpack 'remove-failing-test ;; This test fails on i686 and aarch64 diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm index b4cbd5a721..24d8eedd84 100644 --- a/gnu/packages/kde.scm +++ b/gnu/packages/kde.scm @@ -27,6 +27,7 @@ (define-module (gnu packages kde) #:use-module (guix build-system cmake) #:use-module (guix build-system qt) + #:use-module (guix deprecation) #:use-module (guix download) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) @@ -35,7 +36,9 @@ (define-module (gnu packages kde) #:use-module (gnu packages) #:use-module (gnu packages algebra) #:use-module (gnu packages apr) + #:use-module (gnu packages audio) #:use-module (gnu packages boost) + #:use-module (gnu packages code) #:use-module (gnu packages compression) #:use-module (gnu packages curl) #:use-module (gnu packages documentation) @@ -54,6 +57,7 @@ (define-module (gnu packages kde) #:use-module (gnu packages perl) #:use-module (gnu packages photo) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages tls) #:use-module (gnu packages qt) @@ -143,7 +147,7 @@ (define-public kdenlive (define-public kdevelop (package (name "kdevelop") - (version "5.1.2") + (version "5.4.5") (source (origin (method url-fetch) @@ -152,73 +156,79 @@ (define-public kdevelop version ".tar.xz")) (sha256 (base32 - "1iqaq0ilijjigqb34v5wq9in6bnjs0p9cmgbygjmy53xhh3yhm5g")))) - (build-system cmake-build-system) + "08vhbg9ql0402bw3y3xw1kdxhig9sv3ss8g0h4477vy3z17m1h4j")))) + (build-system qt-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) ("pkg-config" ,pkg-config) + ("shared-mime-info" ,shared-mime-info) ("qttools" ,qttools))) (inputs - `(("kdevplatform" ,kdevplatform) - ("kdevelop-pg-qt" ,kdevelop-pg-qt) - ("qtbase" ,qtbase) - ("qtdeclarative" ,qtdeclarative) - ("qtquickcontrols" ,qtquickcontrols) - ("qtwebkit" ,qtwebkit) + `(("boost" ,boost) + ("clang" ,clang) + ("grantlee" ,grantlee) ("karchive" ,karchive) ("kcmutils" ,kcmutils) - ("kconfig" ,kconfig) + ("kcrash" ,kcrash) ("kdeclarative" ,kdeclarative) ("kdoctools" ,kdoctools) ("kguiaddons" ,kguiaddons) ("ki18n" ,ki18n) - ("kio" ,kio) ("kiconthemes" ,kiconthemes) + ("kio" ,kio) ;; not checked as requirement ("kitemmodels" ,kitemmodels) ("kitemviews" ,kitemviews) ("kjobwidgets" ,kjobwidgets) - ("knotifyconfig" ,knotifyconfig) ("knotifications" ,knotifications) + ("knotifyconfig" ,knotifyconfig) ("kparts" ,kparts) - ("kcrash" ,kcrash) - ("knewstuff" ,knewstuff) - ("krunner" ,krunner) - ("kxmlgui" ,kxmlgui) - ("libksysguard" ,libksysguard) - ("threadweaver" ,threadweaver) + ("kservice" ,kservice) ("ktexteditor" ,ktexteditor) ("kwindowsystem" ,kwindowsystem) + ("kxmlgui" ,kxmlgui) + ("libkomparediff2" ,libkomparediff2) + ("oxygen-icons" ,oxygen-icons) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtquickcontrols" ,qtquickcontrols) ;; not checked as requirement + ("qtquickcontrols2" ,qtquickcontrols2) ;; not checked as requirement + ("qtwebkit" ,qtwebkit) + ("threadweaver" ,threadweaver) + + ;; recommendes + ("astyle" ,astyle) + ("kdevelop-pg-qt" ,kdevelop-pg-qt) + ("libksysguard" ,libksysguard) + + ;; optional + ("apr" ,apr) ; required for subversion support + ("apr-util" ,apr-util) ; required for subversion support + ("attica" ,attica) + ("kconfigwidgets" ,kconfigwidgets) + ("knewstuff" ,knewstuff) + ("krunner" ,krunner) + ;; TODO: OktetaGui, OktetaKastenControllers ("plasma" ,plasma-framework) - ("grantlee" ,grantlee) - ("libepoxy" ,libepoxy) - ("clang" ,clang) - ("shared-mime-info" ,shared-mime-info))) + ;; TODO: purpose + ("sonnet" ,sonnet) + ("subversion" ,subversion))) + + ;; run-time packages - TODO + ;; ClazyStandalone + ;; Cppcheck + ;; heaptrack + ;; heaptrack_gui + ;; meson (arguments - `(#:phases - (modify-phases %standard-phases - (delete 'check) ;; there are some issues with the test suite - (add-after 'install 'wrap-executable - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (kdevplatform (assoc-ref inputs "kdevplatform")) - (kio (assoc-ref inputs "kio")) - (kcmutils (assoc-ref inputs "kcmutils")) - (qtquickcontrols (assoc-ref inputs "qtquickcontrols")) - (qtbase (assoc-ref inputs "qtbase")) - (qtdeclarative (assoc-ref inputs "qtdeclarative")) - (qml "/qml")) - (wrap-program (string-append out "/bin/kdevelop") - `("XDG_DATA_DIRS" ":" prefix - ,(map (lambda (s) (string-append s "/share")) - (list out kdevplatform kcmutils))) - `("QT_QPA_PLATFORM_PLUGIN_PATH" ":" = - (,(string-append qtbase "/plugins/platforms"))) - `("QT_PLUGIN_PATH" ":" prefix - ,(map (lambda (s) (string-append s "/lib/plugins")) - (list out kdevplatform kio))) - `("QML2_IMPORT_PATH" ":" prefix - (,(string-append qtquickcontrols qml) - ,(string-append qtdeclarative qml)))))))))) + `(#:tests? #f ;; there are some issues with the test suite + #:phases + (modify-phases (@ (guix build qt-build-system) %standard-phases) + (add-before 'configure 'add-include-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "cmake/modules/FindClang.cmake" + (("^\\s*PATHS \"\\$\\{CLANG_LIBRARY_DIRS\\}\"" line) + (string-append line " " (assoc-ref inputs "clang") "/lib"))) + #t))))) (home-page "https://kdevelop.org") (synopsis "IDE for C, C++, Python, Javascript and PHP") (description "The KDevelop IDE provides semantic syntax highlighting, as @@ -231,7 +241,7 @@ (define-public kdevelop (define-public kdevelop-pg-qt (package (name "kdevelop-pg-qt") - (version "2.0.0") + (version "2.2.0") (source (origin (method url-fetch) @@ -239,7 +249,7 @@ (define-public kdevelop-pg-qt version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1av8plqz7hyhrd07avnmn6ryslqlarmxn0pw7swzvb6ddiqp59j4")))) + (base32 "15ja19gg6x7gww4ch12hy585x55ghbkpsiyr8fqiyjk0j6v07hh5")))) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) (inputs @@ -251,77 +261,8 @@ (define-public kdevelop-pg-qt for some KDevelop language plugins (Ruby, PHP, CSS...).") (license license:lgpl2.0+))) -(define-public kdevplatform - (package - (name "kdevplatform") - (version "5.1.2") - (source (origin - (method url-fetch) - (uri (string-append "mirror://kde/stable/kdevelop" - "/" version "/src/kdevplatform-" - version ".tar.xz")) - (sha256 - (base32 - "0jk6g1kiqpyjy8pca0236b9944gxqnymqv8ny6m8nrraannxs8p6")))) - (build-system cmake-build-system) - (native-inputs - `(("extra-cmake-modules" ,extra-cmake-modules) - ("pkg-config" ,pkg-config))) - (inputs - `(("apr" ,apr) - ("apr-util" ,apr-util) - ("boost" ,boost) - ("karchive" ,karchive) - ("kconfigwidgets" ,kconfigwidgets) - ("kcmutils" ,kcmutils) - ("kiconthemes" ,kiconthemes) - ("kdeclarative" ,kdeclarative) - ("kdoctools" ,kdoctools) - ("kguiaddons" ,kguiaddons) - ("kinit" ,kinit) - ("kitemmodels" ,kitemmodels) - ("knewstuff" ,knewstuff) - ("knotifications" ,knotifications) - ("knotifyconfig" ,knotifyconfig) - ("kwindowsystem" ,kwindowsystem) - ("kio" ,kio) - ("ki18n" ,ki18n) - ("kparts" ,kparts) - ("kservice" ,kservice) - ("grantlee" ,grantlee) - ("libkomparediff2" ,libkomparediff2) - ("sonnet" ,sonnet) - ("threadweaver" ,threadweaver) - ("ktexteditor" ,ktexteditor) - ("qtbase" ,qtbase) - ("qtdeclarative" ,qtdeclarative) - ("qtscript" ,qtscript) - ("qtwebkit" ,qtwebkit) - ("qtx11extras" ,qtx11extras) - ("plasma" ,plasma-framework) - ("subversion" ,subversion) - ("zlib" ,zlib))) - (arguments - `(#:phases - (modify-phases %standard-phases - (delete 'check) - (add-after 'install 'check - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") - (setenv "QT_PLUGIN_PATH" - (string-append out "/lib/plugins:" - (getenv "QT_PLUGIN_PATH"))) - (setenv "XDG_DATA_DIRS" - (string-append out "/share:" - (getenv "XDG_DATA_DIRS"))) - (invoke "ctest" "-R" ; almost all tests require a display - "filteringstrategy|kdevvarlengtharray|kdevhash"))))))) - (home-page "https://github.com/KDE/kdevplatform") - (synopsis "Framework to build integrated development environments (IDEs)") - (description "KDevPlatform is the basis of KDevelop and contains some -plugins, as well as code to create plugins, or complete applications.") - (license license:gpl3+))) +;; kdevplatform was merged into kdevelop as of 5.2.x +(define-deprecated kdevplatform kdevelop kdevelop) (define-public krita (package @@ -656,3 +597,57 @@ (define-public kcachegrind performance counters. There also exist converters for profiling output of Python, PHP, and Perl.") (license license:gpl2))) + +(define-public libkdegames + (package + (name "libkdegames") + (version "19.08.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kde/stable/applications/" version + "/src/libkdegames-" version ".tar.xz")) + (sha256 + (base32 "12dvkmjgbi8dp9y55zmx1pw3zr2i374c4vn3mfn9r31bf06dr701")))) + (build-system cmake-build-system) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules))) + (inputs + `(("karchive" ,karchive) + ("kbookmarks" ,kbookmarks) + ("kcodecs" ,kcodecs) + ("kcompletion" ,kcompletion) + ("kconfigwidgets" ,kconfigwidgets) + ("kcrash" ,kcrash) + ("kdbusaddons" ,kdbusaddons) + ("kdeclarative" ,kdeclarative) + ("kdnssd" ,kdnssd) + ("kglobalaccel" ,kglobalaccel) + ("kguiaddons" ,kguiaddons) + ("ki18n" ,ki18n) + ("kiconthemes" ,kiconthemes) + ;("kio" ,kio) + ("kitemviews" ,kitemviews) + ("kjobwidgets" ,kjobwidgets) + ("knewstuff" ,knewstuff) + ("kservice" ,kservice) + ("ktextwidgets" ,ktextwidgets) + ("kwidgetsaddons" ,kwidgetsaddons) + ("kxmlgui" ,kxmlgui) + ("libsndfile" ,libsndfile) + ("openal" ,openal) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'check-setup + (lambda _ + ;; make Qt render "offscreen", required for tests + (setenv "QT_QPA_PLATFORM" "offscreen") + #t))))) + (home-page "https://games.kde.org/") + (synopsis "Runtime library for kdegames") + (description "Runtime library for kdegames") + (license (list license:gpl2+ license:fdl1.2+)))) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index eb9aa4513c..fb9be39a31 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -37,6 +37,7 @@ ;;; Copyright © 2019 Stefan Stefanović ;;; Copyright © 2019 Pierre Langlois ;;; Copyright © 2019 Brice Waegeneire +;;; Copyright © 2019 Kei Kebreau ;;; ;;; This file is part of GNU Guix. ;;; @@ -83,6 +84,7 @@ (define-module (gnu packages linux) #:use-module (gnu packages glib) #:use-module (gnu packages golang) #:use-module (gnu packages gperf) + #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages libunwind) #:use-module (gnu packages libusb) @@ -104,6 +106,7 @@ (define-module (gnu packages linux) #:use-module (gnu packages readline) #:use-module (gnu packages rrdtool) #:use-module (gnu packages samba) + #:use-module (gnu packages sdl) #:use-module (gnu packages serialization) #:use-module (gnu packages slang) #:use-module (gnu packages texinfo) @@ -122,6 +125,7 @@ (define-module (gnu packages linux) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system go) + #:use-module (guix build-system meson) #:use-module (guix build-system python) #:use-module (guix build-system trivial) #:use-module (guix build-system linux-module) @@ -352,42 +356,42 @@ (define (%upstream-linux-source version hash) "linux-" version ".tar.xz")) (sha256 hash))) -(define-public linux-libre-5.3-version "5.3.14") +(define-public linux-libre-5.3-version "5.3.15") (define-public linux-libre-5.3-pristine-source (let ((version linux-libre-5.3-version) - (hash (base32 "0ckrbzwsc4lxd3l287wsd88mkfsd0kpf8nzchd9nfmkjiil14mwm"))) + (hash (base32 "15qidl06lyfylx1b43b4wz2zfkr4000bkr7ialslmb7yi7mamj6f"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.3))) -(define-public linux-libre-4.19-version "4.19.87") +(define-public linux-libre-4.19-version "4.19.88") (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "07fsds2k0hxqgny86winzl46d79g6mb9s28bp7nwlvwf67l22wm5"))) + (hash (base32 "1gizkdmq46ykw7ya3hibd6lalww2kvsia346pq3xvrk6s5mkp4n1"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) -(define-public linux-libre-4.14-version "4.14.157") +(define-public linux-libre-4.14-version "4.14.158") (define-public linux-libre-4.14-pristine-source (let ((version linux-libre-4.14-version) - (hash (base32 "0cvpagbjwpj63lpybfq1rnwdnxcjw49z0b5prah39krf0nd7dylh"))) + (hash (base32 "1cqvr8pgqx005a9qyphqykakzwc54adq8mmdc9sgrxkkw9rfqj8d"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.14))) -(define-public linux-libre-4.9-version "4.9.205") +(define-public linux-libre-4.9-version "4.9.206") (define-public linux-libre-4.9-pristine-source (let ((version linux-libre-4.9-version) - (hash (base32 "01cbqxw77g6rdg7dgk73pg9a2n9v4sxp48q2a77w1b068xjfifcq"))) + (hash (base32 "1mnabj0d5ra40hijwynnzxnh5w1qnvkvj2l3ydsdhkdwm6cpiwhx"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.9))) -(define-public linux-libre-4.4-version "4.4.205") +(define-public linux-libre-4.4-version "4.4.206") (define-public linux-libre-4.4-pristine-source (let ((version linux-libre-4.4-version) - (hash (base32 "19pasidvfmf94rs86v80x7hpirz9gavmkxwcl76ya61fq7lqy7zs"))) + (hash (base32 "14ylg9cm7z12mvkzg8z92gsw0libw9xz392ayzw0d9cgw1py39ax"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.4))) @@ -1480,7 +1484,7 @@ (define-public zerofree (define-public strace (package (name "strace") - (version "5.3") + (version "5.4") (home-page "https://strace.io") (source (origin (method url-fetch) @@ -1488,7 +1492,7 @@ (define-public strace "/strace-" version ".tar.xz")) (sha256 (base32 - "0ix06z4vnc49mv76f22kixz8dsh7daqv9mpgwcgl0mlnfjc124vc")))) + "0hd7sb7l99y9rcj8jjc1b6m3ryds17krsymdg3dvd40jsla0bl7p")))) (build-system gnu-build-system) (arguments '(#:phases @@ -3078,9 +3082,9 @@ (define-public lm-sensors (("cat ") (string-append (assoc-ref inputs "coreutils") "/bin/cat ")) - (("egrep ") + (("grep ") (string-append (assoc-ref inputs "grep") - "/bin/egrep ")) + "/bin/grep ")) (("sed -e") (string-append (assoc-ref inputs "sed") "/bin/sed -e")) @@ -6139,6 +6143,47 @@ (define-public inputattach types and interfaces and translates so that the X server can use them.") (license license:gpl2+))) +(define-public pipewire + (package + (name "pipewire") + (version "0.2.7") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/PipeWire/pipewire") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1q5wrqnhhs6r49p8yvkw1pl0cnsd4rndxy4h5lvdydwgf1civcwc")))) + (build-system meson-build-system) + (arguments + '(#:configure-flags '("-Dsystemd=false"))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("dbus" ,dbus) + ("eudev" ,eudev) + ("ffmpeg" ,ffmpeg) + ("gstreamer" ,gstreamer) + ("gst-plugins-base" ,gst-plugins-base) + ("libva" ,libva) + ("sbc" ,sbc) + ("sdl2" ,sdl2))) + (home-page "https://pipewire.org/") + (synopsis "Server and user space API to deal with multimedia pipelines") + (description + "PipeWire is a project that aims to greatly improve handling of audio and +video under Linux. It aims to support the usecases currently handled by both +PulseAudio and Jack and at the same time provide same level of powerful handling +of Video input and output. It also introduces a security model that makes +interacting with audio and video devices from containerized applications easy, +with supporting Flatpak applications being the primary goal. Alongside Wayland +and Flatpak we expect PipeWire to provide a core building block for the future +of Linux application development.") + (license license:lgpl2.0+))) + (define-public ell (package (name "ell") diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index dc44a9d133..d51b9a3662 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -10,7 +10,7 @@ ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2018 Benjamin Slade ;;; Copyright © 2018 Alex Vong -;;; Copyright © 2018 Pierre Neidhardt +;;; Copyright © 2018, 2019 Pierre Neidhardt ;;; Copyright © 2018, 2019 Pierre Langlois ;;; Copyright © 2019 Katherine Cox-Buday ;;; Copyright © 2019 Jesse Gildersleve @@ -354,10 +354,10 @@ (define-public sbcl ;; ;; CCL is not bootstrappable so it won't do. CLISP 2.49 seems to work. ;; ECL too. ECL builds SBCL about 20% slower than CLISP. As of - ;; 2019-09-05, ECL was last updated in 2016 while CLISP was last update + ;; 2019-09-05, ECL was last updated in 2016 while CLISP was last updated ;; in 2010. ;; - ;; For now we stick to CLISP for all systems. We keep the `match' in to + ;; For now we stick to CLISP for all systems. We keep the `match' here to ;; make it easier to change the host compiler for various architectures. `(,@(match (%current-system) ((or "x86_64-linux" "i686-linux") @@ -422,7 +422,8 @@ (define (quoted-path input path) (("\\(deftest pwent\\.[12]" all) (string-append "#+nil ;disabled by Guix\n" all)) (("\\(deftest grent\\.[12]" all) - (string-append "#+nil ;disabled by Guix\n" all)))))) + (string-append "#+nil ;disabled by Guix\n" all)))) + #t)) ;; FIXME: the texlive-union insists on regenerating fonts. It stores ;; them in HOME, so it needs to be writeable. (add-before 'build 'set-HOME @@ -444,6 +445,7 @@ (define (quoted-path input path) (invoke "sh" "install.sh"))) (add-after 'build 'build-doc (lambda _ + ;; TODO: Doc is not deterministic, maybe there is a timespamp? (with-directory-excursion "doc/manual" (and (invoke "make" "info") (invoke "make" "dist"))))) diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm index 6b9ab051b4..5a3708e30a 100644 --- a/gnu/packages/lxqt.scm +++ b/gnu/packages/lxqt.scm @@ -1143,14 +1143,14 @@ (define-public pavucontrol-qt (define-public qps (package (name "qps") - (version "1.10.20") + (version "2.0.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/lxqt/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 - (base32 "0dz7ricxg2rrmdyca6mc2d4lyy5bpksjk751hvn95wssr76y2w0m")))) + (base32 "0ysnh918n9wz2vgjvyix32kx2j0v4lskjacgcychrpb8sch2dbsi")))) (build-system cmake-build-system) (inputs `(("libxrender" ,libxrender) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index f350726e41..8e2149d7d5 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -482,6 +482,45 @@ (define-public cddlib computing convex hulls.") (license license:gpl2+))) +(define-public lrslib + (package + (name "lrslib") + (version "7.0a") + (source + (origin + (method url-fetch) + (uri (string-append "http://cgm.cs.mcgill.ca/~avis/C/lrslib/archive/" + "lrslib-0" + (string-delete #\. version) ".tar.gz")) + (sha256 + (base32 + "034fa45r9hwx6ljmgpxk2872q34nklkalpdkc6s9hqw57rivi36k")))) + (build-system gnu-build-system) + (inputs + `(("gmp" ,gmp))) + (arguments + `(#:tests? #f ; no check phase + #:make-flags `("CC=gcc" + ,(string-append "prefix=" (assoc-ref %outputs "out")) + "all-shared") + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda _ + (substitute* "makefile" + (("-L \\.") "-L . -Wl,-rpath='$$ORIGIN/../lib'")) + #t))))) + (home-page "http://cgm.cs.mcgill.ca/~avis/C/lrs.html") + (synopsis "Convex hulls of polyhedra with exact arithmetic") + (description + "The C code of lrslib implements the reverse search algorithm for +vertex enumeration and convex hull problems. Its input file format is +compatible with cddlib. All computations are done exactly in either +multiple precision or fixed integer arithmetic. Output is not stored +in memory, so even problems with very large output sizes can sometimes +be solved.") + (license license:gpl2+))) + (define-public arpack-ng (package (name "arpack-ng") diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm index 59710c45ae..5d85c5ff51 100644 --- a/gnu/packages/mes.scm +++ b/gnu/packages/mes.scm @@ -21,6 +21,9 @@ (define-module (gnu packages mes) #:use-module (gnu packages) #:use-module (gnu packages base) + #:use-module (gnu packages bash) + #:use-module (gnu packages bootstrap) + #:use-module (gnu packages compression) #:use-module (gnu packages cross-base) #:use-module (gnu packages gcc) #:use-module (gnu packages graphviz) @@ -134,7 +137,7 @@ (define-public mes-0.19 GNU/Linux distributions. It consists of a mutual self-hosting Scheme interpreter in C and a Nyacc-based C compiler in Scheme and is compatible with Guile.") - (home-page "https://gnu.org/software/mes") + (home-page "https://www.gnu.org/software/mes/") (license gpl3+))) (define-public mes @@ -145,12 +148,86 @@ (define-public mes (method url-fetch) (uri (string-append "mirror://gnu/mes/" "mes-" version ".tar.gz")) + (patches (search-patches "mes-remove-store-name.patch")) (sha256 (base32 "104qxngxyl7pql8vqrnli3wfyx0ayfaqg8gjfhmk4qzrafs46slm")))) (propagated-inputs `(("mescc-tools" ,mescc-tools) - ("nyacc" ,nyacc))))) + ("nyacc" ,nyacc))) + (native-search-paths + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("lib"))))))) + +(define-public mes-rb5 + ;; This is the Reproducible-Builds summit 5's Mes, also built on Debian + ;; GNU/Linux and NixOS to produce the same, bit-for-bit identical result. + (package + (inherit mes) + (name "mes-rb5") + (inputs '()) + (propagated-inputs '()) + (native-inputs + `(("bash" ,bash) + ("coreutils" ,coreutils) + ("grep" ,grep) + ("guile" ,guile-2.2) + ("libc" ,glibc) + ("locales" ,glibc-utf8-locales) + ("make" ,gnu-make) + ("mes" ,mes) + ("mescc-tools" ,mescc-tools) + ("nyacc" ,nyacc) + ("sed" ,sed) + ("tar" ,tar) + ("xz" ,xz))) + (supported-systems '("i686-linux")) + (arguments + `(#:implicit-inputs? #f + #:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries + #:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 popen) + (ice-9 rdelim)) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'setenv + (lambda _ + (setenv "AR" "mesar") + (setenv "CC" "mescc") + (setenv "GUILD" "true") + (setenv "SCHEME" "mes") + (setenv "LC_ALL" "en_US.UTF-8") + #t)) + (replace 'configure + (lambda _ + (let ((out (assoc-ref %outputs "out"))) + (invoke "sh" "configure.sh" + (string-append "--prefix=" out) + "--host=i686-unkown-linux-gnu" + "--with-courage")))) + (replace 'build + (lambda _ + (invoke "sh" "bootstrap.sh"))) + (replace 'check + (lambda _ + (let ((sha256sum + (read-delimited + " " + (open-pipe* OPEN_READ "sha256sum" "src/mes")))) + (unless + (equal? + sha256sum + "9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb") + (throw 'error "mes checksum failure")) + #t))) + (replace 'install + (lambda _ + (invoke "sh" "install.sh")))))))) (define-public mescc-tools-0.5.2 ;; Mescc-tools used for bootstrap. diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 6f2ebe5104..6990d85a21 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -607,7 +607,10 @@ (define-public gajim (let ((file (string-append out "/bin/" name)) (gi-typelib-path (getenv "GI_TYPELIB_PATH"))) (wrap-program file - `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))) + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)) + ;; For translations + `("XDG_DATA_DIRS" ":" prefix + (,(string-append (assoc-ref outputs "out") "/share")))))) '("gajim" "gajim-remote" "gajim-history-manager"))) #t)) (add-after 'install 'install-icons diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 92406be10a..b526e26811 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -3838,7 +3838,7 @@ (define-public lmms (define-public musescore (package (name "musescore") - (version "3.3.3") + (version "3.3.4") (source (origin (method git-fetch) (uri (git-reference @@ -3847,7 +3847,7 @@ (define-public musescore (file-name (git-file-name name version)) (sha256 (base32 - "11pcw2ihi7ddd4rr83y72i61yyc1qfj6v14a82zwlak2qnllpbmr")) + "1jwj89v69nhyawj8x7niwznm1vgvp51dhzw6ggnarc3wdvp6qq8y")) (modules '((guix build utils))) (snippet ;; Un-bundle OpenSSL and remove unused libraries. diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 05f348ad0f..cfa244c39b 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -35,6 +35,7 @@ ;;; Copyright © 2019 Alex Griffin ;;; Copyright © 2019 Jan Wielkiewicz ;;; Copyright © 2019 Daniel Schaefer +;;; Copyright © 2019 Diego N. Barbato ;;; ;;; This file is part of GNU Guix. ;;; @@ -601,14 +602,14 @@ (define-public whois (define-public wireshark (package (name "wireshark") - (version "3.0.6") + (version "3.0.7") (source (origin (method url-fetch) (uri (string-append "https://www.wireshark.org/download/src/wireshark-" version ".tar.xz")) (sha256 - (base32 "0gp3qg0280ysrsaa97yfazka8xcyrspsrw8bfgqxnpf1l0i40zx8")))) + (base32 "1wljg5z994r8zbjig52zlgp0b8lqbzdl1d6ysnw9hcvm2y82farv")))) (build-system cmake-build-system) (arguments `(#:phases @@ -2522,12 +2523,6 @@ (define-public restbed (home-page "https://github.com/Corvusoft/restbed") (license license:agpl3+)))) -(define fmt-restinio - (package - (inherit fmt) - (arguments - '(#:configure-flags '("-DCMAKE_CXX_FLAGS=-fPIC"))))) - (define-public restinio (package (name "restinio") @@ -2552,7 +2547,7 @@ (define-public restinio ("sobjectizer" ,sobjectizer))) (propagated-inputs `(("asio", asio) - ("fmt" ,fmt-restinio) + ("fmt" ,fmt) ("http-parser", http-parser))) (arguments `(#:configure-flags '("-DRESTINIO_INSTALL=on") @@ -2591,7 +2586,7 @@ (define-public opendht ("readline" ,readline) ("jsoncpp" ,jsoncpp) ("openssl" ,openssl) - ("fmt" ,fmt-restinio))) + ("fmt" ,fmt))) (propagated-inputs `(("argon2" ,argon2) ; TODO: Needed for the pkg-config .pc file to work? ("msgpack" ,msgpack))) ;included in several installed headers @@ -2822,3 +2817,33 @@ (define-public ipcalc easy-to-understand binary values.") (home-page "http://jodies.de/ipcalc") (license license:gpl2+))) + +(define-public vde2 + (package + (name "vde2") + (version "2.3.2") + (source + (origin + (method url-fetch) + (uri "mirror://sourceforge/vde/vde2/2.3.2/vde2-2.3.2.tar.gz") + (sha256 + (base32 "14xga0ib6p1wrv3hkl4sa89yzjxv7f1vfqaxsch87j6scdm59pr2")))) + (build-system gnu-build-system) + (arguments + `(#:parallel-build? #f)) ; Build fails if #t. + (inputs + `(("python" ,python) + ("libpcap" ,libpcap) + ("openssl" ,openssl-1.0))) ; Build fails with 1.1. + (home-page "https://github.com/virtualsquare/vde-2") + (synopsis "Virtual Distributed Ethernet") + (description "VDE is a set of programs to provide virtual software-defined +Ethernet network interface controllers across multiple virtual or +physical, local or remote devices. The VDE architecture provides +virtual counterparts to hardware components such as switches and +cables.") + (license (list license:gpl2 + license:lgpl2.1 ; libvdeplug + (license:non-copyleft ; slirpvde + "file://COPYING.slirpvde" + "See COPYING.slirpvde in the distribution."))))) diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm index 65f95aaa8a..4f421f6e9d 100644 --- a/gnu/packages/nss.scm +++ b/gnu/packages/nss.scm @@ -71,6 +71,7 @@ (define-public nss (package (name "nss") (version "3.46.1") + (replacement nss/fixed) (source (origin (method url-fetch) (uri (let ((version-with-underscores @@ -183,3 +184,11 @@ (define-public nss PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security standards.") (license license:mpl2.0))) + +(define nss/fixed + (package + (inherit nss) + (source (origin + (inherit (package-source nss)) + (patches (append (search-patches "nss-CVE-2019-11745.patch") + (origin-patches (package-source nss)))))))) diff --git a/gnu/packages/patches/glusterfs-use-PATH-instead-of-hardcodes.patch b/gnu/packages/patches/glusterfs-use-PATH-instead-of-hardcodes.patch deleted file mode 100644 index d05b4351b3..0000000000 --- a/gnu/packages/patches/glusterfs-use-PATH-instead-of-hardcodes.patch +++ /dev/null @@ -1,140 +0,0 @@ -This patch was taken from Nixpkgs. - -From 616381bc25b0e90198683fb049f994e82d467d96 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Niklas=20Hamb=C3=BCchen?= -Date: Sat, 13 May 2017 02:45:49 +0200 -Subject: [PATCH] Don't use hardcoded /sbin, /usr/bin etc. paths. Fixes - #1450546. - -Instead, rely on programs to be in PATH, as gluster already -does in many places across its code base. - -Change-Id: Id21152fe42f5b67205d8f1571b0656c4d5f74246 ---- - contrib/fuse-lib/mount-common.c | 8 ++++---- - xlators/mgmt/glusterd/src/glusterd-ganesha.c | 6 +++--- - xlators/mgmt/glusterd/src/glusterd-quota.c | 6 +++--- - xlators/mgmt/glusterd/src/glusterd-snapshot.c | 4 ++-- - xlators/mgmt/glusterd/src/glusterd-utils.c | 14 +------------- - 5 files changed, 13 insertions(+), 25 deletions(-) - -diff --git a/contrib/fuse-lib/mount-common.c b/contrib/fuse-lib/mount-common.c -index e9f80fe81..6380dd867 100644 ---- a/contrib/fuse-lib/mount-common.c -+++ b/contrib/fuse-lib/mount-common.c -@@ -255,16 +255,16 @@ fuse_mnt_umount (const char *progname, const char *abs_mnt, - exit (1); - } - #ifdef GF_LINUX_HOST_OS -- execl ("/bin/umount", "/bin/umount", "-i", rel_mnt, -+ execl ("umount", "umount", "-i", rel_mnt, - lazy ? "-l" : NULL, NULL); -- GFFUSE_LOGERR ("%s: failed to execute /bin/umount: %s", -+ GFFUSE_LOGERR ("%s: failed to execute umount: %s", - progname, strerror (errno)); - #elif __NetBSD__ - /* exitting the filesystem causes the umount */ - exit (0); - #else -- execl ("/sbin/umount", "/sbin/umount", "-f", rel_mnt, NULL); -- GFFUSE_LOGERR ("%s: failed to execute /sbin/umount: %s", -+ execl ("umount", "umount", "-f", rel_mnt, NULL); -+ GFFUSE_LOGERR ("%s: failed to execute umount: %s", - progname, strerror (errno)); - #endif /* GF_LINUX_HOST_OS */ - exit (1); -diff --git a/xlators/mgmt/glusterd/src/glusterd-quota.c b/xlators/mgmt/glusterd/src/glusterd-quota.c -index 0e6629cf0..fcb4738b7 100644 ---- a/xlators/mgmt/glusterd/src/glusterd-quota.c -+++ b/xlators/mgmt/glusterd/src/glusterd-quota.c -@@ -30,7 +30,7 @@ - - #ifndef _PATH_SETFATTR - # ifdef GF_LINUX_HOST_OS --# define _PATH_SETFATTR "/usr/bin/setfattr" -+# define _PATH_SETFATTR "setfattr" - # endif - # ifdef __NetBSD__ - # define _PATH_SETFATTR "/usr/pkg/bin/setfattr" -@@ -335,7 +335,7 @@ _glusterd_quota_initiate_fs_crawl (glusterd_conf_t *priv, - - if (type == GF_QUOTA_OPTION_TYPE_ENABLE || - type == GF_QUOTA_OPTION_TYPE_ENABLE_OBJECTS) -- runner_add_args (&runner, "/usr/bin/find", ".", NULL); -+ runner_add_args (&runner, "find", ".", NULL); - - else if (type == GF_QUOTA_OPTION_TYPE_DISABLE) { - -@@ -351,7 +351,7 @@ _glusterd_quota_initiate_fs_crawl (glusterd_conf_t *priv, - VIRTUAL_QUOTA_XATTR_CLEANUP_KEY, "1", - "{}", "\\", ";", NULL); - #else -- runner_add_args (&runner, "/usr/bin/find", ".", -+ runner_add_args (&runner, "find", ".", - "-exec", _PATH_SETFATTR, "-n", - VIRTUAL_QUOTA_XATTR_CLEANUP_KEY, "-v", - "1", "{}", "\\", ";", NULL); -diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot.c b/xlators/mgmt/glusterd/src/glusterd-snapshot.c -index da0152366..f0d135350 100644 ---- a/xlators/mgmt/glusterd/src/glusterd-snapshot.c -+++ b/xlators/mgmt/glusterd/src/glusterd-snapshot.c -@@ -121,7 +121,7 @@ glusterd_build_snap_device_path (char *device, char *snapname, - } - - runinit (&runner); -- runner_add_args (&runner, "/sbin/lvs", "--noheadings", "-o", "vg_name", -+ runner_add_args (&runner, "lvs", "--noheadings", "-o", "vg_name", - device, NULL); - runner_redir (&runner, STDOUT_FILENO, RUN_PIPE); - snprintf (msg, sizeof (msg), "Get volume group for device %s", device); -@@ -1982,7 +1982,7 @@ glusterd_is_thinp_brick (char *device, uint32_t *op_errno) - - runinit (&runner); - -- runner_add_args (&runner, "/sbin/lvs", "--noheadings", "-o", "pool_lv", -+ runner_add_args (&runner, "lvs", "--noheadings", "-o", "pool_lv", - device, NULL); - runner_redir (&runner, STDOUT_FILENO, RUN_PIPE); - runner_log (&runner, this->name, GF_LOG_DEBUG, msg); -diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c -index 51db13df0..6fa7b92f9 100644 ---- a/xlators/mgmt/glusterd/src/glusterd-utils.c -+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c -@@ -6027,7 +6027,6 @@ static struct fs_info { - char *fs_tool_pattern; - char *fs_tool_pkg; - } glusterd_fs[] = { -- /* some linux have these in /usr/sbin/and others in /sbin/? */ - { "xfs", "xfs_info", NULL, "isize=", "xfsprogs" }, - { "ext3", "tune2fs", "-l", "Inode size:", "e2fsprogs" }, - { "ext4", "tune2fs", "-l", "Inode size:", "e2fsprogs" }, -@@ -6048,7 +6047,6 @@ glusterd_add_inode_size_to_dict (dict_t *dict, int count) - char *trail = NULL; - runner_t runner = {0, }; - struct fs_info *fs = NULL; -- char fs_tool_name[256] = {0, }; - static dict_t *cached_fs = NULL; - - memset (key, 0, sizeof (key)); -@@ -6085,17 +6083,7 @@ glusterd_add_inode_size_to_dict (dict_t *dict, int count) - cur_word = "N/A"; - goto cached; - } -- -- snprintf (fs_tool_name, sizeof (fs_tool_name), -- "/usr/sbin/%s", fs->fs_tool_name); -- if (sys_access (fs_tool_name, R_OK|X_OK) == 0) -- runner_add_arg (&runner, fs_tool_name); -- else { -- snprintf (fs_tool_name, sizeof (fs_tool_name), -- "/sbin/%s", fs->fs_tool_name); -- if (sys_access (fs_tool_name, R_OK|X_OK) == 0) -- runner_add_arg (&runner, fs_tool_name); -- } -+ runner_add_arg (&runner, fs->fs_tool_name); - break; - } - } --- -2.12.0 - diff --git a/gnu/packages/patches/gnome-control-center-udisks.patch b/gnu/packages/patches/gnome-control-center-udisks.patch deleted file mode 100644 index 823684b2e9..0000000000 --- a/gnu/packages/patches/gnome-control-center-udisks.patch +++ /dev/null @@ -1,221 +0,0 @@ -This patch is derived from upstream commit 2520aea6 and fixes upstream issues -285 and 302. See https://gitlab.gnome.org/GNOME/gcr/merge_requests/387, -https://gitlab.gnome.org/GNOME/gnome-control-center/issues/285 and -https://gitlab.gnome.org/GNOME/gnome-control-center/issues/302. - -diff --git a/panels/info/cc-info-overview-panel.c b/panels/info/cc-info-overview-panel.c -index e2276a295b3fd9de01b30fc3369069b5d33ba5b7..ff47c1fef2493bcc7ab34f9e8716d570d8d370ed 100644 ---- a/panels/info/cc-info-overview-panel.c -+++ b/panels/info/cc-info-overview-panel.c -@@ -36,6 +36,7 @@ - #include - #include - #include -+#include - - #include - -@@ -81,9 +82,7 @@ typedef struct - - GCancellable *cancellable; - -- /* Free space */ -- GList *primary_mounts; -- guint64 total_bytes; -+ UDisksClient *client; - - GraphicsData *graphics_data; - } CcInfoOverviewPanelPrivate; -@@ -96,8 +95,6 @@ struct _CcInfoOverviewPanel - CcInfoOverviewPanelPrivate *priv; - }; - --static void get_primary_disc_info_start (CcInfoOverviewPanel *self); -- - typedef struct - { - char *major; -@@ -486,111 +483,51 @@ get_os_type (void) - } - - static void --query_done (GFile *file, -- GAsyncResult *res, -- CcInfoOverviewPanel *self) -+get_primary_disc_info (CcInfoOverviewPanel *self) - { - CcInfoOverviewPanelPrivate *priv; -- g_autoptr(GFileInfo) info = NULL; -- g_autoptr(GError) error = NULL; -- -- info = g_file_query_filesystem_info_finish (file, res, &error); -- if (info != NULL) -- { -- priv = cc_info_overview_panel_get_instance_private (self); -- priv->total_bytes += g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_FILESYSTEM_SIZE); -- } -- else -- { -- if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) -- return; -- else -- { -- g_autofree char *path = NULL; -- path = g_file_get_path (file); -- g_warning ("Failed to get filesystem free space for '%s': %s", path, error->message); -- } -- } -+ GDBusObjectManager *manager; -+ g_autolist(GDBusObject) objects = NULL; -+ GList *l; -+ guint64 total_size; - -- /* And onto the next element */ -- get_primary_disc_info_start (self); --} -- --static void --get_primary_disc_info_start (CcInfoOverviewPanel *self) --{ -- GUnixMountEntry *mount; -- g_autoptr(GFile) file = NULL; -- CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self); -+ priv = cc_info_overview_panel_get_instance_private (self); -+ total_size = 0; - -- if (priv->primary_mounts == NULL) -+ if (!priv->client) - { -- g_autofree char *size = NULL; -- -- size = g_format_size (priv->total_bytes); -- gtk_label_set_text (GTK_LABEL (priv->disk_label), size); -- -+ gtk_label_set_text (GTK_LABEL (priv->disk_label), _("Unknown")); - return; - } - -- mount = priv->primary_mounts->data; -- priv->primary_mounts = g_list_remove (priv->primary_mounts, mount); -- file = g_file_new_for_path (g_unix_mount_get_mount_path (mount)); -- g_unix_mount_free (mount); -- -- g_file_query_filesystem_info_async (file, -- G_FILE_ATTRIBUTE_FILESYSTEM_SIZE, -- 0, -- priv->cancellable, -- (GAsyncReadyCallback) query_done, -- self); --} -- --static void --get_primary_disc_info (CcInfoOverviewPanel *self) --{ -- GList *points; -- GList *p; -- GHashTable *hash; -- CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self); -- -- hash = g_hash_table_new (g_str_hash, g_str_equal); -- points = g_unix_mount_points_get (NULL); -- -- /* If we do not have /etc/fstab around, try /etc/mtab */ -- if (points == NULL) -- points = g_unix_mounts_get (NULL); -+ manager = udisks_client_get_object_manager (priv->client); -+ objects = g_dbus_object_manager_get_objects (manager); - -- for (p = points; p != NULL; p = p->next) -+ for (l = objects; l != NULL; l = l->next) - { -- GUnixMountEntry *mount = p->data; -- const char *mount_path; -- const char *device_path; -- -- mount_path = g_unix_mount_get_mount_path (mount); -- device_path = g_unix_mount_get_device_path (mount); -- -- /* Do not count multiple mounts with same device_path, because it is -- * probably something like btrfs subvolume. Use only the first one in -- * order to count the real size. */ -- if (gsd_should_ignore_unix_mount (mount) || -- gsd_is_removable_mount (mount) || -- g_str_has_prefix (mount_path, "/media/") || -- g_str_has_prefix (mount_path, g_get_home_dir ()) || -- g_hash_table_lookup (hash, device_path) != NULL) -+ UDisksDrive *drive; -+ drive = udisks_object_peek_drive (UDISKS_OBJECT (l->data)); -+ -+ /* Skip removable devices */ -+ if (drive == NULL || -+ udisks_drive_get_removable (drive) || -+ udisks_drive_get_ejectable (drive)) - { -- g_unix_mount_free (mount); - continue; - } - -- priv->primary_mounts = g_list_prepend (priv->primary_mounts, mount); -- g_hash_table_insert (hash, (gpointer) device_path, (gpointer) device_path); -+ total_size += udisks_drive_get_size (drive); - } -- g_list_free (points); -- g_hash_table_destroy (hash); - -- priv->cancellable = g_cancellable_new (); -- get_primary_disc_info_start (self); -+ if (total_size > 0) -+ { -+ g_autofree gchar *size = g_format_size (total_size); -+ gtk_label_set_text (GTK_LABEL (priv->disk_label), size); -+ } -+ else -+ { -+ gtk_label_set_text (GTK_LABEL (priv->disk_label), _("Unknown")); -+ } - } - - static char * -@@ -852,8 +789,7 @@ cc_info_overview_panel_finalize (GObject *object) - g_clear_object (&priv->cancellable); - } - -- if (priv->primary_mounts) -- g_list_free_full (priv->primary_mounts, (GDestroyNotify) g_unix_mount_free); -+ g_clear_object (&priv->client); - - g_free (priv->gnome_version); - g_free (priv->gnome_date); -@@ -895,6 +831,7 @@ static void - cc_info_overview_panel_init (CcInfoOverviewPanel *self) - { - CcInfoOverviewPanelPrivate *priv = cc_info_overview_panel_get_instance_private (self); -+ g_autoptr(GError) error = NULL; - - gtk_widget_init_template (GTK_WIDGET (self)); - -@@ -907,6 +844,12 @@ cc_info_overview_panel_init (CcInfoOverviewPanel *self) - else - gtk_widget_destroy (priv->updates_button); - -+ priv->client = udisks_client_new_sync (NULL, &error); -+ -+ if (error != NULL) -+ g_warning ("Unable to get UDisks client: %s. Disk information will not be available.", -+ error->message); -+ - info_overview_panel_setup_overview (self); - info_overview_panel_setup_virt (self); - } -diff --git a/panels/info/meson.build b/panels/info/meson.build -index 03742551314f91b60e3ec1caad153ff314b93310..c54e5fdaff3c6ddb59cca8ee9a2bf5a0212bf196 100644 ---- a/panels/info/meson.build -+++ b/panels/info/meson.build -@@ -61,6 +61,7 @@ sources += gnome.compile_resources( - - deps = common_deps + [ - polkit_gobject_dep, -+ dependency('udisks2', version: '>= 2.1.8'), - dependency('libgtop-2.0') - ] - diff --git a/gnu/packages/patches/guile-finalization-crash.patch b/gnu/packages/patches/guile-finalization-crash.patch new file mode 100644 index 0000000000..098249e49f --- /dev/null +++ b/gnu/packages/patches/guile-finalization-crash.patch @@ -0,0 +1,61 @@ +commit edf5aea7ac852db2356ef36cba4a119eb0c81ea9 +Author: Ludovic Courtès +Date: Mon Dec 9 14:44:59 2019 +0100 + + Fix non-deterministic crash in 'finalization_thread_proc'. + + Fixes . + Reported by Jesse Gibbons . + + * libguile/finalizers.c (finalization_thread_proc): Do not enter the + "switch (data.byte)" condition when data.n <= 0. + +diff --git a/libguile/finalizers.c b/libguile/finalizers.c +index c5d69e8e3..94a6e6b0a 100644 +--- a/libguile/finalizers.c ++++ b/libguile/finalizers.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2012, 2013, 2014 Free Software Foundation, Inc. ++/* Copyright (C) 2012, 2013, 2014, 2019 Free Software Foundation, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License +@@ -211,21 +211,26 @@ finalization_thread_proc (void *unused) + + scm_without_guile (read_finalization_pipe_data, &data); + +- if (data.n <= 0 && data.err != EINTR) ++ if (data.n <= 0) + { +- perror ("error in finalization thread"); +- return NULL; ++ if (data.err != EINTR) ++ { ++ perror ("error in finalization thread"); ++ return NULL; ++ } + } +- +- switch (data.byte) ++ else + { +- case 0: +- scm_run_finalizers (); +- break; +- case 1: +- return NULL; +- default: +- abort (); ++ switch (data.byte) ++ { ++ case 0: ++ scm_run_finalizers (); ++ break; ++ case 1: ++ return NULL; ++ default: ++ abort (); ++ } + } + } + } diff --git a/gnu/packages/patches/mes-remove-store-name.patch b/gnu/packages/patches/mes-remove-store-name.patch new file mode 100644 index 0000000000..ad055c51f2 --- /dev/null +++ b/gnu/packages/patches/mes-remove-store-name.patch @@ -0,0 +1,121 @@ +From d8f361705325cf91fc6c2ec84f281cdcd6bfa8b1 Mon Sep 17 00:00:00 2001 +From: Jan Nieuwenhuizen +Date: Tue, 3 Dec 2019 21:23:24 +0100 +Subject: [PATCH] core: Remove MES_PKGDATADIR. + +* configure: Do not add MES_PKGDATADIR to config.h. +* configure.sh: Likewise. +* simple.sh: Likewise. +* src/mes.c (open_boot): Do not use MES_PKGDATADIR; rely on +MES_PREFIX or cwd. +--- + configure | 1 - + configure.sh | 1 - + simple.sh | 2 -- + src/mes.c | 13 ------------- + 4 files changed, 17 deletions(-) + +diff --git a/configure b/configure +index 8edb2ce7b..12d8323f2 100755 +--- a/configure ++++ b/configure +@@ -666,7 +666,6 @@ See \"Porting GNU Mes\" in the manual, or try --with-courage\n" mes-system) + ")) + (display (string-append " + #define MES_VERSION \"" VERSION "\" +-#define MES_PKGDATADIR \"" pkgdatadir "\" + "))))) + (substitute (string-append srcdest "build-aux/config.make.in") pairs #:target ".config.make")) + +diff --git a/configure.sh b/configure.sh +index 947ddd851..0139cbc36 100755 +--- a/configure.sh ++++ b/configure.sh +@@ -244,7 +244,6 @@ EOF + fi + cat >> include/mes/config.h < include/mes/config.h < include/mes/config.h < 1) +- { +- eputs (";;; pkgdatadir="); +- eputs (MES_PKGDATADIR); +- eputs ("\n"); +- } + if (getenv ("MES_BOOT")) + strcpy (boot, getenv ("MES_BOOT")); + else +@@ -1801,13 +1795,6 @@ open_boot () + __stdin = try_open_boot (file_name, boot, "MES_PREFIX/share/mes"); + } + } +- if (__stdin < 0) +- { +- strcpy (g_datadir, MES_PKGDATADIR); +- strcpy (file_name, g_datadir); +- strcpy (file_name + strlen (file_name), "/module/mes/"); +- __stdin = try_open_boot (file_name, boot, "pkgdatadir"); +- } + if (__stdin < 0) + { + g_datadir[0] = 0; +-- +2.24.0 + +commit 2f6fab05b3f09df02aba70c3e21d5fedb45dc567 +Author: Jan Nieuwenhuizen +Date: Sun Nov 24 23:12:29 2019 +0100 + + core: Throw instead of segfault on non-existing input file. WIP. + + Reported by theruran. + + * src/posix.c (open_input_file): Call error instead of failing silently. + +diff --git a/src/posix.c b/src/posix.c +index 7ba2e9915..fd753232d 100644 +--- a/src/posix.c ++++ b/src/posix.c +@@ -188,7 +188,10 @@ current_input_port () + SCM + open_input_file (SCM file_name) + { +- return MAKE_NUMBER (mes_open (CSTRING (file_name), O_RDONLY, 0)); ++ int filedes = mes_open (CSTRING (file_name), O_RDONLY, 0); ++ if (filedes == -1) ++ error (cell_symbol_system_error, cons (MAKE_STRING0 ("No such file or directory"), file_name)); ++ return MAKE_NUMBER (filedes); + } + + SCM diff --git a/gnu/packages/patches/ncompress-fix-softlinks.patch b/gnu/packages/patches/ncompress-fix-softlinks.patch new file mode 100644 index 0000000000..98752e8e64 --- /dev/null +++ b/gnu/packages/patches/ncompress-fix-softlinks.patch @@ -0,0 +1,24 @@ +Patch taken from Debian sid. + +Description: Support uncompressing and compressing soft links. + Historically, ncompress for Debian has been built using a command line + directly in debian/rules. For 4.2.4.5-1, I simplified by swtching to the + upstream Makefile. However, that caused a regression - the Debian version of + ncompress has always successfully handled soft links, but this stopped + working. To revert to the original behavior, I need to remove -DLSTAT from + the build options, to be consistent with how the code was previously built. +Author: Kenneth J. Pronovici +Bug-Debian: http://bugs.debian.org/918836 +Index: ncompress/GNUmakefile +=================================================================== +--- ncompress.orig/GNUmakefile ++++ ncompress/GNUmakefile +@@ -9,7 +9,7 @@ distclean: cleanup + + Makefile: Makefile.def GNUmakefile + sed \ +- -e 's:options= :options= $$(CFLAGS) -DNOFUNCDEF -DUTIME_H -DLSTAT $$(LDFLAGS) :' \ ++ -e 's:options= :options= $$(CFLAGS) -DNOFUNCDEF -DUTIME_H $$(LDFLAGS) :' \ + Makefile.def > Makefile + + check: diff --git a/gnu/packages/patches/nss-CVE-2019-11745.patch b/gnu/packages/patches/nss-CVE-2019-11745.patch new file mode 100644 index 0000000000..ae0eeda3c8 --- /dev/null +++ b/gnu/packages/patches/nss-CVE-2019-11745.patch @@ -0,0 +1,24 @@ +Fix CVE-2019-11745 (Out-of-bounds write when passing an output buffer smaller +than the block size to NSC_EncryptUpdate). + +Copied from Debian, equivalent to upstream fix: +. + +# HG changeset patch +# User Craig Disselkoen +# Date 1574189697 25200 +# Node ID 60bca7c6dc6dc44579b9b3e0fb62ca3b82d92eec +# Parent 64e55c9f658e2a75f0835d00a8a1cdc2f25c74d6 +Bug 1586176 - EncryptUpdate should use maxout not block size. r=franziskus + +--- a/nss/lib/softoken/pkcs11c.c ++++ b/nss/lib/softoken/pkcs11c.c +@@ -1285,7 +1285,7 @@ NSC_EncryptUpdate(CK_SESSION_HANDLE hSes + } + /* encrypt the current padded data */ + rv = (*context->update)(context->cipherInfo, pEncryptedPart, +- &padoutlen, context->blockSize, context->padBuf, ++ &padoutlen, maxout, context->padBuf, + context->blockSize); + if (rv != SECSuccess) { + return sftk_MapCryptError(PORT_GetError()); diff --git a/gnu/packages/patches/python-pyatspi-python-37.patch b/gnu/packages/patches/python-pyatspi-python-37.patch deleted file mode 100644 index caa6aea39e..0000000000 --- a/gnu/packages/patches/python-pyatspi-python-37.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 29a7b929f7f1160b643dc5f5911533887173fcff Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= -Date: Thu, 28 Jun 2018 17:10:33 +0200 -Subject: [PATCH] Rename async to asynchronous, keep backwards comaptibility - -async is a keyword in Python 3.7 and keeping it results in SyntaxError. - -Fixes https://gitlab.gnome.org/GNOME/pyatspi2/issues/1 ---- - pyatspi/registry.py | 35 +++++++++++++++++++++++++++-------- - 1 file changed, 27 insertions(+), 8 deletions(-) - -diff --git a/pyatspi/registry.py b/pyatspi/registry.py -index cb28395..f73ee16 100644 ---- a/pyatspi/registry.py -+++ b/pyatspi/registry.py -@@ -50,9 +50,9 @@ class Registry(object): - reference to the Accessibility.Registry singleton. Doing so is harmless and - has no point. - -- @@ivar async: Should event dispatch to local listeners be decoupled from event -- receiving from the registry? -- @@type async: boolean -+ @@ivar asynchronous: Should event dispatch to local listeners be decoupled -+ from event receiving from the registry? -+ @@type asynchronous: boolean - @@ivar reg: Reference to the real, wrapped registry object - @@type reg: Accessibility.Registry - @@ivar dev: Reference to the device controller -@@ -111,25 +111,44 @@ class Registry(object): - - self.has_implementations = True - -- self.async = False # not fully supported yet -+ self.asynchronous = False # not fully supported yet - self.started = False - self.event_listeners = dict() - -+ def __getattr__(self, name): -+ """ -+ For backwards compatibility with old API -+ """ -+ if name == 'async': -+ return self.asynchronous -+ return object.__getattr__(self, name) -+ -+ def __setattr__(self, name, value): -+ """ -+ For backwards compatibility with old API -+ """ -+ if name == 'async': -+ self.asynchronous = value -+ object.__setattr__(self, name, value) -+ - def _set_default_registry (self): - self._set_registry (MAIN_LOOP_GLIB) - -- def start(self, async=False, gil=True): -+ def start(self, asynchronous=False, gil=True, **kwargs): - """ - Enter the main loop to start receiving and dispatching events. - -- @@param async: Should event dispatch be asynchronous (decoupled) from -- event receiving from the AT-SPI registry? -- @@type async: boolean -+ @@param asynchronous: Should event dispatch be asynchronous -+ (decoupled) from event receiving from the AT-SPI registry? -+ @@type asynchronous: boolean - @@param gil: Add an idle callback which releases the Python GIL for a few - milliseconds to allow other threads to run? Necessary if other threads - will be used in this process. - @@type gil: boolean - """ -+ if 'async' in kwargs: -+ # support previous API -+ asynchronous = kwargs['async'] - if not self.has_implementations: - self._set_default_registry () - self.started = True --- -2.22.0 - diff --git a/gnu/packages/patches/ruby-safe-yaml-add-require-time.patch b/gnu/packages/patches/ruby-safe-yaml-add-require-time.patch deleted file mode 100644 index 92e5505985..0000000000 --- a/gnu/packages/patches/ruby-safe-yaml-add-require-time.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 9dd1e8d9ad0396a8c9092c2e9f17d498c58e0208 Mon Sep 17 00:00:00 2001 -From: elifoster -Date: Tue, 5 Dec 2017 14:30:13 -0800 -Subject: [PATCH] Fix uninitialized constant DateTime Close #80 - ---- - lib/safe_yaml/parse/date.rb | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/lib/safe_yaml/parse/date.rb b/lib/safe_yaml/parse/date.rb -index cd3c62a..3a30a8b 100644 ---- a/lib/safe_yaml/parse/date.rb -+++ b/lib/safe_yaml/parse/date.rb -@@ -1,3 +1,5 @@ -+require 'time' -+ - module SafeYAML - class Parse - class Date diff --git a/gnu/packages/patches/stumpwm-fix-broken-read-one-line.patch b/gnu/packages/patches/stumpwm-fix-broken-read-one-line.patch deleted file mode 100644 index f8dac61307..0000000000 --- a/gnu/packages/patches/stumpwm-fix-broken-read-one-line.patch +++ /dev/null @@ -1,45 +0,0 @@ -From a13db62a4da06426cf2eb2376d1a3723b5ee52d5 Mon Sep 17 00:00:00 2001 -From: Vasily Postnicov -Date: Fri, 14 Dec 2018 20:01:53 +0300 -Subject: [PATCH] READ-ONE-LINE: Turn COMPLETIONS into a keyword argument - -This keeps READ-ONE-line backwards compatible to changes prior -dae0422811771d179077b9336618f2b19be85b7b. Currently both -ARGUMENT-POP-OR-READ and ARGUMENT-POP-REST-OR-READ are still being -called with the previous lambda list. Update the calls to the -READ-ONE-LINE that used the 'new' lambda list, COMPLETING-READ and -YES-OR-NO-P. - -Closes #538 ---- - input.lisp | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/input.lisp b/input.lisp -index b698a368..7904b35f 100644 ---- a/input.lisp -+++ b/input.lisp -@@ -307,10 +307,13 @@ passed the substring to complete on and is expected to return a list - of matches. If require-match argument is non-nil then the input must - match with an element of the completions." - (check-type completions (or list function symbol)) -- (let ((line (read-one-line screen prompt completions :initial-input initial-input :require-match require-match))) -+ (let ((line (read-one-line screen prompt -+ :completions completions -+ :initial-input initial-input -+ :require-match require-match))) - (when line (string-trim " " line)))) - --(defun read-one-line (screen prompt completions &key (initial-input "") require-match password) -+(defun read-one-line (screen prompt &key completions (initial-input "") require-match password) - "Read a line of input through stumpwm and return it. Returns nil if the user aborted." - (let ((*input-last-command* nil) - (*input-completions* completions) -@@ -842,6 +845,7 @@ user presses 'y'" - user presses 'yes'" - (loop for line = (read-one-line (current-screen) - (format nil "~a(yes or no) " message) -+ :completions - '("yes" "no")) - until (find line '("yes" "no") :test 'string-equal) - do (message "Please answer yes or no") diff --git a/gnu/packages/patches/totem-meson-compat.patch b/gnu/packages/patches/totem-meson-compat.patch deleted file mode 100644 index 8557908dd0..0000000000 --- a/gnu/packages/patches/totem-meson-compat.patch +++ /dev/null @@ -1,14 +0,0 @@ -Fix an error that occurs with Meson 0.50.0 and later: -"ERROR: Subdir keyword must not be an absolute path". - ---- a/src/meson.build 2019-03-15 00:10:26.882293850 +0100 -+++ b/src/meson.build 2019-03-15 00:10:54.312197229 +0100 -@@ -82,7 +82,7 @@ - - install_headers( - headers, -- subdir: join_paths(totem_includedir, totem_api_path) -+ install_dir: join_paths(totem_includedir, totem_api_path) - ) - - libtotem_player_sources = files( diff --git a/gnu/packages/patches/totem-meson-easy-codec.patch b/gnu/packages/patches/totem-meson-easy-codec.patch deleted file mode 100644 index b97d555c1a..0000000000 --- a/gnu/packages/patches/totem-meson-easy-codec.patch +++ /dev/null @@ -1,65 +0,0 @@ -Fix a bug whereby the 'have_easy_codec' would be left undefined -when passing '-D enable-easy-codec-installation=no'. Likewise, -don't rely on GStreamer's plug-in support when it's disabled. - ---- totem-3.26.0/meson.build 2017-10-11 22:29:44.506280919 +0200 -+++ totem-3.26.0/meson.build 2017-10-11 22:29:50.902252058 +0200 -@@ -203,6 +203,8 @@ if easy_codec_option != 'no' - missing_plugins_deps += gst_pbutils_dep - config_h.set('ENABLE_MISSING_PLUGIN_INSTALLATION', have_easy_codec, - description: 'Whether we can and want to do installation of missing plugins') -+else -+ have_easy_codec = false - endif - - # python support - ---- totem-3.26.0/src/backend/bacon-video-widget.c 2017-10-11 22:40:52.531217356 +0200 -+++ totem-3.26.0/src/backend/bacon-video-widget.c 2017-10-11 22:45:44.973847231 +0200 -@@ -341,6 +341,22 @@ get_type_name (GType class_type, int typ - return value->value_nick; - } - -+#ifndef ENABLE_MISSING_PLUGIN_INSTALLATION -+ -+gchar * -+gst_missing_plugin_message_get_installer_detail (GstMessage *message) -+{ -+ return NULL; -+} -+ -+char * -+gst_missing_plugin_message_get_description (GstMessage *message) -+{ -+ return NULL; -+} -+ -+#endif -+ - static gchar ** - bvw_get_missing_plugins_foo (const GList * missing_plugins, MsgToStrFunc func) - { -@@ -1654,10 +1670,12 @@ bvw_handle_element_message (BaconVideoWi - } - } - goto done; -+#ifdef ENABLE_MISSING_PLUGIN_INSTALLATION - } else if (gst_is_missing_plugin_message (msg)) { - bvw->priv->missing_plugins = - g_list_prepend (bvw->priv->missing_plugins, gst_message_ref (msg)); - goto done; -+#endif - } else if (strcmp (type_name, "not-mounted") == 0) { - const GValue *val; - GFile *file; -@@ -6109,7 +6127,9 @@ bacon_video_widget_initable_init (GInita - GST_DEBUG ("Initialised %s", version_str); - g_free (version_str); - -+#ifdef ENABLE_MISSING_PLUGIN_INSTALLATION - gst_pb_utils_init (); -+#endif - - /* Instantiate all the fallible plugins */ - bvw->priv->play = element_make_or_warn ("playbin", "play"); - diff --git a/gnu/packages/patches/websocketpp-fix-for-boost-1.70.patch b/gnu/packages/patches/websocketpp-fix-for-boost-1.70.patch new file mode 100644 index 0000000000..ece414a1cb --- /dev/null +++ b/gnu/packages/patches/websocketpp-fix-for-boost-1.70.patch @@ -0,0 +1,103 @@ +This patch for Boost >= 1.70 was made by merging two patches that +are in the 'develop' branch (c769c92 and f810ca2). + +diff -u b/websocketpp/transport/asio/connection.hpp b/websocketpp/transport/asio/connection.hpp +--- b/websocketpp/transport/asio/connection.hpp ++++ b/websocketpp/transport/asio/connection.hpp +@@ -311,9 +311,10 @@ + * needed. + */ + timer_ptr set_timer(long duration, timer_handler callback) { +- timer_ptr new_timer = lib::make_shared( +- lib::ref(*m_io_service), +- lib::asio::milliseconds(duration) ++ timer_ptr new_timer( ++ new lib::asio::steady_timer( ++ *m_io_service, ++ lib::asio::milliseconds(duration)) + ); + + if (config::enable_multithreading) { +@@ -461,8 +462,7 @@ + m_io_service = io_service; + + if (config::enable_multithreading) { +- m_strand = lib::make_shared( +- lib::ref(*io_service)); ++ m_strand.reset(new lib::asio::io_service::strand(*io_service)); + } + + lib::error_code ec = socket_con_type::init_asio(io_service, m_strand, +diff -u b/websocketpp/transport/asio/endpoint.hpp b/websocketpp/transport/asio/endpoint.hpp +--- b/websocketpp/transport/asio/endpoint.hpp ++++ b/websocketpp/transport/asio/endpoint.hpp +@@ -195,8 +195,7 @@ + + m_io_service = ptr; + m_external_io_service = true; +- m_acceptor = lib::make_shared( +- lib::ref(*m_io_service)); ++ m_acceptor.reset(new lib::asio::ip::tcp::acceptor(*m_io_service)); + + m_state = READY; + ec = lib::error_code(); +@@ -688,9 +687,7 @@ + * @since 0.3.0 + */ + void start_perpetual() { +- m_work = lib::make_shared( +- lib::ref(*m_io_service) +- ); ++ m_work.reset(new lib::asio::io_service::work(*m_io_service)); + } + + /// Clears the endpoint's perpetual flag, allowing it to exit when empty +@@ -854,8 +851,7 @@ + + // Create a resolver + if (!m_resolver) { +- m_resolver = lib::make_shared( +- lib::ref(*m_io_service)); ++ m_resolver.reset(new lib::asio::ip::tcp::resolver(*m_io_service)); + } + + tcon->set_uri(u); +unchanged: +--- a/websocketpp/transport/asio/security/none.hpp ++++ b/websocketpp/transport/asio/security/none.hpp +@@ -168,8 +168,7 @@ protected: + return socket::make_error_code(socket::error::invalid_state); + } + +- m_socket = lib::make_shared( +- lib::ref(*service)); ++ m_socket.reset(new lib::asio::ip::tcp::socket(*service)); + + if (m_socket_init_handler) { + m_socket_init_handler(m_hdl, *m_socket); +unchanged: +--- a/websocketpp/transport/asio/security/tls.hpp ++++ b/websocketpp/transport/asio/security/tls.hpp +@@ -193,8 +193,7 @@ protected: + if (!m_context) { + return socket::make_error_code(socket::error::invalid_tls_context); + } +- m_socket = lib::make_shared( +- _WEBSOCKETPP_REF(*service),lib::ref(*m_context)); ++ m_socket.reset(new socket_type(*service, *m_context)); + + if (m_socket_init_handler) { + m_socket_init_handler(m_hdl, get_socket()); +only in patch2: +unchanged: +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -202,7 +202,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES) + endif () + + if (NOT Boost_USE_STATIC_LIBS) +- add_definitions (/DBOOST_TEST_DYN_LINK) ++ add_definitions (-DBOOST_TEST_DYN_LINK) + endif () + + set (Boost_FIND_REQUIRED TRUE) diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm index cfe06a0be2..6f2b3f78ea 100644 --- a/gnu/packages/pretty-print.scm +++ b/gnu/packages/pretty-print.scm @@ -174,6 +174,8 @@ (define-public fmt (base32 "0h148anbaqgch6n69pxsvs1c9wmykgd052wmzgdia7qpz8w6p8dl")))) (build-system cmake-build-system) + (arguments + '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON"))) (native-inputs `(("unzip" ,unzip))) (home-page "http://fmtlib.net/") diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index eb25bd0ade..1632d7ade5 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -54,6 +54,7 @@ (define-module (gnu packages python-web) #:use-module (guix build-system python) #:use-module (guix utils) #:use-module (gnu packages) + #:use-module (gnu packages base) #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages curl) @@ -67,6 +68,7 @@ (define-module (gnu packages python-web) #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-xyz) #:use-module (gnu packages sphinx) + #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) #:use-module (gnu packages time) #:use-module (gnu packages web) @@ -3354,3 +3356,68 @@ (define-public python-cssselect2 XPath and therefore does not have all the correctness corner cases that are hard or impossible to fix in cssselect.") (license license:bsd-3))) + +(define-public gunicorn + (package + (name "gunicorn") + (version "20.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "gunicorn" version)) + (sha256 + (base32 + "0l1zm8a0vz8ws3lkn8q9a0f93ipdzyvlf2zlwdj5xyadh6jdwsgg")))) + (outputs '("out" "doc")) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'build 'build-doc + (lambda _ + (invoke "make" "-C" "docs" "PAPER=a4" "html" "info") + (delete-file "docs/build/texinfo/Makefile") + (delete-file "docs/build/texinfo/Gunicorn.texi") + #t)) + (replace 'check + (lambda _ + (setenv "PYTHONPATH" + (string-append ".:" (getenv "PYTHONPATH"))) + ;; Remove test modules failing due to libc not found due to + ;; section '.dynamic' not found in libc.so + (delete-file "tests/test_arbiter.py") + (delete-file "tests/test_config.py") + (delete-file "tests/test_sock.py") + (invoke "pytest"))) + (add-after 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((doc (string-append (assoc-ref outputs "doc") + "/share/doc/" ,name "-" ,version)) + (html (string-append doc "/html")) + (info (string-append doc "/info")) + (examples (string-append doc "/examples"))) + (mkdir-p html) + (mkdir-p info) + (mkdir-p examples) + (copy-recursively "docs/build/html" html) + (copy-recursively "docs/build/texinfo" info) + (copy-recursively "examples" examples) + (for-each (lambda (file) + (copy-file file (string-append doc "/" file))) + '("README.rst" "NOTICE" "LICENSE" "THANKS"))) + #t))))) + (native-inputs + `(("binutils" ,binutils) ;; for ctypes.util.find_library() + ("python-aiohttp", python-aiohttp) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-sphinx" ,python-sphinx) + ("texinfo" ,texinfo))) + (home-page "http://gunicorn.org/") + (synopsis "Python WSGI HTTP Server for UNIX") + (description "Gunicorn ‘Green Unicorn’ is a Python WSGI HTTP +Server for UNIX. It’s a pre-fork worker model ported from Ruby’s +Unicorn project. The Gunicorn server is broadly compatible with +various web frameworks, simply implemented, light on server resources, +and fairly speedy.") + (license license:expat))) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index a735aceff5..75b8a4cc08 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -41,7 +41,7 @@ ;;; Copyright © 2017, 2018, 2019 Mathieu Othacehe ;;; Copyright © 2017 José Miguel Sánchez García ;;; Copyright © 2017 Roel Janssen -;;; Copyright © 2017, 2018 Kei Kebreau +;;; Copyright © 2017, 2018, 2019 Kei Kebreau ;;; Copyright © 2017 Rutger Helling ;;; Copyright © 2017 Muriithi Frederick Muriuki ;;; Copyright © 2017, 2019 Brendan Tildesley @@ -103,6 +103,7 @@ (define-module (gnu packages python-xyz) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gl) #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) #:use-module (gnu packages graphviz) #:use-module (gnu packages graphics) #:use-module (gnu packages gstreamer) @@ -3006,19 +3007,20 @@ (define-public python-toml (define-public python-jsonrpc-server (package (name "python-jsonrpc-server") - (version "0.1.2") + (version "0.3.2") (source (origin (method url-fetch) (uri (pypi-uri "python-jsonrpc-server" version)) (sha256 (base32 - "0m4ykpcdy52x37n1ikysp07j7p8ialcdvvvsrjp3545sn7iiid09")))) + "0ddgdp26dfxaz6isjbb12974b3rxavgsqrn2zrmck62cmipg5g05")))) (build-system python-build-system) (propagated-inputs `(("python-future" ,python-future) ("python-mock" ,python-mock) - ("python-pytest" ,python-pytest))) + ("python-pytest" ,python-pytest) + ("python-ujson" ,python-ujson))) (home-page "https://github.com/palantir/python-jsonrpc-server") (synopsis "JSON RPC 2.0 server library") @@ -3052,14 +3054,14 @@ (define-public python-pydocstyle (define-public python-language-server (package (name "python-language-server") - (version "0.29.1") + (version "0.31.2") (source (origin (method url-fetch) (uri (pypi-uri "python-language-server" version)) (sha256 (base32 - "1f8qlflh6j3s7qfmzhirpl8fgidl6f0qbakdmiml96wdxzvka0s3")))) + "1iq69wc1fyhirfyq25ih41wq9yvr7bchiw0i116adpdgcq6m9idq")))) (build-system python-build-system) (propagated-inputs `(("python-pluggy" ,python-pluggy) @@ -11776,19 +11778,41 @@ (define-public python-termstyle (define-public python-argcomplete (package (name "python-argcomplete") - (version "1.7.0") + (version "1.10.3") (source - (origin - (method url-fetch) - (uri (pypi-uri "argcomplete" version)) - (sha256 - (base32 - "11bwiw6j0nilgz81xnw6f1npyga3prp8asjqrm87cdr3ria5l03x")))) + (origin + (method url-fetch) + (uri (pypi-uri "argcomplete" version)) + (sha256 + (base32 + "02jkc44drb0yjz6x28lvg6rj607n8r2irdpdvyylm8xnycn54zx3")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'embed-tool-references + (lambda _ + (substitute* "argcomplete/bash_completion.d/python-argcomplete.sh" + ((" grep") + (string-append " " (which "grep"))) + ((" egrep") + (string-append " " (which "egrep"))) + (("elif which") + (string-append "elif " (which "which"))) + (("\\$\\(which") + (string-append "$(" (which "which")))) + #t))))) + (inputs + `(("grep" ,grep) + ("which" ,which))) (native-inputs - `(("python-pexpect" ,python-pexpect) + `(("python-coverage" ,python-coverage) + ("python-flake8" ,python-flake8) + ("python-pexpect" ,python-pexpect) + ("python-wheel" ,python-wheel) ("tcsh" ,tcsh) - ("bash-full" ,bash))) ;full Bash for 'test_file_completion' + ("fish" ,fish) + ("bash-full" ,bash))) ;full Bash for 'test_file_completion' (home-page "https://github.com/kislyuk/argcomplete") (synopsis "Shell tab completion for Python argparse") (description "argcomplete provides extensible command line tab completion @@ -16721,3 +16745,63 @@ (define-public python-pykwalify "This package provides a parser, schema validator, and data binding tool for YAML and JSON.") (license license:expat))) + +(define-public python-dbusmock + (package + (name "python-dbusmock") + (version "0.18.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-dbusmock" version)) + (sha256 + (base32 + "0hp2kyac88nh9iv6l8hlmv7s1sa1s5f1a3wc2pmlmmxnd211fjlr")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-shell-path + (lambda _ + (substitute* "tests/test_code.py" + (("/bin/bash") (which "bash"))) + #t))))) + (native-inputs + `(;; For tests. + ("dbus" ,dbus) ; for dbus-daemon + ("python-nose" ,python-nose) + ("which" ,which))) + (propagated-inputs + `(("python-dbus" ,python-dbus) + ("python-pygobject" ,python-pygobject))) + (home-page "https://github.com/martinpitt/python-dbusmock") + (synopsis "Python library for mock D-Bus objects") + (description "python-dbusmock allows for the easy creation of mock objects on +D-Bus. This is useful for writing tests for software which talks to D-Bus +services such as upower, systemd, logind, gnome-session or others, and it is +hard (or impossible without root privileges) to set the state of the real +services to what you expect in your tests.") + (license license:lgpl3+))) + +(define-public python-ujson + (package + (name "python-ujson") + (version "1.35") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ujson" version)) + (sha256 + (base32 + "11jz5wi7mbgqcsz52iqhpyykiaasila4lq8cmc2d54bfa3jp6q7n")))) + (build-system python-build-system) + (home-page "http://www.esn.me") + (synopsis + "Ultra fast JSON encoder and decoder for Python") + (description + "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with + bindings for Python 2.5+ and 3.") + (license license:bsd-3))) + +(define-public python2-ujson + (package-with-python2 python-ujson)) diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm index 65541788a1..75b2975421 100644 --- a/gnu/packages/regex.scm +++ b/gnu/packages/regex.scm @@ -30,7 +30,7 @@ (define-module (gnu packages regex) (define-public re2 (package (name "re2") - (version "2019-11-01") + (version "2019-12-01") (home-page "https://github.com/google/re2") (source (origin (method git-fetch) @@ -38,7 +38,7 @@ (define-public re2 (file-name (git-file-name name version)) (sha256 (base32 - "1w6djkydjgwavml2qchq24834jkbngyxc1dc4vk8vkgajglv9pff")))) + "0drfhy32a0ndlwc4zi1khx07ifslkrc0w14hj8skqhddkrg55x0l")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 70b59e9156..e1d69f9655 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -372,13 +372,13 @@ (define-public ruby-rsync (define-public ruby-i18n (package (name "ruby-i18n") - (version "1.1.0") + (version "1.7.0") (source (origin (method url-fetch) (uri (rubygems-uri "i18n" version)) (sha256 (base32 - "0ppvmla21hssvrfm8g1n2fnb4lxn4yhy9qmmba0imanflgldrjmr")))) + "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; no tests @@ -390,7 +390,7 @@ (define-public ruby-i18n transliteration to ASCII, flexible defaults, bulk lookup, lambdas as translation data, custom key/scope separator, custom exception handlers, and an extensible architecture with a swappable backend.") - (home-page "https://github.com/svenfuchs/i18n") + (home-page "https://github.com/ruby-i18n/i18n") (license license:expat))) (define-public ruby-iruby @@ -560,7 +560,7 @@ (define-public ruby-rspec-expectations-2 (define-public ruby-rspec-its (package (name "ruby-rspec-its") - (version "1.2.0") + (version "1.3.0") (source (origin (method git-fetch) @@ -570,17 +570,7 @@ (define-public ruby-rspec-its (file-name (git-file-name name version)) (sha256 (base32 - "190rz7v4q4wk80fzhr5hknvxx4vb2pywmqr8wc41w2blj9ylzi0f")) - (patches - (list - (origin (method url-fetch) - (uri (string-append - "https://github.com/rspec/rspec-its/commit/" - "bfaab439c7c879f5ef25552f41827891f6308373.patch")) - (file-name "ruby-rspec-its-fix-specs-for-ruby-2.4.patch") - (sha256 - (base32 - "0lnik0kvrpgkakvdb2fmzg22pdlraf6kiidr9sv6rnfyviiqwxgh"))))))) + "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p")))) (build-system ruby-build-system) (arguments `(#:test-target "spec" @@ -592,13 +582,19 @@ (define-public ruby-rspec-its (("rspec rspec-core rspec-expectations rspec-mocks rspec-support") "")) #t)) + (add-before 'build 'update-ffi-in-gemfile + (lambda _ + (substitute* "Gemfile" + ((" gem 'ffi', '~> 1.9.25'") " gem 'ffi', '~> 1.10.0'")) + #t)) (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile (lambda _ (substitute* "rspec-its.gemspec" (("rake.*") "rake'\n") - (("cucumber.*") "cucumber'\n") + (("spec.add_development_dependency 'cucumber'.*") + "spec.add_development_dependency 'cucumber'\n") (("bundler.*") "bundler'\n") - (("aruba.*") "aruba'\n")) + (("\"aruba.*") "'aruba'\n")) #t))))) (propagated-inputs `(("ruby-rspec-core" ,ruby-rspec-core) @@ -606,6 +602,7 @@ (define-public ruby-rspec-its (native-inputs `(("bundler" ,bundler) ("ruby-cucumber" ,ruby-cucumber) + ("ruby-ffi" ,ruby-ffi) ("ruby-aruba" ,ruby-aruba))) (synopsis "RSpec extension that provides the @code{its} method") (description @@ -5285,14 +5282,14 @@ (define-public ruby-rest-client (define-public ruby-rubocop (package (name "ruby-rubocop") - (version "0.64.0") + (version "0.77.0") (source (origin (method url-fetch) (uri (rubygems-uri "rubocop" version)) (sha256 (base32 - "07shi6kncwhkvlh9ci9rgccrjsq4448hbic3yrakh2w65ppynvbj")))) + "0m88b1bgbhmmbdnz2xv6n0il0j4q5qm9jbc0vf1zsaxmxqp06nx9")))) (build-system ruby-build-system) (arguments '(;; No included tests @@ -6341,14 +6338,14 @@ (define-public ruby-webmock-2 (define-public ruby-unicode-display-width (package (name "ruby-unicode-display-width") - (version "1.4.1") + (version "1.6.0") (source (origin (method url-fetch) (uri (rubygems-uri "unicode-display_width" version)) (sha256 (base32 - "0bq528fibi8s0jmxz0xzlgzggdq0x4fx46wfqz49478pv8gb2diq")))) + "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w")))) (build-system ruby-build-system) (arguments '(;; Test data not included. @@ -7459,13 +7456,13 @@ (define-public ruby-childprocess (define-public ruby-public-suffix (package (name "ruby-public-suffix") - (version "3.0.3") + (version "4.0.1") (source (origin (method url-fetch) (uri (rubygems-uri "public_suffix" version)) (sha256 (base32 - "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l")))) + "0xnfv2j2bqgdpg2yq9i2rxby0w2sc9h5iyjkpaas2xknwrgmhdb0")))) (build-system ruby-build-system) (arguments '(#:phases @@ -7496,13 +7493,13 @@ (define-public ruby-public-suffix (define-public ruby-addressable (package (name "ruby-addressable") - (version "2.6.0") + (version "2.7.0") (source (origin (method url-fetch) (uri (rubygems-uri "addressable" version)) (sha256 (base32 - "0bcm2hchn897xjhqj9zzsxf3n9xhddymj4lsclz508f4vw3av46l")))) + "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy")))) (build-system ruby-build-system) (arguments '(#:test-target "spec" @@ -8207,13 +8204,13 @@ (define-public ruby-em-websocket (define-public ruby-rouge (package (name "ruby-rouge") - (version "3.2.1") + (version "3.13.0") (source (origin (method url-fetch) (uri (rubygems-uri "rouge" version)) (sha256 (base32 - "0h79gn2wmn1wix2d27lgiaimccyj8gvizrllyym500pir408x62f")))) + "1y90nx9ph9adnrpcsvs2adca2l3dyz8am2d2kzxkwd3a086ji7aw")))) (build-system ruby-build-system) (arguments `(#:tests? #f)); No rakefile (home-page "http://rouge.jneen.net/") @@ -8287,10 +8284,9 @@ (define-public ruby-heredoc-unindent (define-public ruby-safe-yaml (package (name "ruby-safe-yaml") - (version "1.0.4") + (version "1.0.5") (source (origin - ;; TODO Fetch from the git repository so a patch can be applied (method git-fetch) (uri (git-reference (url "https://github.com/dtao/safe_yaml.git") @@ -8298,9 +8294,7 @@ (define-public ruby-safe-yaml (file-name (git-file-name name version)) (sha256 (base32 - "1wnln8xdy8g6kwdj4amm8773xwffqxpf2sxslk6jjh2wxsy1lrig")) - (patches - (search-patches "ruby-safe-yaml-add-require-time.patch")))) + "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg")))) (build-system ruby-build-system) (native-inputs `(("ruby-rspec" ,ruby-rspec) @@ -8383,13 +8377,13 @@ (define-public ruby-forwardable-extended (define-public ruby-pathutil (package (name "ruby-pathutil") - (version "0.16.1") + (version "0.16.2") (source (origin (method url-fetch) (uri (rubygems-uri "pathutil" version)) (sha256 (base32 - "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz")))) + "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4")))) (build-system ruby-build-system) (propagated-inputs `(("ruby-forwardable-extended" ,ruby-forwardable-extended))) @@ -8489,14 +8483,14 @@ (define-public ruby-faraday (define-public ruby-nio4r (package (name "ruby-nio4r") - (version "2.4.0") + (version "2.5.2") (source (origin (method url-fetch) (uri (rubygems-uri "nio4r" version)) (sha256 (base32 - "0v2cpqmw6dmysa91ffzl736kgjjzmnf4xlgz6g16fk4yqhn71340")))) + "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c")))) (build-system ruby-build-system) (arguments '(#:phases diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index b82d280089..de33effc89 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -71,7 +71,7 @@ (define-module (gnu packages ssh) (define-public libssh (package (name "libssh") - (version "0.9.2") + (version "0.9.3") (source (origin (method git-fetch) (uri (git-reference @@ -79,23 +79,13 @@ (define-public libssh (commit (string-append "libssh-" version)))) (sha256 (base32 - "14g4rvp91skn2hlsjyhkv58vhng65xrf34cfqffixa4al869hzgj")) + "175i3xybg69d5lb078334v6dd3njm743kww8f67ix9w33969rmzf")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (outputs '("out" "debug")) (arguments '(#:configure-flags '("-DWITH_GCRYPT=ON") - #:phases (modify-phases %standard-phases - (add-before 'configure 'avoid-werror - (lambda _ - ;; Avoid '-Werror'. Presumably this works fine with - ;; gcc@8 on x86_64 but leads to errors with our older - ;; compiler. - (substitute* "CompilerChecks.cmake" - (("-Werror=") "-W")) - #t))) - ;; TODO: Add 'CMockery' and '-DWITH_TESTING=ON' for the test suite. #:tests? #f)) (inputs `(("zlib" ,zlib) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 6083ac18ee..81ff0107b4 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -1799,13 +1799,13 @@ (define-public r-chron (define-public r-data-table (package (name "r-data-table") - (version "1.12.6") + (version "1.12.8") (source (origin (method url-fetch) (uri (cran-uri "data.table" version)) (sha256 (base32 - "1kgbnm5gv7ax7qn8irpz7qsry2ci21axga8y7qpkidcqkxkkndn2")))) + "1p7rf4v3ysflpgcmy9krkwmcy7z22wb08xm443649waz6lx5z9yk")))) (build-system r-build-system) (inputs `(("zlib" ,zlib))) @@ -2505,13 +2505,13 @@ (define-public r-readr (define-public r-plotrix (package (name "r-plotrix") - (version "3.7-6") + (version "3.7-7") (source (origin (method url-fetch) (uri (cran-uri "plotrix" version)) (sha256 (base32 - "0ijfjlr7ls5hvfyzdmwab6bx0w3nvp0c8fgynj4355cj8mbzgmc3")))) + "1x92mmyfry127zzr6cmcj6kjsc4zhxrrdlr0jcxn3bb0hpdfps54")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/plotrix") (synopsis "Various plotting functions") @@ -2564,13 +2564,13 @@ (define-public r-latticeextra (define-public r-rcpparmadillo (package (name "r-rcpparmadillo") - (version "0.9.800.1.0") + (version "0.9.800.3.0") (source (origin (method url-fetch) (uri (cran-uri "RcppArmadillo" version)) (sha256 (base32 - "1frg7y3fb571jf9dp1kkc75x0nxvw8j3qccsrm1brg5l1z2jmlaz")))) + "0kpcspg3mafi5kncjfhnbcwimvlf19jvrxilvhbpd20sap473mh3")))) (properties `((upstream-name . "RcppArmadillo"))) (build-system r-build-system) ;; All needed for vignettes @@ -2777,13 +2777,13 @@ (define-public r-blob (define-public r-rsqlite (package (name "r-rsqlite") - (version "2.1.3") + (version "2.1.4") (source (origin (method url-fetch) (uri (cran-uri "RSQLite" version)) (sha256 (base32 - "0c5s67s8w4q6p57rnh14n4gcmymyardg8lhnrdlimmjcfawj15h7")))) + "1vhaq6zfqilya669l100adcw51xz0p370zabnk2dnk1xhdih1f34")))) (properties `((upstream-name . "RSQLite"))) (build-system r-build-system) (propagated-inputs @@ -3511,13 +3511,13 @@ (define-public r-r-oo (define-public r-r-utils (package (name "r-r-utils") - (version "2.9.0") + (version "2.9.2") (source (origin (method url-fetch) (uri (cran-uri "R.utils" version)) (sha256 (base32 - "1w4zn2db15bggfnh64fbyi2z2sj47rcd4xn53b28dsnkamdcramj")))) + "1krj1ny7y43lpm2q8c7swxfdc3ngy2j8knzv71f8bfsgh673nsxc")))) (properties `((upstream-name . "R.utils"))) (build-system r-build-system) (propagated-inputs @@ -3533,13 +3533,13 @@ (define-public r-r-utils (define-public r-r-cache (package (name "r-r-cache") - (version "0.13.0") + (version "0.14.0") (source (origin (method url-fetch) (uri (cran-uri "R.cache" version)) (sha256 (base32 - "1hf5cb7xvnca5zlh9245b5g62sgsaxwdhiv7x59yld37cydakm6k")))) + "1n8n5ihkryrbxv630dwhz4r048nyv676qd3i9f5z5fa04hvlxbqq")))) (properties `((upstream-name . "R.cache"))) (build-system r-build-system) (propagated-inputs diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm index a82654be0a..19d4d670c6 100644 --- a/gnu/packages/tor.scm +++ b/gnu/packages/tor.scm @@ -50,14 +50,14 @@ (define-module (gnu packages tor) (define-public tor (package (name "tor") - (version "0.4.1.6") + (version "0.4.2.5") (source (origin (method url-fetch) (uri (string-append "https://dist.torproject.org/tor-" version ".tar.gz")) (sha256 (base32 - "0wgdid8w7srd218hh4rwslzdx2ickxw1pg18p2wry1r6wi65521a")))) + "1hnqg6psf7shcmlvfk44mkpaz7v66mify3cnx7mzl23q5s37anad")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 74e8f5c0e5..cf60f02192 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -150,14 +150,14 @@ (define-public git (name "git") ;; XXX When updating Git, check if the special 'git-source' input to cgit ;; needs to be updated as well. - (version "2.24.0") + (version "2.24.1") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/software/scm/git/git-" version ".tar.xz")) (sha256 (base32 - "06rpakbwzck85ncfsgv4xmq3iwab9d4f5y6dqhl8nvb2fccxcwcz")))) + "0ql5z31vgl7b785gwrf00m129mg7zi9pa65n12ij3mpxx3f28gvj")))) (build-system gnu-build-system) (native-inputs `(("native-perl" ,perl) @@ -170,7 +170,7 @@ (define-public git version ".tar.xz")) (sha256 (base32 - "19h4bhk78rljxk921fcz5xy1z4ss75zw03n9nqf2r512dz0p5j5h")))) + "1yzy5jikkv67ynp576j926kg8zdldh8j4b57l0ixcnjdcyr4lc17")))) ;; For subtree documentation. ("asciidoc" ,asciidoc) ("docbook-xsl" ,docbook-xsl) @@ -550,7 +550,7 @@ (define-public git-minimal (define-public libgit2 (package (name "libgit2") - (version "0.28.3") + (version "0.28.4") (source (origin (method git-fetch) (uri (git-reference @@ -559,7 +559,7 @@ (define-public libgit2 (file-name (git-file-name name version)) (sha256 (base32 - "07068flm9xi25wmcs65nyfg6a7ikgfv96i2nhgyj5gzs9gljqiz2")) + "171b25aym4q88bidc4c76y4l6jmdwifm3q9zjqsll0wjhlkycfy1")) (patches (search-patches "libgit2-avoid-python.patch" "libgit2-mtime-0.patch")) @@ -794,10 +794,10 @@ (define (quoted-file-name input path) ,(origin (method url-fetch) ;; XXX CGit is currently incompatible with Git > 2.18. - (uri "mirror://kernel.org/software/scm/git/git-2.18.0.tar.xz") + (uri "mirror://kernel.org/software/scm/git/git-2.18.2.tar.xz") (sha256 (base32 - "14hfwfkrci829a9316hnvkglnqqw1p03cw9k56p4fcb078wbwh4b")))) + "1gmcz5k8sa6phzhhv6zjl8izbyqnxcdb8ns8kd2czyak0g409vrq")))) ("openssl" ,openssl) ("groff" ,groff) ("python" ,python) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index c008a0686c..3280114878 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1454,6 +1454,7 @@ (define-public libvpx (build-system gnu-build-system) (arguments `(#:configure-flags (list "--enable-shared" + "--disable-static" "--as=yasm" ;; Limit size to avoid CVE-2015-1258 "--size-limit=16384x16384" @@ -1497,7 +1498,7 @@ (define-public libvpx-1.7 (define-public youtube-dl (package (name "youtube-dl") - (version "2019.11.22") + (version "2019.11.28") (source (origin (method url-fetch) (uri (string-append "https://github.com/ytdl-org/youtube-dl/" @@ -1505,7 +1506,7 @@ (define-public youtube-dl version ".tar.gz")) (sha256 (base32 - "0avdlp0dc9p3lm68mfnic21x6blxmr0zvlxa4br5vj4y4sckq2m8")))) + "19xiwdn3l0kizyj7cik9vyhgrlwg7ss4wl4hy2pbbbqwh5vwppwk")))) (build-system python-build-system) (arguments ;; The problem here is that the directory for the man page and completion @@ -3216,7 +3217,7 @@ (define-public gavl (define-public frei0r-plugins (package (name "frei0r-plugins") - (version "1.6.1") + (version "1.7.0") (source (origin (method url-fetch) @@ -3224,23 +3225,25 @@ (define-public frei0r-plugins "frei0r-plugins-" version ".tar.gz")) (sha256 (base32 - "0pji26fpd0dqrx1akyhqi6729s394irl73dacnyxk58ijqq4dhp0")))) + "0fjji3060r4fwr7vn91lwfzl80lg3my9lkp94kbyw8xwz7qgh7qv")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'autotools + (add-after 'unpack 'patch-Makefile (lambda _ - (invoke "sh" "autogen.sh")))))) + ;; XXX: The 1.7.0 Makefile looks for files that have slightly different + ;; names in the tarball. Try removing this for future versions. + (substitute* "Makefile.in" + (("README\\.md ChangeLog TODO AUTHORS") + "README.txt ChangeLog.txt TODO.txt AUTHORS.txt")) + #t))))) ;; TODO: opencv for additional face detection filters. (inputs `(("gavl" ,gavl) ("cairo" ,cairo))) (native-inputs - `(("pkg-config" ,pkg-config) - ("libtool" ,libtool) - ("automake" ,automake) - ("autoconf" ,autoconf))) + `(("pkg-config" ,pkg-config))) (home-page "https://www.dyne.org/software/frei0r/") (synopsis "Minimalistic plugin API for video effects") (description @@ -3560,7 +3563,7 @@ (define-public openshot (define-public dav1d (package (name "dav1d") - (version "0.5.1") + (version "0.5.2") (source (origin (method url-fetch) @@ -3568,7 +3571,7 @@ (define-public dav1d "/dav1d/" version "/dav1d-" version ".tar.xz")) (sha256 (base32 - "03cf6f9if45prq97qp7llzi1p71dyw9ymc87hc225iy89kmzjsdd")))) + "02hgarv2x2bqbac15pdj7pbm8f4lyn78ws0dncygvhis9a6ghk7r")))) (build-system meson-build-system) (native-inputs `(("nasm" ,nasm))) (home-page "https://code.videolan.org/videolan/dav1d") diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index dd0222730f..e83ae43da2 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -220,7 +220,7 @@ (define-public qemu ("spice" ,spice) ("usbredir" ,usbredir) ("util-linux" ,util-linux) - ;; ("vde2" ,vde2) + ("vde2" ,vde2) ("virglrenderer" ,virglrenderer) ("zlib" ,zlib))) (native-inputs `(("gettext" ,gettext-minimal) @@ -268,7 +268,7 @@ (define-public qemu-minimal '("gettext"))) (inputs (fold alist-delete (package-inputs qemu) '("libusb" "mesa" "sdl2" "spice" "virglrenderer" "gtk+" - "usbredir" "libdrm" "libepoxy" "pulseaudio"))))) + "usbredir" "libdrm" "libepoxy" "pulseaudio" "vde2"))))) ;; The GRUB test suite fails with later versions of Qemu, so we ;; keep it at 2.10 for now. See diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm index 1fd313c46c..1c2228c426 100644 --- a/gnu/packages/vpn.scm +++ b/gnu/packages/vpn.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2018 Meiyo Peng ;;; Copyright © 2019 Leo Famulari ;;; Copyright © 2019 Rutger Helling +;;; Copyright © 2019 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,6 +43,7 @@ (define-module (gnu packages vpn) #:use-module (gnu packages compression) #:use-module (gnu packages gettext) #:use-module (gnu packages gnupg) + #:use-module (gnu packages guile) #:use-module (gnu packages libevent) #:use-module (gnu packages linux) #:use-module (gnu packages nss) @@ -134,7 +136,8 @@ (define-public vpnc-scripts (base32 "1g41yarz2bl0f73kbjqnywr485ghanbp7nmspklfb0n07yp0z6ak")))) (build-system gnu-build-system) - (inputs `(("coreutils" ,coreutils) + (inputs `(("guile" ,guile-2.2) ; for the wrapper scripts + ("coreutils" ,coreutils) ("grep" ,grep) ("iproute2" ,iproute) ; for ‘ip’ ("net-tools" ,net-tools) ; for ‘ifconfig’, ‘route’ @@ -177,7 +180,7 @@ (define-public vpnc-scripts (let ((out (assoc-ref outputs "out"))) (for-each (lambda (script) - (wrap-program script + (wrap-script (string-append out "/etc/vpnc/" script) `("PATH" ":" prefix ,(map (lambda (name) (let ((input (assoc-ref inputs name))) @@ -189,8 +192,9 @@ (define-public vpnc-scripts "net-tools" "sed" "which"))))) - (find-files (string-append out "/etc/vpnc/vpnc-script") - "^vpnc-script")) + (list "vpnc-script-ptrtd" + "vpnc-script-sshd" + "vpnc-script")) #t)))) #:tests? #f)) ; no tests (home-page "http://git.infradead.org/users/dwmw2/vpnc-scripts.git") diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 6330c73c16..7595892283 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1075,7 +1075,8 @@ (define-public websocketpp (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "12ffczcrryh74c1xssww35ic6yiy2l2xgdd30lshiq9wnzl2brgy")))) + (base32 "12ffczcrryh74c1xssww35ic6yiy2l2xgdd30lshiq9wnzl2brgy")) + (patches (search-patches "websocketpp-fix-for-boost-1.70.patch")))) (build-system cmake-build-system) (inputs `(("boost" ,boost) ("openssl" ,openssl))) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 53dbda5942..4bf621ee27 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -27,6 +27,9 @@ ;;; Copyright © 2019 John Soo ;;; Copyright © 2018, 2019 Pierre Langlois ;;; Copyright © 2016, 2017 Andy Patterson +;;; Copyright © 2019 Evan Straw +;;; Copyright © 2019 Brett Gilio +;;; Copyright © 2019 Noodles! ;;; ;;; This file is part of GNU Guix. ;;; @@ -1495,7 +1498,7 @@ (define-public mako (define-public stumpwm (package (name "stumpwm") - (version "18.11") + (version "19.11") (source (origin (method git-fetch) @@ -1504,11 +1507,7 @@ (define-public stumpwm (commit version))) (file-name (git-file-name "stumpwm" version)) (sha256 - (base32 "003g1fmh7446ws49866kzny4lrk1wf034dq5fa4m9mq1nzc7cwv7")) - (patches - ;; This patch is included in the post-18.11 git master tree - ;; and can be removed when we move to the next release. - (search-patches "stumpwm-fix-broken-read-one-line.patch")))) + (base32 "1ha8803ll7472kqxsy2xz0v5d4sv8apmc9z631d67m31q0z1m9rz")))) (build-system asdf-build-system/sbcl) (native-inputs `(("fiasco" ,sbcl-fiasco) ("texinfo" ,texinfo))) @@ -1606,3 +1605,39 @@ (define-public stumpwm+slynk (define-public sbcl-stumpwm+slynk (deprecated-package "sbcl-stumpwm-with-slynk" stumpwm+slynk)) + +(define-public lemonbar + (let ((commit "35183ab81d2128dbb7b6d8e119cc57846bcefdb4") + (revision "1")) + (package + (name "lemonbar") + (version (git-version "1.3" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/LemonBoy/bar") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1wwqbph392iwz8skaqxb0xpklb1l6yganqz80g4x1fhrnz7idmlh")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no test suite + #:make-flags (list "CC=gcc" + (string-append "PREFIX=" %output)) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) + (inputs + `(("libxcb" ,libxcb))) + (native-inputs + `(("perl" ,perl))) + (home-page "https://github.com/LemonBoy/bar") + (synopsis "Featherweight status bar") + (description + "@code{lemonbar} (formerly known as @code{bar}) is a lightweight +bar entirely based on XCB. Provides full UTF-8 support, basic +formatting, RandR and Xinerama support and EWMH compliance without +wasting your precious memory.") + (license license:x11)))) diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm index be02106f9a..61d836a50b 100644 --- a/gnu/packages/xiph.scm +++ b/gnu/packages/xiph.scm @@ -143,6 +143,8 @@ (define speex (base32 "150047wnllz4r94whb9r73l5qf0z5z3rlhy98bawfbblmkq8mbpa")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 6d1aa6f76c..86c8eb815f 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -2043,14 +2043,14 @@ (define-public xmlrpc-c (define-public python-xmltodict (package (name "python-xmltodict") - (version "0.11.0") + (version "0.12.0") (source - (origin - (method url-fetch) - (uri (pypi-uri "xmltodict" version)) - (sha256 - (base32 - "1pxh4yjhvmxi1h6f92skv41g4kbsws3ams57150kzn18m907v3cg")))) + (origin + (method url-fetch) + (uri (pypi-uri "xmltodict" version)) + (sha256 + (base32 + "08cadlb9vsb4pmzc99lz3a2lx6qcfazyvgk10pcqijvyxlwcdn2h")))) (build-system python-build-system) (native-inputs `(("python-coverage" ,python-coverage) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 2e992b4b2f..801e5e459b 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -2944,8 +2944,8 @@ (define-public xf86-video-i128 (define-public xf86-video-intel - (let ((commit "6f4972d5c368c30e971a23c1dc370d3e43761282") - (revision "14")) + (let ((commit "f66d39544bb8339130c96d282a80f87ca1606caf") + (revision "15")) (package (name "xf86-video-intel") (version (git-version "2.99.917" revision commit)) @@ -2958,7 +2958,7 @@ (define-public xf86-video-intel (commit commit))) (sha256 (base32 - "0bc46qqglzfm4g9q4c2vgynvps2ng0xvlxnjpm9d6z4q6scdhz59")) + "14rwbbn06l8qpx7s5crxghn80vgcx8jmfc7qvivh72d81r0kvywl")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (inputs `(("mesa" ,mesa) diff --git a/gnu/services.scm b/gnu/services.scm index 394470ba7d..e7a3a95e43 100644 --- a/gnu/services.scm +++ b/gnu/services.scm @@ -25,6 +25,8 @@ (define-module (gnu services) #:use-module (guix profiles) #:use-module (guix discovery) #:use-module (guix combinators) + #:use-module (guix channels) + #:use-module (guix describe) #:use-module (guix sets) #:use-module (guix ui) #:use-module ((guix utils) #:select (source-properties->location)) @@ -39,6 +41,7 @@ (define-module (gnu services) #:use-module (srfi srfi-35) #:use-module (ice-9 vlist) #:use-module (ice-9 match) + #:autoload (ice-9 pretty-print) (pretty-print) #:export (service-extension service-extension? service-extension-target @@ -82,6 +85,7 @@ (define-module (gnu services) ambiguous-target-service-error-target-type system-service-type + provenance-service-type boot-service-type cleanup-service-type activation-service-type @@ -370,6 +374,89 @@ (define %boot-service ;; The service that produces the boot script. (service boot-service-type #t)) + +;;; +;;; Provenance tracking. +;;; + +(define (object->pretty-string obj) + "Like 'object->string', but using 'pretty-print'." + (call-with-output-string + (lambda (port) + (pretty-print obj port)))) + +(define (channel->code channel) + "Return code to build CHANNEL, ready to be dropped in a 'channels.scm' +file." + `(channel (name ',(channel-name channel)) + (url ,(channel-url channel)) + (branch ,(channel-branch channel)) + (commit ,(channel-commit channel)))) + +(define (channel->sexp channel) + "Return an sexp describing CHANNEL. The sexp is _not_ code and is meant to +be parsed by tools; it's potentially more future-proof than code." + `(channel (name ,(channel-name channel)) + (url ,(channel-url channel)) + (branch ,(channel-branch channel)) + (commit ,(channel-commit channel)))) + +(define (provenance-file channels config-file) + "Return a 'provenance' file describing CHANNELS, a list of channels, and +CONFIG-FILE, which can be either #f or a containing the OS +configuration being used." + (scheme-file "provenance" + #~(provenance + (version 0) + (channels #+@(if channels + (map channel->sexp channels) + '())) + (configuration-file #+config-file)))) + +(define (provenance-entry config-file) + "Return system entries describing the operating system provenance: the +channels in use and CONFIG-FILE, if it is true." + (define profile + (current-profile)) + + (define channels + (and=> profile profile-channels)) + + (mbegin %store-monad + (let ((config-file (cond ((string? config-file) + (local-file config-file "configuration.scm")) + ((not config-file) + #f) + (else + config-file)))) + (return `(("provenance" ,(provenance-file channels config-file)) + ,@(if channels + `(("channels.scm" + ,(plain-file "channels.scm" + (object->pretty-string + `(list + ,@(map channel->code channels)))))) + '()) + ,@(if config-file + `(("configuration.scm" ,config-file)) + '())))))) + +(define provenance-service-type + (service-type (name 'provenance) + (extensions + (list (service-extension system-service-type + provenance-entry))) + (default-value #f) ;the OS config file + (description + "Store provenance information about the system in the system +itself: the channels used when building the system, and its configuration +file, when available."))) + + +;;; +;;; Cleanup. +;;; + (define (cleanup-gexp _) "Return a gexp to clean up /tmp and similar places upon boot." (with-imported-modules '((guix build utils)) diff --git a/gnu/services/mcron.scm b/gnu/services/mcron.scm index 7238665404..1327516b49 100644 --- a/gnu/services/mcron.scm +++ b/gnu/services/mcron.scm @@ -130,6 +130,8 @@ (define mcron-shepherd-services (define mcron-service-type (service-type (name 'mcron) + (description + "Run the mcron job scheduling daemon.") (extensions (list (service-extension shepherd-root-service-type mcron-shepherd-services) diff --git a/gnu/system.scm b/gnu/system.scm index 96c2b5aad3..abdbb081e6 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -110,6 +110,7 @@ (define-module (gnu system) system-linux-image-file-name operating-system-with-gc-roots + operating-system-with-provenance boot-parameters boot-parameters? @@ -540,6 +541,15 @@ (define (operating-system-with-gc-roots os roots) gc-root-service-type roots) (operating-system-user-services os))))) +(define* (operating-system-with-provenance os #:optional config-file) + "Return a variant of OS that stores its own provenance information, +including CONFIG-FILE, if available. This is achieved by adding an instance +of PROVENANCE-SERVICE-TYPE to its services." + (operating-system + (inherit os) + (services (cons (service provenance-service-type config-file) + (operating-system-user-services os))))) + ;;; ;;; /etc. diff --git a/gnu/system/examples/vm-image.tmpl b/gnu/system/examples/vm-image.tmpl index 7d984155bc..bcb2ba614c 100644 --- a/gnu/system/examples/vm-image.tmpl +++ b/gnu/system/examples/vm-image.tmpl @@ -24,11 +24,6 @@ Run '\x1b[1;37minfo guix\x1b[0m' to browse documentation. accounts.\x1b[0m ")) -(define this-file - (local-file (basename (assoc-ref (current-source-location) 'filename)) - "config.scm")) - - (operating-system (host-name "gnu") (timezone "Etc/UTC") @@ -73,10 +68,6 @@ root ALL=(ALL) ALL (services (append (list (service xfce-desktop-service-type) - ;; Copy this file to /etc/config.scm in the OS. - (simple-service 'config-file etc-service-type - `(("config.scm" ,this-file))) - ;; Choose SLiM, which is lighter than the default GDM. (service slim-service-type (slim-configuration diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm index e2b792d3dc..52c1ea177e 100644 --- a/guix/build/emacs-build-system.scm +++ b/guix/build/emacs-build-system.scm @@ -76,10 +76,10 @@ (define* (unpack #:key source #:allow-other-keys) (define* (add-source-to-load-path #:key dummy #:allow-other-keys) "Augment the EMACSLOADPATH environment variable with the source directory." (let* ((source-directory (getcwd)) - (emacs-load-path-value (string-append (getenv "EMACSLOADPATH") ":" - source-directory))) + (emacs-load-path-value (string-append source-directory ":" + (getenv "EMACSLOADPATH")))) (setenv "EMACSLOADPATH" emacs-load-path-value) - (format #t "source directory ~s appended to the `EMACSLOADPATH' \ + (format #t "source directory ~s prepended to the `EMACSLOADPATH' \ environment variable\n" source-directory))) (define* (build #:key outputs inputs #:allow-other-keys) @@ -239,15 +239,14 @@ (define %standard-phases (add-after 'unpack 'add-source-to-load-path add-source-to-load-path) (delete 'bootstrap) (delete 'configure) - ;; Move the build phase after install: the .el files are byte compiled - ;; directly in the store. (delete 'build) (replace 'check check) (replace 'install install) - (add-after 'install 'build build) (add-after 'install 'make-autoloads make-autoloads) (add-after 'make-autoloads 'patch-el-files patch-el-files) - (add-after 'make-autoloads 'move-doc move-doc))) + ;; The .el files are byte compiled directly in the store. + (add-after 'patch-el-files 'build build) + (add-after 'build 'move-doc move-doc))) (define* (emacs-build #:key inputs (phases %standard-phases) #:allow-other-keys #:rest args) diff --git a/guix/build/qt-build-system.scm b/guix/build/qt-build-system.scm index 46fcad7848..be2b808901 100644 --- a/guix/build/qt-build-system.scm +++ b/guix/build/qt-build-system.scm @@ -90,8 +90,8 @@ (define handle-output (unless (member output qt-wrap-excluded-outputs) (let ((bin-list (find-files-to-wrap directory)) (vars-to-wrap (variables-for-wrapping - (append (list output) - input-directories)))) + (append (list directory) + input-directories)))) (when (not (null? vars-to-wrap)) (for-each (cut apply wrap-program <> vars-to-wrap) bin-list))))))) diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index ce7999b433..248d6761fc 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2015 David Thompson ;;; Copyright © 2015 Mark H Weaver ;;; Copyright © 2017 Mathieu Othacehe +;;; Copyright © 2019 Guillaume Le Vaillant ;;; ;;; This file is part of GNU Guix. ;;; @@ -43,6 +44,7 @@ (define-module (guix build syscalls) MS_BIND MS_MOVE MS_STRICTATIME + MS_LAZYTIME MNT_FORCE MNT_DETACH MNT_EXPIRE @@ -451,6 +453,7 @@ (define MS_NOATIME 1024) (define MS_BIND 4096) (define MS_MOVE 8192) (define MS_STRICTATIME 16777216) +(define MS_LAZYTIME 33554432) (define MNT_FORCE 1) (define MNT_DETACH 2) diff --git a/guix/derivations.scm b/guix/derivations.scm index 6cdf55b1fe..480a65c78b 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -86,6 +86,7 @@ (define-module (guix derivations) fixed-output-derivation? offloadable-derivation? substitutable-derivation? + derivation-input-fold substitution-oracle derivation-hash derivation-properties @@ -303,6 +304,29 @@ (define (derivation-output-paths drv sub-drvs) (derivation-output-path (assoc-ref outputs sub-drv))) sub-drvs)))) +(define* (derivation-input-fold proc seed inputs + #:key (cut? (const #f))) + "Perform a breadth-first traversal of INPUTS, calling PROC on each input +with the current result, starting from SEED. Skip recursion on inputs that +match CUT?." + (let loop ((inputs inputs) + (result seed) + (visited (set))) + (match inputs + (() + result) + ((input rest ...) + (let ((key (derivation-input-key input))) + (cond ((set-contains? visited key) + (loop rest result visited)) + ((cut? input) + (loop rest result (set-insert key visited))) + (else + (let ((drv (derivation-input-derivation input))) + (loop (append (derivation-inputs drv) rest) + (proc input result) + (set-insert key visited)))))))))) + (define* (substitution-oracle store inputs-or-drv #:key (mode (build-mode normal))) "Return a one-argument procedure that, when passed a store file name, @@ -322,25 +346,15 @@ (define valid-input? (cut valid-derivation-input? store <>)) (define (closure inputs) - (let loop ((inputs inputs) - (closure '()) - (visited (set))) - (match inputs - (() - (reverse closure)) - ((input rest ...) - (let ((key (derivation-input-key input))) - (cond ((set-contains? visited key) - (loop rest closure visited)) - ((valid-input? input) - (loop rest closure (set-insert key visited))) - (else - (let ((drv (derivation-input-derivation input))) - (loop (append (derivation-inputs drv) rest) - (if (substitutable-derivation? drv) - (cons input closure) - closure) - (set-insert key visited)))))))))) + (reverse + (derivation-input-fold (lambda (input closure) + (let ((drv (derivation-input-derivation input))) + (if (substitutable-derivation? drv) + (cons input closure) + closure))) + '() + inputs + #:cut? valid-input?))) (let* ((inputs (closure (map (match-lambda ((? derivation-input? input) diff --git a/guix/import/cran.scm b/guix/import/cran.scm index e47aff2b12..d9018cc7da 100644 --- a/guix/import/cran.scm +++ b/guix/import/cran.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus -;;; Copyright © 2015, 2016, 2017 Ludovic Courtès +;;; Copyright © 2015, 2016, 2017, 2019 Ludovic Courtès ;;; Copyright © 2017 Mathieu Othacehe ;;; ;;; This file is part of GNU Guix. @@ -505,7 +505,7 @@ (define cran->guix-package ((bioconductor) ;; Retry import from CRAN (cran->guix-package package-name 'cran)) - (else #f))))))) + (else (values #f '())))))))) (define* (cran-recursive-import package-name #:optional (repo 'cran)) (recursive-import package-name repo diff --git a/guix/import/crate.scm b/guix/import/crate.scm index 8dc014d232..4c3f8000d0 100644 --- a/guix/import/crate.scm +++ b/guix/import/crate.scm @@ -178,21 +178,20 @@ (define* (make-crate-sexp #:key name version cargo-inputs cargo-development-inpu (close-port port) pkg)) -(define %dual-license-rx - ;; Dual licensing is represented by a string such as "MIT OR Apache-2.0". - ;; This regexp matches that. - (make-regexp "^(.*) OR (.*)$")) +(define (string->license string) + (filter-map (lambda (license) + (and (not (string-null? license)) + (not (any (lambda (elem) (string=? elem license)) + '("AND" "OR" "WITH"))) + (or (spdx-string->license license) + 'unknown-license!))) + (string-split string (string->char-set " /")))) (define* (crate->guix-package crate-name #:optional version) "Fetch the metadata for CRATE-NAME from crates.io, and return the `package' s-expression corresponding to that package, or #f on failure. When VERSION is specified, attempt to fetch that version; otherwise fetch the latest version of CRATE-NAME." - (define (string->license string) - (match (regexp-exec %dual-license-rx string) - (#f (list (spdx-string->license string))) - (m (list (spdx-string->license (match:substring m 1)) - (spdx-string->license (match:substring m 2)))))) (define (normal-dependency? dependency) (eq? (crate-dependency-kind dependency) 'normal)) diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 4694b6e7ef..47fc8276a9 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -34,15 +34,16 @@ (define-module (guix import utils) #:use-module (guix gexp) #:use-module (guix store) #:use-module (guix download) + #:use-module (guix sets) #:use-module (gnu packages) #:use-module (ice-9 match) #:use-module (ice-9 rdelim) #:use-module (ice-9 receive) #:use-module (ice-9 regex) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) - #:use-module (srfi srfi-41) #:export (factorize-uri flatten @@ -377,40 +378,53 @@ (define (guix-name prefix name) (chr (char-downcase chr))) name))) +(define (topological-sort nodes + node-dependencies + node-name) + "Perform a breadth-first traversal of the graph rooted at NODES, a list of +nodes, and return the list of nodes sorted in topological order. Call +NODE-DEPENDENCIES to obtain the dependencies of a node, and NODE-NAME to +obtain a node's uniquely identifying \"key\"." + (let loop ((nodes nodes) + (result '()) + (visited (set))) + (match nodes + (() + result) + ((head . tail) + (if (set-contains? visited (node-name head)) + (loop tail result visited) + (let ((dependencies (node-dependencies head))) + (loop (append dependencies tail) + (cons head result) + (set-insert (node-name head) visited)))))))) + (define* (recursive-import package-name repo #:key repo->guix-package guix-name #:allow-other-keys) - "Generate a stream of package expressions for PACKAGE-NAME and all its -dependencies." - (define (exists? dependency) - (not (null? (find-packages-by-name (guix-name dependency))))) - (define initial-state (list #f (list package-name) (list))) - (define (step state) - (match state - ((prev (next . rest) done) - (define (handle? dep) - (and - (not (equal? dep next)) - (not (member dep done)) - (not (exists? dep)))) - (receive (package . dependencies) (repo->guix-package next repo) - (list - (if package package '()) ;; default #f on failure would interrupt - (if package - (lset-union equal? rest (filter handle? (car dependencies))) - rest) - (cons next done)))) - ((prev '() done) - (list #f '() done)))) + "Return a stream of package expressions for PACKAGE-NAME and all its +dependencies, sorted in topological order. For each package, +call (REPO->GUIX-PACKAGE NAME REPO), which should return a package expression +and a list of dependencies; call (GUIX-NAME NAME) to obtain the Guix package +name corresponding to the upstream name." + (define-record-type + (make-node name package dependencies) + node? + (name node-name) + (package node-package) + (dependencies node-dependencies)) - ;; Generate a lazy stream of package expressions for all unknown - ;; dependencies in the graph. - (stream-unfold - ;; map: produce a stream element - (match-lambda ((latest queue done) latest)) - ;; predicate - (match-lambda ((latest queue done) latest)) - ;; generator: update the queue - step - ;; initial state - (step initial-state))) + (define (exists? name) + (not (null? (find-packages-by-name (guix-name name))))) + + (define (lookup-node name) + (receive (package dependencies) (repo->guix-package name repo) + (make-node name package dependencies))) + + (map node-package + (topological-sort (list (lookup-node package-name)) + (lambda (node) + (map lookup-node + (remove exists? + (node-dependencies node)))) + node-name))) diff --git a/guix/profiles.scm b/guix/profiles.scm index f5e5cc33d6..616605151e 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -1727,7 +1727,9 @@ (define %user-profile-directory (define %profile-directory (string-append %state-directory "/profiles/" (or (and=> (or (getenv "USER") - (getenv "LOGNAME")) + (getenv "LOGNAME") + (false-if-exception + (passwd:name (getpwuid (getuid))))) (cut string-append "per-user/" <>)) "default"))) diff --git a/guix/scripts/import/cran.scm b/guix/scripts/import/cran.scm index b6592f78a9..d6f371ef3a 100644 --- a/guix/scripts/import/cran.scm +++ b/guix/scripts/import/cran.scm @@ -27,7 +27,6 @@ (define-module (guix scripts import cran) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-37) - #:use-module (srfi srfi-41) #:use-module (ice-9 match) #:use-module (ice-9 format) #:export (guix-import-cran)) @@ -98,10 +97,8 @@ (define (parse-options) (if (assoc-ref opts 'recursive) ;; Recursive import (map package->definition - (reverse - (stream->list - (cran-recursive-import package-name - (or (assoc-ref opts 'repo) 'cran))))) + (cran-recursive-import package-name + (or (assoc-ref opts 'repo) 'cran))) ;; Single import (let ((sexp (cran->guix-package package-name (or (assoc-ref opts 'repo) 'cran)))) diff --git a/guix/scripts/import/crate.scm b/guix/scripts/import/crate.scm index 4690cceb4d..92034dab3c 100644 --- a/guix/scripts/import/crate.scm +++ b/guix/scripts/import/crate.scm @@ -28,7 +28,6 @@ (define-module (guix scripts import crate) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-37) - #:use-module (srfi srfi-41) #:use-module (ice-9 match) #:use-module (ice-9 format) #:export (guix-import-crate)) @@ -101,9 +100,7 @@ (define-values (name version) `(define-public ,(string->symbol name) ,pkg)) (_ #f)) - (reverse - (stream->list - (crate-recursive-import name)))) + (crate-recursive-import name)) (let ((sexp (crate->guix-package name version))) (unless sexp (leave (G_ "failed to download meta-data for package '~a'~%") diff --git a/guix/scripts/import/elpa.scm b/guix/scripts/import/elpa.scm index f1ed5016ba..d270d2b4bc 100644 --- a/guix/scripts/import/elpa.scm +++ b/guix/scripts/import/elpa.scm @@ -27,7 +27,6 @@ (define-module (guix scripts import elpa) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-37) - #:use-module (srfi srfi-41) #:use-module (ice-9 match) #:use-module (ice-9 format) #:export (guix-import-elpa)) @@ -101,10 +100,8 @@ (define (parse-options) `(define-public ,(string->symbol name) ,pkg)) (_ #f)) - (reverse - (stream->list - (elpa-recursive-import package-name - (or (assoc-ref opts 'repo) 'gnu))))) + (elpa-recursive-import package-name + (or (assoc-ref opts 'repo) 'gnu))) (let ((sexp (elpa->guix-package package-name (assoc-ref opts 'repo)))) (unless sexp (leave (G_ "failed to download package '~a'~%") package-name)) diff --git a/guix/scripts/import/gem.scm b/guix/scripts/import/gem.scm index b6d9ccaae4..c64596b514 100644 --- a/guix/scripts/import/gem.scm +++ b/guix/scripts/import/gem.scm @@ -26,7 +26,6 @@ (define-module (guix scripts import gem) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-37) - #:use-module (srfi srfi-41) #:use-module (ice-9 match) #:use-module (ice-9 format) #:export (guix-import-gem)) @@ -95,9 +94,7 @@ (define (parse-options) `(define-public ,(string->symbol name) ,pkg)) (_ #f)) - (reverse - (stream->list - (gem-recursive-import package-name 'rubygems)))) + (gem-recursive-import package-name 'rubygems)) (let ((sexp (gem->guix-package package-name))) (unless sexp (leave (G_ "failed to download meta-data for package '~a'~%") diff --git a/guix/scripts/import/hackage.scm b/guix/scripts/import/hackage.scm index f4aac61078..710e786a79 100644 --- a/guix/scripts/import/hackage.scm +++ b/guix/scripts/import/hackage.scm @@ -27,7 +27,6 @@ (define-module (guix scripts import hackage) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-37) - #:use-module (srfi srfi-41) #:use-module (ice-9 match) #:use-module (ice-9 format) #:export (guix-import-hackage)) @@ -130,9 +129,7 @@ (define (run-importer package-name opts error-fn) `(define-public ,(string->symbol name) ,pkg)) (_ #f)) - (reverse - (stream->list - (apply hackage-recursive-import arguments)))) + (apply hackage-recursive-import arguments)) ;; Single import (apply hackage->guix-package arguments)))) (unless sexp (error-fn)) diff --git a/guix/scripts/import/opam.scm b/guix/scripts/import/opam.scm index 2d249a213f..20da1437fe 100644 --- a/guix/scripts/import/opam.scm +++ b/guix/scripts/import/opam.scm @@ -25,7 +25,6 @@ (define-module (guix scripts import opam) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-37) - #:use-module (srfi srfi-41) #:use-module (ice-9 match) #:use-module (ice-9 format) #:export (guix-import-opam)) @@ -94,9 +93,7 @@ (define (parse-options) `(define-public ,(string->symbol name) ,pkg)) (_ #f)) - (reverse - (stream->list - (opam-recursive-import package-name)))) + (opam-recursive-import package-name)) ;; Single import (let ((sexp (opam->guix-package package-name))) (unless sexp diff --git a/guix/scripts/import/pypi.scm b/guix/scripts/import/pypi.scm index 7bd83818ba..33167174e2 100644 --- a/guix/scripts/import/pypi.scm +++ b/guix/scripts/import/pypi.scm @@ -26,7 +26,6 @@ (define-module (guix scripts import pypi) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-37) - #:use-module (srfi srfi-41) #:use-module (ice-9 match) #:use-module (ice-9 format) #:export (guix-import-pypi)) @@ -95,9 +94,7 @@ (define (parse-options) `(define-public ,(string->symbol name) ,pkg)) (_ #f)) - (reverse - (stream->list - (pypi-recursive-import package-name)))) + (pypi-recursive-import package-name)) ;; Single import (let ((sexp (pypi->guix-package package-name))) (unless sexp diff --git a/guix/scripts/import/stackage.scm b/guix/scripts/import/stackage.scm index b4b12581bf..d77328dcbf 100644 --- a/guix/scripts/import/stackage.scm +++ b/guix/scripts/import/stackage.scm @@ -27,7 +27,6 @@ (define-module (guix scripts import stackage) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-37) - #:use-module (srfi srfi-41) #:use-module (ice-9 match) #:use-module (ice-9 format) #:export (guix-import-stackage)) @@ -110,9 +109,7 @@ (define (run-importer package-name opts error-fn) `(define-public ,(string->symbol name) ,pkg)) (_ #f)) - (reverse - (stream->list - (apply stackage-recursive-import arguments)))) + (apply stackage-recursive-import arguments)) ;; Single import (apply stackage->guix-package arguments)))) (unless sexp (error-fn)) diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index 1668d02992..8d08c484f5 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2017 Tobias Geerinckx-Rice ;;; Copyright © 2017, 2018 Efraim Flashner ;;; Copyright © 2018, 2019 Arun Isaac +;;; Copyright © 2019 Simon Tournier ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,6 +31,7 @@ (define-module (guix scripts lint) #:use-module (guix lint) #:use-module (guix ui) #:use-module (guix scripts) + #:use-module (guix scripts build) #:use-module (gnu packages) #:use-module (ice-9 match) #:use-module (ice-9 format) @@ -94,6 +96,9 @@ (define (show-help) -c, --checkers=CHECKER1,CHECKER2... only run the specified checkers")) (display (G_ " + -L, --load-path=DIR prepend DIR to the package module search path")) + (newline) + (display (G_ " -h, --help display this help and exit")) (display (G_ " -l, --list-checkers display the list of available lint checkers")) @@ -128,6 +133,9 @@ (define %options %local-checkers (alist-delete 'checkers result)))) + (find (lambda (option) + (member "load-path" (option-names option))) + %standard-build-options) (option '(#\h "help") #f #f (lambda args (show-help) diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index 61d18e2609..bbacc93bc0 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -334,6 +334,16 @@ (define database (define environment (singularity-environment-file profile)) + (define symlinks* + ;; Singularity requires /bin (specifically /bin/sh), so ensure that + ;; symlink is created. + (if (find (match-lambda + (("/bin" . _) #t) + (_ #f)) + symlinks) + symlinks + `(("/bin" -> "bin") ,@symlinks))) + (define build (with-imported-modules (source-module-closure '((guix build utils) @@ -407,7 +417,7 @@ (define entry-point #$entry-point) "s" "777" "0" "0" (relative-file-name (dirname source) target))))))) - '#$symlinks) + '#$symlinks*) "-p" "/.singularity.d d 555 0 0" @@ -1049,9 +1059,18 @@ (define properties (entry-point (assoc-ref opts 'entry-point)) (profile-name (assoc-ref opts 'profile-name)) (gc-root (assoc-ref opts 'gc-root))) + (define (lookup-package package) + (manifest-lookup manifest (manifest-pattern (name package)))) + (when (null? (manifest-entries manifest)) (warning (G_ "no packages specified; building an empty pack~%"))) + (when (and (eq? pack-format 'squashfs) + (not (any lookup-package '("bash" "bash-minimal")))) + (warning (G_ "Singularity requires you to provide a shell~%")) + (display-hint (G_ "Add @code{bash} or @code{bash-minimal} \ +to your package list."))) + (run-with-store store (mlet* %store-monad ((profile (profile-derivation manifest diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 19410ad141..04cc51829d 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -60,6 +60,7 @@ (define-module (guix scripts pull) #:use-module (ice-9 format) #:export (display-profile-content channel-list + channel-commit-hyperlink with-git-error-handling guix-pull)) diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 5f0dce2093..3e9570753d 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -36,9 +36,11 @@ (define-module (guix scripts system) #:use-module (guix records) #:use-module (guix profiles) #:use-module (guix scripts) + #:use-module (guix channels) #:use-module (guix scripts build) #:autoload (guix scripts package) (delete-generations delete-matching-generations) + #:autoload (guix scripts pull) (channel-commit-hyperlink) #:use-module (guix graph) #:use-module (guix scripts graph) #:use-module (guix scripts system reconfigure) @@ -456,9 +458,30 @@ (define (shepherd-service-node-type services) ;;; Generations. ;;; +(define (sexp->channel sexp) + "Return the channel corresponding to SEXP, an sexp as found in the +\"provenance\" file produced by 'provenance-service-type'." + (match sexp + (('channel ('name name) + ('url url) + ('branch branch) + ('commit commit)) + (channel (name name) (url url) + (branch branch) (commit commit))))) + (define* (display-system-generation number #:optional (profile %system-profile)) "Display a summary of system generation NUMBER in a human-readable format." + (define (display-channel channel) + (format #t " ~a:~%" (channel-name channel)) + (format #t (G_ " repository URL: ~a~%") (channel-url channel)) + (when (channel-branch channel) + (format #t (G_ " branch: ~a~%") (channel-branch channel))) + (format #t (G_ " commit: ~a~%") + (if (supports-hyperlinks?) + (channel-commit-hyperlink channel) + (channel-commit channel)))) + (unless (zero? number) (let* ((generation (generation-file-name profile number)) (params (read-boot-parameters-file generation)) @@ -468,7 +491,13 @@ (define* (display-system-generation number (root-device (if (bytevector? root) (uuid->string root) root)) - (kernel (boot-parameters-kernel params))) + (kernel (boot-parameters-kernel params)) + (provenance (catch 'system-error + (lambda () + (call-with-input-file + (string-append generation "/provenance") + read)) + (const #f)))) (display-generation profile number) (format #t (G_ " file name: ~a~%") generation) (format #t (G_ " canonical file name: ~a~%") (readlink* generation)) @@ -495,7 +524,23 @@ (define* (display-system-generation number (else root-device))) - (format #t (G_ " kernel: ~a~%") kernel)))) + (format #t (G_ " kernel: ~a~%") kernel) + + (match provenance + (#f #t) + (('provenance ('version 0) + ('channels channels ...) + ('configuration-file config-file)) + (unless (null? channels) + ;; TRANSLATORS: Here "channel" is the same terminology as used in + ;; "guix describe" and "guix pull --channels". + (format #t (G_ " channels:~%")) + (for-each display-channel (map sexp->channel channels))) + (when config-file + (format #t (G_ " configuration file: ~a~%") + (if (supports-hyperlinks?) + (file-hyperlink config-file) + config-file)))))))) (define* (list-generations pattern #:optional (profile %system-profile)) "Display in a human-readable format all the system generations matching @@ -722,7 +767,9 @@ (define (local-eval exp) (return (primitive-eval (lowered-gexp-sexp lowered)))))) (define* (perform-action action os - #:key skip-safety-checks? + #:key + save-provenance? + skip-safety-checks? install-bootloader? dry-run? derivations-only? use-substitutes? bootloader-target target @@ -874,6 +921,8 @@ (define (show-help) reconfigure switch to a new operating system configuration\n")) (display (G_ "\ roll-back switch to the previous operating system configuration\n")) + (display (G_ "\ + describe describe the current system\n")) (display (G_ "\ list-generations list the system generations\n")) (display (G_ "\ @@ -917,16 +966,18 @@ (define (show-help) --image-size=SIZE for 'vm-image', produce an image of SIZE")) (display (G_ " --no-bootloader for 'init', do not install a bootloader")) + (display (G_ " + --save-provenance save provenance information")) (display (G_ " --share=SPEC for 'vm', share host file system according to SPEC")) + (display (G_ " + --expose=SPEC for 'vm', expose host file system according to SPEC")) (display (G_ " -N, --network for 'container', allow containers to access the network")) (display (G_ " -r, --root=FILE for 'vm', 'vm-image', 'disk-image', 'container', and 'build', make FILE a symlink to the result, and register it as a garbage collector root")) - (display (G_ " - --expose=SPEC for 'vm', expose host file system according to SPEC")) (display (G_ " --full-boot for 'vm', make a full boot sequence")) (display (G_ " @@ -979,6 +1030,9 @@ (define %options (option '("full-boot") #f #f (lambda (opt name arg result) (alist-cons 'full-boot? #t result))) + (option '("save-provenance") #f #f + (lambda (opt name arg result) + (alist-cons 'save-provenance? #t result))) (option '("skip-checks") #f #f (lambda (opt name arg result) (alist-cons 'skip-safety-checks? #t result))) @@ -1047,25 +1101,33 @@ (define (ensure-operating-system file-or-exp obj) file-or-exp)) obj) + (define save-provenance? + (or (assoc-ref opts 'save-provenance?) + (memq action '(init reconfigure)))) + (let* ((file (match args (() #f) ((x . _) x))) (expr (assoc-ref opts 'expression)) (system (assoc-ref opts 'system)) (target (assoc-ref opts 'target)) - (os (ensure-operating-system - (or file expr) - (cond - ((and expr file) - (leave - (G_ "both file and expression cannot be specified~%"))) - (expr - (read/eval expr)) - (file - (load* file %user-module - #:on-error (assoc-ref opts 'on-error))) - (else - (leave (G_ "no configuration specified~%")))))) + (transform (if save-provenance? + (cut operating-system-with-provenance <> file) + identity)) + (os (transform + (ensure-operating-system + (or file expr) + (cond + ((and expr file) + (leave + (G_ "both file and expression cannot be specified~%"))) + (expr + (read/eval expr)) + (file + (load* file %user-module + #:on-error (assoc-ref opts 'on-error))) + (else + (leave (G_ "no configuration specified~%"))))))) (dry? (assoc-ref opts 'dry-run?)) (bootloader? (assoc-ref opts 'install-bootloader?)) @@ -1136,6 +1198,12 @@ (define (process-command command args opts) ((pattern) pattern) (x (leave (G_ "wrong number of arguments~%")))))) (list-generations pattern))) + ((describe) + (match (generation-number %system-profile) + (0 + (error (G_ "no system generation, nothing to describe~%"))) + (generation + (display-system-generation generation)))) ((search) (apply (resolve-subcommand "search") args)) ;; The following commands need to use the store, but they do not need an @@ -1175,7 +1243,8 @@ (define (parse-sub-command arg result) (case action ((build container vm vm-image disk-image reconfigure init extension-graph shepherd-graph - list-generations delete-generations roll-back + list-generations describe + delete-generations roll-back switch-generation search docker-image) (alist-cons 'action action result)) (else (leave (G_ "~a: unknown action~%") action)))))) diff --git a/tests/crate.scm b/tests/crate.scm index c14862ad9f..61933a8de8 100644 --- a/tests/crate.scm +++ b/tests/crate.scm @@ -28,7 +28,7 @@ (define-module (test-crate) #:use-module (ice-9 match) #:use-module (srfi srfi-64)) -(define test-crate +(define test-foo-crate "{ \"crate\": { \"max_version\": \"1.0.0\", @@ -50,7 +50,7 @@ (define test-crate } }") -(define test-dependencies +(define test-foo-dependencies "{ \"dependencies\": [ { @@ -60,9 +60,182 @@ (define test-dependencies ] }") +(define test-root-crate + "{ + \"crate\": { + \"max_version\": \"1.0.0\", + \"name\": \"root\", + \"description\": \"summary\", + \"homepage\": \"http://example.com\", + \"repository\": \"http://example.com\", + \"keywords\": [\"dummy\" \"test\"], + \"categories\": [\"test\"] + \"actual_versions\": [ + { \"id\": \"foo\", + \"num\": \"1.0.0\", + \"license\": \"MIT OR Apache-2.0\", + \"links\": { + \"dependencies\": \"/api/v1/crates/root/1.0.0/dependencies\" + } + } + ] + } +}") + +(define test-root-dependencies + "{ + \"dependencies\": [ + { + \"crate_id\": \"intermediate-1\", + \"kind\": \"normal\", + }, + { + \"crate_id\": \"intermediate-2\", + \"kind\": \"normal\", + } + { + \"crate_id\": \"leaf-alice\", + \"kind\": \"normal\", + }, + { + \"crate_id\": \"leaf-bob\", + \"kind\": \"normal\", + }, + ] +}") + +(define test-intermediate-1-crate + "{ + \"crate\": { + \"max_version\": \"1.0.0\", + \"name\": \"intermediate-1\", + \"description\": \"summary\", + \"homepage\": \"http://example.com\", + \"repository\": \"http://example.com\", + \"keywords\": [\"dummy\" \"test\"], + \"categories\": [\"test\"] + \"actual_versions\": [ + { \"id\": \"intermediate-1\", + \"num\": \"1.0.0\", + \"license\": \"MIT OR Apache-2.0\", + \"links\": { + \"dependencies\": \"/api/v1/crates/intermediate-1/1.0.0/dependencies\" + } + } + ] + } +}") + +(define test-intermediate-1-dependencies + "{ + \"dependencies\": [ + { + \"crate_id\": \"intermediate-2\", + \"kind\": \"normal\", + }, + { + \"crate_id\": \"leaf-alice\", + \"kind\": \"normal\", + }, + { + \"crate_id\": \"leaf-bob\", + \"kind\": \"normal\", + } + ] +}") + +(define test-intermediate-2-crate + "{ + \"crate\": { + \"max_version\": \"1.0.0\", + \"name\": \"intermediate-2\", + \"description\": \"summary\", + \"homepage\": \"http://example.com\", + \"repository\": \"http://example.com\", + \"keywords\": [\"dummy\" \"test\"], + \"categories\": [\"test\"] + \"actual_versions\": [ + { \"id\": \"intermediate-2\", + \"num\": \"1.0.0\", + \"license\": \"MIT OR Apache-2.0\", + \"links\": { + \"dependencies\": \"/api/v1/crates/intermediate-2/1.0.0/dependencies\" + } + } + ] + } +}") + +(define test-intermediate-2-dependencies + "{ + \"dependencies\": [ + { + \"crate_id\": \"leaf-bob\", + \"kind\": \"normal\", + }, + ] +}") + +(define test-leaf-alice-crate + "{ + \"crate\": { + \"max_version\": \"1.0.0\", + \"name\": \"leaf-alice\", + \"description\": \"summary\", + \"homepage\": \"http://example.com\", + \"repository\": \"http://example.com\", + \"keywords\": [\"dummy\" \"test\"], + \"categories\": [\"test\"] + \"actual_versions\": [ + { \"id\": \"leaf-alice\", + \"num\": \"1.0.0\", + \"license\": \"MIT OR Apache-2.0\", + \"links\": { + \"dependencies\": \"/api/v1/crates/leaf-alice/1.0.0/dependencies\" + } + } + ] + } +}") + +(define test-leaf-alice-dependencies + "{ + \"dependencies\": [] +}") + +(define test-leaf-bob-crate + "{ + \"crate\": { + \"max_version\": \"1.0.0\", + \"name\": \"leaf-bob\", + \"description\": \"summary\", + \"homepage\": \"http://example.com\", + \"repository\": \"http://example.com\", + \"keywords\": [\"dummy\" \"test\"], + \"categories\": [\"test\"] + \"actual_versions\": [ + { \"id\": \"leaf-bob\", + \"num\": \"1.0.0\", + \"license\": \"MIT OR Apache-2.0\", + \"links\": { + \"dependencies\": \"/api/v1/crates/leaf-bob/1.0.0/dependencies\" + } + } + ] + } +}") + +(define test-leaf-bob-dependencies + "{ + \"dependencies\": [] +}") + (define test-source-hash "") +(define string->license + (@@ (guix import crate) string->license)) + (test-begin "crate") (test-equal "guix-package->crate-name" @@ -79,14 +252,14 @@ (define test-source-hash (lambda (url . rest) (match url ("https://crates.io/api/v1/crates/foo" - (open-input-string test-crate)) + (open-input-string test-foo-crate)) ("https://crates.io/api/v1/crates/foo/1.0.0/download" (set! test-source-hash (bytevector->nix-base32-string (sha256 (string->bytevector "empty file\n" "utf-8")))) (open-input-string "empty file\n")) ("https://crates.io/api/v1/crates/foo/1.0.0/dependencies" - (open-input-string test-dependencies)) + (open-input-string test-foo-dependencies)) (_ (error "Unexpected URL: " url))))) (match (crate->guix-package "foo") (('package @@ -111,4 +284,180 @@ (define test-source-hash (x (pk 'fail x #f))))) +(test-assert "cargo-recursive-import" + ;; Replace network resources with sample data. + (mock ((guix http-client) http-fetch + (lambda (url . rest) + (match url + ("https://crates.io/api/v1/crates/root" + (open-input-string test-root-crate)) + ("https://crates.io/api/v1/crates/root/1.0.0/download" + (set! test-source-hash + (bytevector->nix-base32-string + (sha256 (string->bytevector "empty file\n" "utf-8")))) + (open-input-string "empty file\n")) + ("https://crates.io/api/v1/crates/root/1.0.0/dependencies" + (open-input-string test-root-dependencies)) + ("https://crates.io/api/v1/crates/intermediate-1" + (open-input-string test-intermediate-1-crate)) + ("https://crates.io/api/v1/crates/intermediate-1/1.0.0/download" + (set! test-source-hash + (bytevector->nix-base32-string + (sha256 (string->bytevector "empty file\n" "utf-8")))) + (open-input-string "empty file\n")) + ("https://crates.io/api/v1/crates/intermediate-1/1.0.0/dependencies" + (open-input-string test-intermediate-1-dependencies)) + ("https://crates.io/api/v1/crates/intermediate-2" + (open-input-string test-intermediate-2-crate)) + ("https://crates.io/api/v1/crates/intermediate-2/1.0.0/download" + (set! test-source-hash + (bytevector->nix-base32-string + (sha256 (string->bytevector "empty file\n" "utf-8")))) + (open-input-string "empty file\n")) + ("https://crates.io/api/v1/crates/intermediate-2/1.0.0/dependencies" + (open-input-string test-intermediate-2-dependencies)) + ("https://crates.io/api/v1/crates/leaf-alice" + (open-input-string test-leaf-alice-crate)) + ("https://crates.io/api/v1/crates/leaf-alice/1.0.0/download" + (set! test-source-hash + (bytevector->nix-base32-string + (sha256 (string->bytevector "empty file\n" "utf-8")))) + (open-input-string "empty file\n")) + ("https://crates.io/api/v1/crates/leaf-alice/1.0.0/dependencies" + (open-input-string test-leaf-alice-dependencies)) + ("https://crates.io/api/v1/crates/leaf-bob" + (open-input-string test-leaf-bob-crate)) + ("https://crates.io/api/v1/crates/leaf-bob/1.0.0/download" + (set! test-source-hash + (bytevector->nix-base32-string + (sha256 (string->bytevector "empty file\n" "utf-8")))) + (open-input-string "empty file\n")) + ("https://crates.io/api/v1/crates/leaf-bob/1.0.0/dependencies" + (open-input-string test-leaf-bob-dependencies)) + (_ (error "Unexpected URL: " url))))) + (match (crate-recursive-import "root") + ;; rust-intermediate-2 has no dependency on the rust-leaf-alice package, so this is a valid ordering + ((('package + ('name "rust-leaf-alice") + ('version (? string? ver)) + ('source + ('origin + ('method 'url-fetch) + ('uri ('crate-uri "leaf-alice" 'version)) + ('file-name + ('string-append 'name "-" 'version ".tar.gz")) + ('sha256 + ('base32 + (? string? hash))))) + ('build-system 'cargo-build-system) + ('home-page "http://example.com") + ('synopsis "summary") + ('description "summary") + ('license ('list 'license:expat 'license:asl2.0))) + ('package + ('name "rust-leaf-bob") + ('version (? string? ver)) + ('source + ('origin + ('method 'url-fetch) + ('uri ('crate-uri "leaf-bob" 'version)) + ('file-name + ('string-append 'name "-" 'version ".tar.gz")) + ('sha256 + ('base32 + (? string? hash))))) + ('build-system 'cargo-build-system) + ('home-page "http://example.com") + ('synopsis "summary") + ('description "summary") + ('license ('list 'license:expat 'license:asl2.0))) + ('package + ('name "rust-intermediate-2") + ('version (? string? ver)) + ('source + ('origin + ('method 'url-fetch) + ('uri ('crate-uri "intermediate-2" 'version)) + ('file-name + ('string-append 'name "-" 'version ".tar.gz")) + ('sha256 + ('base32 + (? string? hash))))) + ('build-system 'cargo-build-system) + ('arguments + ('quasiquote + ('#:cargo-inputs (("rust-leaf-bob" ('unquote rust-leaf-bob)))))) + ('home-page "http://example.com") + ('synopsis "summary") + ('description "summary") + ('license ('list 'license:expat 'license:asl2.0))) + ('package + ('name "rust-intermediate-1") + ('version (? string? ver)) + ('source + ('origin + ('method 'url-fetch) + ('uri ('crate-uri "intermediate-1" 'version)) + ('file-name + ('string-append 'name "-" 'version ".tar.gz")) + ('sha256 + ('base32 + (? string? hash))))) + ('build-system 'cargo-build-system) + ('arguments + ('quasiquote + ('#:cargo-inputs (("rust-intermediate-2" ('unquote rust-intermediate-2)) + ("rust-leaf-alice" ('unquote rust-leaf-alice)) + ("rust-leaf-bob" ('unquote rust-leaf-bob)))))) + ('home-page "http://example.com") + ('synopsis "summary") + ('description "summary") + ('license ('list 'license:expat 'license:asl2.0))) + ('package + ('name "rust-root") + ('version (? string? ver)) + ('source + ('origin + ('method 'url-fetch) + ('uri ('crate-uri "root" 'version)) + ('file-name + ('string-append 'name "-" 'version ".tar.gz")) + ('sha256 + ('base32 + (? string? hash))))) + ('build-system 'cargo-build-system) + ('arguments + ('quasiquote + ('#:cargo-inputs (("rust-intermediate-1" ('unquote rust-intermediate-1)) + ("rust-intermediate-2" ('unquote rust-intermediate-2)) + ("rust-leaf-alice" ('unquote rust-leaf-alice)) + ("rust-leaf-bob" ('unquote rust-leaf-bob)))))) + ('home-page "http://example.com") + ('synopsis "summary") + ('description "summary") + ('license ('list 'license:expat 'license:asl2.0)))) + #t) + (x + (pk 'fail x #f))))) + +(test-equal "licenses: MIT OR Apache-2.0" + '(license:expat license:asl2.0) + (string->license "MIT OR Apache-2.0")) + +(test-equal "licenses: Apache-2.0 / MIT" + '(license:asl2.0 license:expat) + (string->license "Apache-2.0 / MIT")) + +(test-equal "licenses: Apache-2.0 WITH LLVM-exception" + '(license:asl2.0 unknown-license!) + (string->license "Apache-2.0 WITH LLVM-exception")) + +(test-equal "licenses: MIT/Apache-2.0 AND BSD-2-Clause" + '(license:expat license:asl2.0 unknown-license!) + (string->license "MIT/Apache-2.0 AND BSD-2-Clause")) + +(test-equal "licenses: MIT/Apache-2.0" + '(license:expat license:asl2.0) + (string->license "MIT/Apache-2.0")) + (test-end "crate") diff --git a/tests/derivations.scm b/tests/derivations.scm index 6a7fad85b5..ef6cec6c76 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -978,6 +978,24 @@ (define %coreutils #:mode (build-mode check)) (list drv dep)))))) +(test-assert "derivation-input-fold" + (let* ((builder (add-text-to-store %store "my-builder.sh" + "echo hello, world > \"$out\"\n" + '())) + (drv1 (derivation %store "foo" + %bash `(,builder) + #:sources `(,%bash ,builder))) + (drv2 (derivation %store "bar" + %bash `(,builder) + #:inputs `((,drv1)) + #:sources `(,%bash ,builder)))) + (equal? (derivation-input-fold (lambda (input result) + (cons (derivation-input-derivation input) + result)) + '() + (list (derivation-input drv2))) + (list drv1 drv2)))) + (test-assert "substitution-oracle and #:substitute? #f" (with-store store (let* ((dep (build-expression->derivation store "dep" diff --git a/tests/gem.scm b/tests/gem.scm index a12edb294c..5158238d18 100644 --- a/tests/gem.scm +++ b/tests/gem.scm @@ -24,7 +24,6 @@ (define-module (test-gem) #:use-module (gcrypt hash) #:use-module (guix tests) #:use-module ((guix build utils) #:select (delete-file-recursively)) - #:use-module (srfi srfi-41) #:use-module (srfi srfi-64) #:use-module (ice-9 match)) @@ -121,24 +120,23 @@ (define test-bundler-json (values (open-input-string test-bundler-json) (string-length test-bundler-json))) (_ (error "Unexpected URL: " url))))) - (match (stream->list (gem-recursive-import "foo")) + (match (gem-recursive-import "foo") ((('package - ('name "ruby-foo") + ('name "ruby-bar") ('version "1.0.0") ('source ('origin ('method 'url-fetch) - ('uri ('rubygems-uri "foo" 'version)) + ('uri ('rubygems-uri "bar" 'version)) ('sha256 ('base32 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk")))) ('build-system 'ruby-build-system) ('propagated-inputs ('quasiquote - (("bundler" ('unquote 'bundler)) - ("ruby-bar" ('unquote 'ruby-bar))))) - ('synopsis "A cool gem") - ('description "This package provides a cool gem") + (('"bundler" ('unquote 'bundler))))) + ('synopsis "Another cool gem") + ('description "Another cool gem") ('home-page "https://example.com") ('license ('list 'license:expat 'license:asl2.0))) ('package @@ -157,21 +155,22 @@ (define test-bundler-json ('home-page "https://bundler.io/") ('license 'license:expat)) ('package - ('name "ruby-bar") + ('name "ruby-foo") ('version "1.0.0") ('source ('origin ('method 'url-fetch) - ('uri ('rubygems-uri "bar" 'version)) + ('uri ('rubygems-uri "foo" 'version)) ('sha256 ('base32 "1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk")))) ('build-system 'ruby-build-system) ('propagated-inputs ('quasiquote - (('"bundler" ('unquote 'bundler))))) - ('synopsis "Another cool gem") - ('description "Another cool gem") + (("bundler" ('unquote 'bundler)) + ("ruby-bar" ('unquote 'ruby-bar))))) + ('synopsis "A cool gem") + ('description "This package provides a cool gem") ('home-page "https://example.com") ('license ('list 'license:expat 'license:asl2.0)))) #t) diff --git a/tests/guix-lint.sh b/tests/guix-lint.sh index 7ddc7c265b..f0df1fda3a 100644 --- a/tests/guix-lint.sh +++ b/tests/guix-lint.sh @@ -76,3 +76,14 @@ then true; else false; fi # Make sure specifying multiple packages works. guix lint -c inputs-should-be-native dummy dummy@42 dummy + + +# Use --load-path instead. +unset GUIX_PACKAGE_PATH + +out=`guix lint -L $module_dir -c synopsis,description dummy 2>&1` +if [ `grep_warning "$out"` -ne 3 ] +then false; else true; fi + +# Make sure specifying multiple packages works. +guix lint -L $module_dir -c inputs-should-be-native dummy dummy@42 dummy diff --git a/tests/import-utils.scm b/tests/import-utils.scm index c3ab25d788..87dda3238f 100644 --- a/tests/import-utils.scm +++ b/tests/import-utils.scm @@ -24,7 +24,8 @@ (define-module (test-import-utils) #:use-module (guix packages) #:use-module (guix build-system) #:use-module (gnu packages) - #:use-module (srfi srfi-64)) + #:use-module (srfi srfi-64) + #:use-module (ice-9 match)) (test-begin "import-utils") @@ -41,6 +42,26 @@ (define-module (test-import-utils) 'license:lgpl2.0 (license->symbol license:lgpl2.0)) +(test-equal "recursive-import" + '((package ;package expressions in topological order + (name "bar")) + (package + (name "foo") + (inputs `(("bar" ,bar))))) + (recursive-import "foo" 'repo + #:repo->guix-package + (match-lambda* + (("foo" 'repo) + (values '(package + (name "foo") + (inputs `(("bar" ,bar)))) + '("bar"))) + (("bar" 'repo) + (values '(package + (name "bar")) + '()))) + #:guix-name identity)) + (test-assert "alist->package with simple source" (let* ((meta '(("name" . "hello") ("version" . "2.10") diff --git a/tests/processes.scm b/tests/processes.scm index 40454bcbc7..ba518f2d9e 100644 --- a/tests/processes.scm +++ b/tests/processes.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Ludovic Courtès +;;; Copyright © 2019 Mathieu Othacehe ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,15 +33,48 @@ (define-module (test-processes) #:use-module (ice-9 match) #:use-module (ice-9 threads)) +;; When using --system argument, binfmt-misc mechanism may be used. In that +;; case, (guix script processes) won't work because: +;; +;; * ARGV0 is qemu-user and not guix-daemon. +;; * Guix-daemon won't be able to stuff client PID in ARGV1 of forked +;; processes. +;; +;; See: https://lists.gnu.org/archive/html/bug-guix/2019-12/msg00017.html. +;; +;; If we detect that we are running with binfmt emulation, all the following +;; tests must be skipped. + +(define (binfmt-misc?) + (let ((pid (getpid)) + (cmdline (call-with-input-file "/proc/self/cmdline" get-string-all))) + (match (primitive-fork) + (0 (dynamic-wind + (const #t) + (lambda () + (exit + (not (equal? + (call-with-input-file (format #f "/proc/~a/cmdline" pid) + get-string-all) + cmdline)))) + (const #t))) + (x (zero? (cdr (waitpid x))))))) + +(define-syntax-rule (test-assert* description exp) + (begin + (when (binfmt-misc?) + (test-skip 1)) + (test-assert description exp))) + (test-begin "processes") -(test-assert "not a client" +(test-assert* "not a client" (not (find (lambda (session) (= (getpid) (process-id (daemon-session-client session)))) (daemon-sessions)))) -(test-assert "client" +(test-assert* "client" (with-store store (let* ((session (find (lambda (session) (= (getpid) @@ -50,7 +84,7 @@ (define-module (test-processes) (and (kill (process-id daemon) 0) (string-suffix? "guix-daemon" (first (process-command daemon))))))) -(test-assert "client + lock" +(test-assert* "client + lock" (with-store store (call-with-temporary-directory (lambda (directory)