diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm index d18b4504cf..a8b05eb0ff 100644 --- a/build-aux/build-self.scm +++ b/build-aux/build-self.scm @@ -313,7 +313,11 @@ (define fake-git (cons (string-append #$guile-gcrypt "/lib/guile/" (effective-version) "/site-ccache") - %load-compiled-path))) + %load-compiled-path)) + + ;; Disable position recording to save time and space + ;; when loading the package modules. + (read-disable 'positions)) (use-modules (guix store) (guix self) diff --git a/doc/contributing.texi b/doc/contributing.texi index 9459c481a7..5331d3e18a 100644 --- a/doc/contributing.texi +++ b/doc/contributing.texi @@ -827,7 +827,7 @@ your @code{operating-system} configuration: @example (service qemu-binfmt-service-type (qemu-binfmt-configuration - (platforms (lookup-qemu-platforms "arm" "aarch64" "ppc" "mips64el")) + (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el")) (guix-support? #t))) @end example @@ -835,12 +835,11 @@ Then reconfigure your system. You can then build packages for different platforms by specifying the @code{--system} option. For example, to build the "hello" package for -the armhf, aarch64, powerpc, or mips64 architectures, you would run the -following commands, respectively: +the armhf, aarch64, or mips64 architectures, you would run the following +commands, respectively: @example guix build --system=armhf-linux --rounds=2 hello guix build --system=aarch64-linux --rounds=2 hello -guix build --system=powerpc-linux --rounds=2 hello guix build --system=mips64el-linux --rounds=2 hello @end example diff --git a/doc/guix.texi b/doc/guix.texi index d10fbce3a4..616970b505 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -251,6 +251,7 @@ System Configuration * File Systems:: Configuring file system mounts. * Mapped Devices:: Block device extra processing. * User Accounts:: Specifying user accounts. +* Keyboard Layout:: How the system interprets key strokes. * Locales:: Language and cultural convention settings. * Services:: Specifying system services. * Setuid Programs:: Programs running with root privileges. @@ -3620,7 +3621,7 @@ Generation 3 Jun 13 2018 23:31:07 (current) 69 packages upgraded: borg@@1.1.6, cheese@@3.28.0, @dots{} @end example -@ref{Invoking guix describe, @command{guix describe}}, for other ways to +@xref{Invoking guix describe, @command{guix describe}}, for other ways to describe the current status of Guix. This @code{~/.config/guix/current} profile works like any other profile @@ -3665,7 +3666,7 @@ is provided, the subset of generations that match @var{pattern}. The syntax of @var{pattern} is the same as with @code{guix package --list-generations} (@pxref{Invoking guix package}). -@ref{Invoking guix describe}, for a way to display information about the +@xref{Invoking guix describe}, for a way to display information about the current generation only. @item --profile=@var{profile} @@ -5360,10 +5361,6 @@ more. To ensure that libraries written in those languages can find library code they depend on at run time, run-time dependencies must be listed in @code{propagated-inputs} rather than @code{inputs}. -@item @code{self-native-input?} (default: @code{#f}) -This is a Boolean field telling whether the package should use itself as -a native input when cross-compiling. - @item @code{outputs} (default: @code{'("out")}) The list of output names of the package. @xref{Packages with Multiple Outputs}, for typical uses of additional outputs. @@ -5816,6 +5813,11 @@ list of flags passed to the @code{dune} command during the build. The @code{#:jbuild?} parameter can be passed to use the @code{jbuild} command instead of the more recent @code{dune} command while building a package. Its default value is @code{#f}. + +The @code{#:package} parameter can be passed to specify a package name, which +is useful when a package contains multiple packages and you want to build +only one of them. This is equivalent to passing the @code{-p} argument to +@code{dune}. @end defvr @defvr {Scheme Variable} go-build-system @@ -10127,6 +10129,7 @@ instance to support new system services. * File Systems:: Configuring file system mounts. * Mapped Devices:: Block device extra processing. * User Accounts:: Specifying user accounts. +* Keyboard Layout:: How the system interprets key strokes. * Locales:: Language and cultural convention settings. * Services:: Specifying system services. * Setuid Programs:: Programs running with root privileges. @@ -10400,6 +10403,24 @@ the command-line of the kernel---e.g., @code{("console=ttyS0")}. @item @code{bootloader} The system bootloader configuration object. @xref{Bootloader Configuration}. +@item @code{keyboard-layout} (default: @code{#f}) +This field specifies the keyboard layout to use in the console. It can be +either @code{#f}, in which case the default keyboard layout is used (usually +US English), or a @code{} record. + +This keyboard layout is in effect as soon as the kernel has booted. For +instance, it is the keyboard layout in effect when you type a passphrase if +your root file system is on a @code{luks-device-mapping} mapped device +(@pxref{Mapped Devices}). + +@quotation Note +This does @emph{not} specify the keyboard layout used by the bootloader, nor +that used by the graphical display server. @xref{Bootloader Configuration}, +for information on how to specify the bootloader's keyboard layout. @xref{X +Window}, for information on how to specify the keyboard layout used by the X +Window System. +@end quotation + @item @code{initrd-modules} (default: @code{%base-initrd-modules}) @cindex initrd @cindex initial RAM disk @@ -10506,6 +10527,13 @@ details. @item @code{services} (default: @var{%base-services}) A list of service objects denoting system services. @xref{Services}. +@cindex essential services +@item @code{essential-services} (default: ...) +The list of ``essential services''---i.e., things like instances of +@code{system-service-type} and @code{host-name-service-type} (@pxref{Service +Reference}), which are derived from the operating system definition itself. +As a user you should @emph{never} need to touch this field. + @item @code{pam-services} (default: @code{(base-pam-services)}) @cindex PAM @cindex pluggable authentication modules @@ -10902,7 +10930,6 @@ this field must contain the encrypted password, as a string. You can use the @example (user-account (name "charlie") - (home-directory "/home/charlie") (group "users") ;; Specify a SHA-512-hashed initial password. @@ -10969,6 +10996,108 @@ Note that the ``root'' account is not included here. It is a special-case and is automatically added whether or not it is specified. @end defvr +@node Keyboard Layout +@section Keyboard Layout + +To specify what each key of your keyboard does, you need to tell the operating +system what @dfn{keyboard layout} you want to use. The default, when nothing +is specified, is the US English QWERTY layout for 105-key PC keyboards. +However, German speakers will usually prefer the German QWERTZ layout, French +speakers will want the AZERTY layout, and so on; hackers might prefer Dvorak +or bépo, and they might even want to further customize the effect of some of +the keys. This section explains how to get that done. + +@cindex keyboard layout, definition +There are three components that will want to know about your keyboard layout: + +@itemize +@item +The @emph{bootloader} may want to know what keyboard layout you want to use +(@pxref{Bootloader Configuration, @code{keyboard-layout}}). This is useful if +you want, for instance, to make sure that you can type the passphrase of your +encrypted root partition using the right layout. + +@item +The @emph{operating system kernel}, Linux, will need that so that the console +is properly configured (@pxref{operating-system Reference, +@code{keyboard-layout}}). + +@item +The @emph{graphical display server}, usually Xorg, also has its own idea of +the keyboard layout (@pxref{X Window, @code{keyboard-layout}}). +@end itemize + +Guix allows you to configure all three separately but, fortunately, it allows +you to share the same keyboard layout for all three components. + +@cindex XKB, keyboard layouts +Keyboard layouts are represented by records created by the +@code{keyboard-layout} procedure of @code{(gnu system keyboard)}. Following +the X Keyboard extension (XKB), each layout has four attributes: a name (often +a language code such as ``fi'' for Finnish or ``jp'' for Japanese), an +optional variant name, an optional keyboard model name, and a possibly empty +list of additional options. In most cases the layout name is all you care +about. Here are a few example: + +@example +;; The German QWERTZ layout. Here we assume a standard +;; "pc105" keyboard model. +(keyboard-layout "de") + +;; The bépo variant of the French layout. +(keyboard-layout "fr" "bepo") + +;; The Catalan layout. +(keyboard-layout "es" "cat") + +;; The Latin American Spanish layout. In addition, the +;; "Caps Lock" key is used as an additional "Ctrl" key, +;; and the "Menu" key is used as a "Compose" key to enter +;; accented letters. +(keyboard-layout "latam" + #:options '("ctrl:nocaps" "compose:menu")) + +;; The Russian layout for a ThinkPad keyboard. +(keyboard-layout "ru" #:model "thinkpad") + +;; The "US international" layout, which is the US layout plus +;; dead keys to enter accented characters. This is for an +;; Apple MacBook keyboard. +(keyboard-layout "us" "intl" #:model "macbook78") +@end example + +See the @file{share/X11/xkb} directory of the @code{xkeyboard-config} package +for a complete list of supported layouts, variants, and models. + +@cindex keyboard layout, configuration +Let's say you want your system to use the Turkish keyboard layout throughout +your system---bootloader, console, and Xorg. Here's what your system +configuration would look like: + +@lisp +;; Using the Turkish layout for the bootloader, the console, +;; and for Xorg. + +(operating-system + ;; ... + (keyboard-layout (keyboard-layout "tr")) ;for the console + (bootloader (bootloader-configuration + (bootloader grub-efi-bootloader) + (target "/boot/efi") + (keyboard-layout keyboard-layout))) ;for GRUB + (services (modify-services %desktop-services + (gdm-service-type config => + (gdm-configuration + (inherit config) + (xorg-configuration + (xorg-configuration ;for Xorg + (keyboard-layout keyboard-layout)))))))) +@end lisp + +In the example above, for GRUB and for Xorg, we just refer to the +@code{keyboard-layout} field defined above, but we could just as well refer to +a different layout. + @node Locales @section Locales @@ -13161,7 +13290,13 @@ Package object of the Open vSwitch. Support for the X Window graphical display system---specifically Xorg---is provided by the @code{(gnu services xorg)} module. Note that there is no @code{xorg-service} procedure. Instead, the X server is -started by the @dfn{login manager}, by default SLiM. +started by the @dfn{login manager}, by default the GNOME Display Manager (GDM). + +@cindex GDM +@cindex GNOME, login manager +GDM of course allows users to log in into window managers and desktop +environments other than GNOME; for those using GNOME, GDM is required for +features such as automatic screen locking. @cindex window manager To use X11, you must install at least one @dfn{window manager}---for @@ -13169,23 +13304,59 @@ example the @code{windowmaker} or @code{openbox} packages---preferably by adding it to the @code{packages} field of your operating system definition (@pxref{operating-system Reference, system-wide packages}). -@defvr {Scheme Variable} slim-service-type -This is the type for the SLiM graphical login manager for X11. +@defvr {Scheme Variable} gdm-service-type +This is the type for the @uref{https://wiki.gnome.org/Projects/GDM/, GNOME +Desktop Manager} (GDM), a program that manages graphical display servers and +handles graphical user logins. Its value must be a @code{gdm-configuration} +(see below.) @cindex session types (X11) @cindex X11 session types -SLiM looks for @dfn{session types} described by the @file{.desktop} files in -@file{/run/current-system/profile/share/xsessions} and allows users to -choose a session from the log-in screen using @kbd{F1}. Packages such -as @code{xfce}, @code{sawfish}, and @code{ratpoison} provide -@file{.desktop} files; adding them to the system-wide set of packages -automatically makes them available at the log-in screen. +GDM looks for @dfn{session types} described by the @file{.desktop} files in +@file{/run/current-system/profile/share/xsessions} and allows users to choose +a session from the log-in screen. Packages such as @code{gnome}, @code{xfce}, +and @code{i3} provide @file{.desktop} files; adding them to the system-wide +set of packages automatically makes them available at the log-in screen. In addition, @file{~/.xsession} files are honored. When available, @file{~/.xsession} must be an executable that starts a window manager and/or other X clients. @end defvr +@deftp {Data Type} gdm-configuration +@table @asis +@item @code{auto-login?} (default: @code{#f}) +@itemx @code{default-user} (default: @code{#f}) +When @code{auto-login?} is false, GDM presents a log-in screen. + +When @code{auto-login?} is true, GDM logs in directly as +@code{default-user}. + +@item @code{gnome-shell-assets} (default: ...) +List of GNOME Shell assets needed by GDM: icon theme, fonts, etc. + +@item @code{xorg-configuration} (default: @code{(xorg-configuration)}) +Configuration of the Xorg graphical server. + +@item @code{xsession} (default: @code{(xinitrc)}) +Script to run before starting a X session. + +@item @code{dbus-daemon} (default: @code{dbus-daemon-wrapper}) +File name of the @code{dbus-daemon} executable. + +@item @code{gdm} (default: @code{gdm}) +The GDM package to use. +@end table +@end deftp + +@defvr {Scheme Variable} slim-service-type +This is the type for the SLiM graphical login manager for X11. + +Like GDM, SLiM looks for session types described by @file{.desktop} files and +allows users to choose a session from the log-in screen using @kbd{F1}. It +also honors @file{~/.xsession} files. +@end defvr + @deftp {Data Type} slim-configuration Data type representing the configuration of @code{slim-service-type}. @@ -13218,8 +13389,8 @@ your user profile. Failing to do that, if @code{auto-login-session} is false, you will be unable to log in. @end quotation -@item @code{startx} (default: @code{(xorg-start-command)}) -The command used to start the X11 graphical server. +@item @code{xorg-configuration} (default @code{(xorg-configuration)}) +Configuration of the Xorg graphical server. @item @code{xauth} (default: @code{xauth}) The XAuth package to use. @@ -13295,8 +13466,8 @@ Script to run before starting a wayland session. @item @code{sessions-directory} (default "/run/current-system/profile/share/wayland-sessions") Directory to look for desktop files starting wayland sessions. -@item @code{xorg-server-path} (default @code{xorg-start-command}) -Path to xorg-server. +@item @code{xorg-configuration} (default @code{(xorg-configuration)}) +Configuration of the Xorg graphical server. @item @code{xauth-path} (default @code{#~(string-append #$xauth "/bin/xauth")}) Path to xauth. @@ -13319,9 +13490,6 @@ Directory to look for desktop files starting X sessions. @item @code{minimum-vt} (default: 7) Minimum VT to use. -@item @code{xserver-arguments} (default "-nolisten tcp") -Arguments to pass to xorg-server. - @item @code{auto-login-user} (default "") User to use for auto-login. @@ -13347,98 +13515,62 @@ type @code{}. @end example @end deffn -@deffn {Scheme Procedure} xorg-start-command [#:guile] @ - [#:modules %default-xorg-modules] @ - [#:fonts %default-xorg-fonts] @ - [#:configuration-file (xorg-configuration-file @dots{})] @ - [#:xorg-server @var{xorg-server}] - [#:xserver-arguments '("-nolisten" "tcp")] -Return a @code{startx} script in which @var{modules}, a list of X module -packages, and @var{fonts}, a list of X font directories, are available. See -@code{xorg-wrapper} for more details on the arguments. The result should be -used in place of @code{startx}. +@cindex Xorg, configuration +@deftp {Data Type} xorg-configuration +This data type represents the configuration of the Xorg graphical display +server. Note that there is not Xorg service; instead, the X server is started +by a ``display manager'' such as GDM, SDDM, and SLiM. Thus, the configuration +of these display managers aggregates an @code{xorg-configuration} record. + +@table @asis +@item @code{modules} (default: @code{%default-xorg-modules}) +This is a list of @dfn{module packages} loaded by the Xorg +server---e.g., @code{xf86-video-vesa}, @code{xf86-input-keyboard}, and so on. + +@item @code{fonts} (default: @code{%default-xorg-fonts}) +This is a list of font directories to add to the server's @dfn{font path}. + +@item @code{drivers} (default: @code{'()}) +This must be either the empty list, in which case Xorg chooses a graphics +driver automatically, or a list of driver names that will be tried in this +order---e.g., @code{("modesetting" "vesa")}. + +@item @code{resolutions} (default: @code{'()}) +When @code{resolutions} is the empty list, Xorg chooses an appropriate screen +resolution. Otherwise, it must be a list of resolutions---e.g., @code{((1024 +768) (640 480))}. + +@cindex keyboard layout, for Xorg +@cindex keymap, for Xorg +@item @code{keyboard-layout} (default: @code{#f}) +If this is @code{#f}, Xorg uses the default keyboard layout---usually US +English (``qwerty'') for a 105-key PC keyboard. + +Otherwise this must be a @code{keyboard-layout} object specifying the keyboard +layout in use when Xorg is running. @xref{Keyboard Layout}, for more +information on how to specify the keyboard layout. + +@item @code{extra-config} (default: @code{'()}) +This is a list of strings or objects appended to the configuration file. It +is used to pass extra text to be added verbatim to the configuration file. + +@item @code{server} (default: @code{xorg-server}) +This is the package providing the Xorg server. + +@item @code{server-arguments} (default: @code{%default-xorg-server-arguments}) +This is the list of command-line arguments to pass to the X server. The +default is @code{-nolisten tcp}. +@end table +@end deftp + +@deffn {Scheme Procedure} xorg-start-command [@var{config}] +Return a @code{startx} script in which the modules, fonts, etc. specified +in @var{config}, are available. The result should be used in place of +@code{startx}. Usually the X server is started by a login manager. @end deffn -@cindex @code{-listen tcp}, for X11. -This procedure is useful to override command line options for the X server, -such as having it listen to over TCP: - -@example -(operating-system - ... - (services - (modify-services %desktop-services - (slim-service-type config => - (slim-configuration - (inherit config) - (startx (xorg-start-command - #:xserver-arguments '("-listen" "tcp")))))))) -@end example - -@deffn {Scheme Procedure} xorg-configuration-file @ - [#:modules %default-xorg-modules] @ - [#:fonts %default-xorg-fonts] @ - [#:drivers '()] [#:resolutions '()] [#:extra-config '()] -Return a configuration file for the Xorg server containing search paths for -all the common drivers. - -@var{modules} must be a list of @dfn{module packages} loaded by the Xorg -server---e.g., @code{xf86-video-vesa}, @code{xf86-input-keyboard}, and so on. -@var{fonts} must be a list of font directories to add to the server's -@dfn{font path}. - -@var{drivers} must be either the empty list, in which case Xorg chooses a -graphics driver automatically, or a list of driver names that will be tried in -this order---e.g., @code{("modesetting" "vesa")}. - -Likewise, when @var{resolutions} is the empty list, Xorg chooses an -appropriate screen resolution; otherwise, it must be a list of -resolutions---e.g., @code{((1024 768) (640 480))}. - -Last, @var{extra-config} is a list of strings or objects appended to the -configuration file. It is used to pass extra text to be -added verbatim to the configuration file. - -@cindex keymap -@cindex keyboard layout -This procedure is especially useful to configure a different keyboard layout -than the default US keymap. For instance, to use the ``bépo'' keymap by -default on the display manager: - -@example -(define bepo-evdev - "Section \"InputClass\" - Identifier \"evdev keyboard catchall\" - Driver \"evdev\" - MatchIsKeyboard \"on\" - Option \"xkb_layout\" \"fr\" - Option \"xkb_variant\" \"bepo\" -EndSection") - -(operating-system - ... - (services - (modify-services %desktop-services - (slim-service-type config => - (slim-configuration - (inherit config) - (startx (xorg-start-command - #:configuration-file - (xorg-configuration-file - #:extra-config - (list bepo-evdev))))))))) -@end example - -The @code{MatchIsKeyboard} line specifies that we only apply the configuration -to keyboards. Without this line, other devices such as touchpad may not work -correctly because they will be attached to the wrong driver. In this example, -the user typically used @code{setxkbmap fr bepo} to set their favorite keymap -once logged in. The first argument corresponds to the layout, while the second -argument corresponds to the variant. The @code{xkb_variant} line can be omitted -to select the default variant. -@end deffn @deffn {Scheme Procedure} screen-locker-service @var{package} [@var{program}] Add @var{package}, a package for a screen locker or screen saver whose @@ -14301,7 +14433,7 @@ The @code{(gnu services desktop)} module provides services that are usually useful in the context of a ``desktop'' setup---that is, on a machine running a graphical display server, possibly with graphical user interfaces, etc. It also defines services that provide specific desktop -environments like GNOME, XFCE or MATE. +environments like GNOME, Xfce or MATE. To simplify things, the module defines a variable containing the set of services that users typically expect on a machine with a graphical @@ -14312,7 +14444,7 @@ This is a list of services that builds upon @var{%base-services} and adds or adjusts services for a typical ``desktop'' setup. In particular, it adds a graphical login manager (@pxref{X Window, -@code{slim-service}}), screen lockers, a network management tool +@code{gdm-service-type}}), screen lockers, a network management tool (@pxref{Networking Services, @code{network-manager-service-type}}), energy and color management services, the @code{elogind} login and seat manager, the Polkit privilege service, the GeoClue location service, the @@ -14326,16 +14458,16 @@ The @var{%desktop-services} variable can be used as the @code{services} field of an @code{operating-system} declaration (@pxref{operating-system Reference, @code{services}}). -Additionally, the @code{gnome-desktop-service}, +Additionally, the @code{gnome-desktop-service-type}, @code{xfce-desktop-service}, @code{mate-desktop-service-type} and -@code{enlightenment-desktop-service-type} procedures can add GNOME, XFCE, MATE +@code{enlightenment-desktop-service-type} procedures can add GNOME, Xfce, MATE and/or Enlightenment to a system. To ``add GNOME'' means that system-level services like the backlight adjustment helpers and the power management utilities are added to the system, extending @code{polkit} and @code{dbus} appropriately, allowing GNOME to operate with elevated privileges on a limited number of special-purpose system interfaces. Additionally, -adding a service made by @code{gnome-desktop-service} adds the GNOME -metapackage to the system profile. Likewise, adding the XFCE service +adding a service made by @code{gnome-desktop-service-type} adds the GNOME +metapackage to the system profile. Likewise, adding the Xfce service not only adds the @code{xfce} metapackage to the system profile, but it also gives the Thunar file manager the ability to open a ``root-mode'' file management window, if the user authenticates using the @@ -14351,25 +14483,50 @@ functionality to work as expetected. The desktop environments in Guix use the Xorg display server by default. If you'd like to use the newer display server protocol -called Wayland, you need to use the @code{sddm-service} instead of the -@code{slim-service} for the graphical login manager. You should then +called Wayland, you need to use the @code{sddm-service} instead of +GDM as the graphical login manager. You should then select the ``GNOME (Wayland)'' session in SDDM. Alternatively you can also try starting GNOME on Wayland manually from a TTY with the command ``XDG_SESSION_TYPE=wayland exec dbus-run-session gnome-session``. Currently only GNOME has support for Wayland. -@deffn {Scheme Procedure} gnome-desktop-service -Return a service that adds the @code{gnome} package to the system -profile, and extends polkit with the actions from -@code{gnome-settings-daemon}. -@end deffn +@defvr {Scheme Variable} gnome-desktop-service-type +This is the type of the service that adds the @uref{https://www.gnome.org, +GNOME} desktop environment. Its value is a @code{gnome-desktop-configuration} +object (see below.) -@deffn {Scheme Procedure} xfce-desktop-service -Return a service that adds the @code{xfce} package to the system profile, -and extends polkit with the ability for @code{thunar} to manipulate the -file system as root from within a user session, after the user has -authenticated with the administrator's password. -@end deffn +This service adds the @code{gnome} package to the system profile, and extends +polkit with the actions from @code{gnome-settings-daemon}. +@end defvr + +@deftp {Data Type} gnome-desktop-configuration +Configuration record for the GNOME desktop environment. + +@table @asis +@item @code{gnome} (default @code{gnome}) +The GNOME package to use. +@end table +@end deftp + +@defvr {Scheme Variable} xfce-desktop-service-type +This is the type of a service to run the @uref{Xfce, https://xfce.org/} +desktop environment. Its value is an @code{xfce-desktop-configuration} object +(see below.) + +This service that adds the @code{xfce} package to the system profile, and +extends polkit with the ability for @code{thunar} to manipulate the file +system as root from within a user session, after the user has authenticated +with the administrator's password. +@end defvr + +@deftp {Data Type} xfce-desktop-configuration +Configuration record for the Xfce desktop environment. + +@table @asis +@item @code{xfce} (default @code{xfce}) +The Xfce package to use. +@end table +@end deftp @deffn {Scheme Variable} mate-desktop-service-type This is the type of the service that runs the @uref{https://mate-desktop.org/, @@ -14402,9 +14559,9 @@ The enlightenment package to use. @end table @end deftp -Because the GNOME, XFCE and MATE desktop services pull in so many packages, +Because the GNOME, Xfce and MATE desktop services pull in so many packages, the default @code{%desktop-services} variable doesn't include any of -them by default. To add GNOME, XFCE or MATE, just @code{cons} them onto +them by default. To add GNOME, Xfce or MATE, just @code{cons} them onto @code{%desktop-services} in the @code{services} field of your @code{operating-system}: @@ -14414,8 +14571,8 @@ them by default. To add GNOME, XFCE or MATE, just @code{cons} them onto (operating-system ... ;; cons* adds items to the list given as its last argument. - (services (cons* (gnome-desktop-service) - (xfce-desktop-service) + (services (cons* (service gnome-desktop-service-type) + (service xfce-desktop-service) %desktop-services)) ...) @end example @@ -21624,7 +21781,7 @@ emulated: @example (service qemu-binfmt-service-type (qemu-binfmt-configuration - (platforms (lookup-qemu-platforms "arm" "aarch64" "ppc")))) + (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el")))) @end example In this example, we enable transparent emulation for the ARM and aarch64 @@ -23528,6 +23685,7 @@ here is how to use it and customize it further. @cindex initial RAM disk @deffn {Scheme Procedure} raw-initrd @var{file-systems} @ [#:linux-modules '()] [#:mapped-devices '()] @ + [#:keyboard-layout #f] @ [#:helper-packages '()] [#:qemu-networking? #f] [#:volatile-root? #f] Return a derivation that builds a raw initrd. @var{file-systems} is a list of file systems to be mounted by the initrd, possibly in addition to @@ -23539,6 +23697,12 @@ the root file system specified on the kernel command line via @code{--root}. include @code{e2fsck/static} or other packages needed by the initrd to check the root file system. +When true, @var{keyboard-layout} is a @code{} record denoting +the desired console keyboard layout. This is done before @var{mapped-devices} +are set up and before @var{file-systems} are mounted such that, should the +user need to enter a passphrase or use the REPL, this happens using the +intended keyboard layout. + When @var{qemu-networking?} is true, set up networking with the standard QEMU parameters. When @var{virtio?} is true, load additional modules so that the initrd can be used as a QEMU guest with para-virtualized I/O drivers. @@ -23548,7 +23712,8 @@ to it are lost. @end deffn @deffn {Scheme Procedure} base-initrd @var{file-systems} @ - [#:mapped-devices '()] [#:qemu-networking? #f] [#:volatile-root? #f]@ + [#:mapped-devices '()] [#:keyboard-layout #f] @ + [#:qemu-networking? #f] [#:volatile-root? #f] @ [#:linux-modules '()] Return as a file-like object a generic initrd, with kernel modules taken from @var{linux}. @var{file-systems} is a list of file-systems to be @@ -23556,6 +23721,12 @@ mounted by the initrd, possibly in addition to the root file system specified on the kernel command line via @code{--root}. @var{mapped-devices} is a list of device mappings to realize before @var{file-systems} are mounted. +When true, @var{keyboard-layout} is a @code{} record denoting +the desired console keyboard layout. This is done before @var{mapped-devices} +are set up and before @var{file-systems} are mounted such that, should the +user need to enter a passphrase or use the REPL, this happens using the +intended keyboard layout. + @var{qemu-networking?} and @var{volatile-root?} behaves as in @code{raw-initrd}. The initrd is automatically populated with all the kernel modules necessary @@ -23649,6 +23820,19 @@ current system. The number of seconds to wait for keyboard input before booting. Set to 0 to boot immediately, and to -1 to wait indefinitely. +@cindex keyboard layout, for the bootloader +@item @code{keyboard-layout} (default: @code{#f}) +If this is @code{#f}, the bootloader's menu (if any) uses the default keyboard +layout, usually US@tie{}English (``qwerty''). + +Otherwise, this must be a @code{keyboard-layout} object (@pxref{Keyboard +Layout}). + +@quotation Note +This option is currently ignored by bootloaders other than @code{grub} and +@code{grub-efi}. +@end quotation + @item @code{theme} (default: @var{#f}) The bootloader theme object describing the theme to use. If no theme is provided, some bootloaders might use a default theme, that's true diff --git a/etc/snippets/text-mode/guix-commit-message-rename-package b/etc/snippets/text-mode/guix-commit-message-rename-package new file mode 100644 index 0000000000..9695ca1b3d --- /dev/null +++ b/etc/snippets/text-mode/guix-commit-message-rename-package @@ -0,0 +1,20 @@ +# -*- mode: snippet -*- +# name: guix-commit-message-rename-package +# key: rename +# condition: git-commit-mode +# -- +gnu: ${1:`(with-temp-buffer + (magit-git-wash #'magit-diff-wash-diffs + "diff" "--staged") + (beginning-of-buffer) + (when (search-forward "-(define-public " nil 'noerror) + (thing-at-point 'sexp 'no-properties)))`}: Rename package to ${2:`(with-temp-buffer + (magit-git-wash #'magit-diff-wash-diffs + "diff" "--staged") + (beginning-of-buffer) + (when (search-forward "+(define-public " nil 'noerror) + (thing-at-point 'sexp 'no-properties)))`}. + +* `(car (magit-staged-files))` ($1): Define in terms of +'deprecated-package'. +($2): New variable, formerly known as "$1". \ No newline at end of file diff --git a/gnu.scm b/gnu.scm index 3e7e7c0ebc..2c29b6dc3f 100644 --- a/gnu.scm +++ b/gnu.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès +;;; Copyright © 2014, 2015, 2016, 2017, 2019 Ludovic Courtès ;;; Copyright © 2015 Joshua S. Grant ;;; Copyright © 2017 Mathieu Othacehe ;;; @@ -45,6 +45,7 @@ (define %public-modules (gnu system file-systems) (gnu bootloader) (gnu bootloader grub) + (gnu system keyboard) (gnu system pam) (gnu system shadow) ; 'user-account' (gnu system linux-initrd) diff --git a/gnu/bootloader.scm b/gnu/bootloader.scm index a32bf5ec67..a381f67145 100644 --- a/gnu/bootloader.scm +++ b/gnu/bootloader.scm @@ -47,6 +47,7 @@ (define-module (gnu bootloader) bootloader-configuration-menu-entries bootloader-configuration-default-entry bootloader-configuration-timeout + bootloader-configuration-keyboard-layout bootloader-configuration-theme bootloader-configuration-terminal-outputs bootloader-configuration-terminal-inputs @@ -104,27 +105,27 @@ (define-record-type* (define-record-type* bootloader-configuration make-bootloader-configuration bootloader-configuration? - (bootloader bootloader-configuration-bootloader) ; - (target bootloader-configuration-target ; string - (default #f)) - (menu-entries bootloader-configuration-menu-entries ; list of - (default '())) - (default-entry bootloader-configuration-default-entry ; integer - (default 0)) - (timeout bootloader-configuration-timeout ; seconds as integer - (default 5)) - (theme bootloader-configuration-theme ; bootloader-specific theme - (default #f)) - (terminal-outputs bootloader-configuration-terminal-outputs ; list of symbols - (default '(gfxterm))) - (terminal-inputs bootloader-configuration-terminal-inputs ; list of symbols - (default '())) - (serial-unit bootloader-configuration-serial-unit ; integer | #f - (default #f)) - (serial-speed bootloader-configuration-serial-speed ; integer | #f - (default #f)) - (additional-configuration bootloader-configuration-additional-configuration ; record - (default #f))) + (bootloader bootloader-configuration-bootloader) ; + (target bootloader-configuration-target ;string + (default #f)) + (menu-entries bootloader-configuration-menu-entries ;list of + (default '())) + (default-entry bootloader-configuration-default-entry ;integer + (default 0)) + (timeout bootloader-configuration-timeout ;seconds as integer + (default 5)) + (keyboard-layout bootloader-configuration-keyboard-layout ; | #f + (default #f)) + (theme bootloader-configuration-theme ;bootloader-specific theme + (default #f)) + (terminal-outputs bootloader-configuration-terminal-outputs ;list of symbols + (default '(gfxterm))) + (terminal-inputs bootloader-configuration-terminal-inputs ;list of symbols + (default '())) + (serial-unit bootloader-configuration-serial-unit ;integer | #f + (default #f)) + (serial-speed bootloader-configuration-serial-speed ;integer | #f + (default #f))) ;;; diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm index 14aede72c5..e97a17b3e2 100644 --- a/gnu/bootloader/grub.scm +++ b/gnu/bootloader/grub.scm @@ -27,8 +27,10 @@ (define-module (gnu bootloader grub) #:use-module (gnu bootloader) #:use-module (gnu system uuid) #:use-module (gnu system file-systems) + #:use-module (gnu system keyboard) #:autoload (gnu packages bootloaders) (grub) #:autoload (gnu packages gtk) (guile-cairo guile-rsvg) + #:autoload (gnu packages xorg) (xkeyboard-config) #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (srfi srfi-1) @@ -219,6 +221,26 @@ (define image ;;; Configuration file. ;;; +(define* (keyboard-layout-file layout + #:key + (grub grub)) + "Process the X keyboard layout description LAYOUT, a record, +and return a file in the format for GRUB keymaps. LAYOUT must be present in +the 'share/X11/xkb/symbols/' directory of 'xkeyboard-config'." + (define builder + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + + ;; 'grub-kbdcomp' passes all its arguments but '-o' to 'ckbcomp' + ;; (from the 'console-setup' package). + (invoke #$(file-append grub "/bin/grub-mklayout") + "-i" #+(keyboard-layout->console-keymap layout) + "-o" #$output)))) + + (computed-file (string-append "grub-keymap." (keyboard-layout-name layout)) + builder)) + (define (grub-setup-io config) "Return GRUB commands to configure the input / output interfaces. The result is a string that can be inserted in grub.cfg." @@ -330,6 +352,18 @@ (define sugar #:system system #:port #~port)) + (define keyboard-layout-config + (let ((layout (bootloader-configuration-keyboard-layout config)) + (grub (bootloader-package + (bootloader-configuration-bootloader config)))) + #~(let ((keymap #$(and layout + (keyboard-layout-file layout #:grub grub)))) + (when keymap + (format port "\ +terminal_input at_keyboard +insmod keylayouts +keymap ~a~%" keymap))))) + (define builder #~(call-with-output-file #$output (lambda (port) @@ -338,6 +372,7 @@ (define builder # will be lost upon reconfiguration. ") #$sugar + #$keyboard-layout-config (format port " set default=~a set timeout=~a~%" diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm index 44b3506284..a35d18ad7c 100644 --- a/gnu/build/linux-boot.scm +++ b/gnu/build/linux-boot.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès ;;; Copyright © 2017 Mathieu Othacehe ;;; ;;; This file is part of GNU Guix. @@ -437,6 +437,7 @@ (define (switch-root root) (define* (boot-system #:key (linux-modules '()) linux-module-directory + keymap-file qemu-guest-networking? volatile-root? pre-mount @@ -444,7 +445,8 @@ (define* (boot-system #:key (on-error 'debug)) "This procedure is meant to be called from an initrd. Boot a system by first loading LINUX-MODULES (a list of module names) from -LINUX-MODULE-DIRECTORY, then setting up QEMU guest networking if +LINUX-MODULE-DIRECTORY, then installing KEYMAP-FILE with 'loadkeys' (if +KEYMAP-FILE is true), then setting up QEMU guest networking if QEMU-GUEST-NETWORKING? is true, calling PRE-MOUNT, mounting the file systems specified in MOUNTS, and finally booting into the new root if any. The initrd supports kernel command-line options '--load', '--root', and '--repl'. @@ -491,6 +493,15 @@ (define (lookup-module name) #:lookup-module lookup-module) (map lookup-module linux-modules)) + (when keymap-file + (let ((status (system* "loadkeys" keymap-file))) + (unless (zero? status) + ;; Emit a warning rather than abort when we cannot load + ;; KEYMAP-FILE. + (format (current-error-port) + "warning: 'loadkeys' exited with status ~a~%" + status)))) + (when qemu-guest-networking? (unless (configure-qemu-networking) (display "network interface is DOWN\n"))) diff --git a/gnu/installer.scm b/gnu/installer.scm index 479d940b4a..584ca3842f 100644 --- a/gnu/installer.scm +++ b/gnu/installer.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Mathieu Othacehe +;;; Copyright © 2019 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,13 +43,17 @@ (define-module (gnu installer) #:use-module (srfi srfi-1) #:export (installer-program)) -(define not-config? - ;; Select (guix …) and (gnu …) modules, except (guix config). +(define module-to-import? + ;; Return true for modules that should be imported. For (gnu system …) and + ;; (gnu packages …) modules, we simply add the whole 'guix' package via + ;; 'with-extensions' (to avoid having to rebuild it all), which is why these + ;; modules are excluded here. (match-lambda (('guix 'config) #f) - (('guix rest ...) #t) - (('gnu rest ...) #t) - (rest #f))) + (('gnu 'installer _ ...) #t) + (('gnu 'build _ ...) #t) + (('guix 'build _ ...) #t) + (_ #f))) (define* (build-compiled-file name locale-builder) "Return a file-like object that evalutes the gexp LOCALE-BUILDER and store @@ -156,7 +161,8 @@ (define* (compute-keymap-step) (lambda (models layouts) ((installer-keymap-page current-installer) layouts))))) - (#$apply-keymap result)))) + (#$apply-keymap result) + result))) (define (installer-steps) (let ((locale-step (compute-locale-step @@ -208,7 +214,8 @@ (define (installer-steps) (id 'keymap) (description (G_ "Keyboard mapping selection")) (compute (lambda _ - (#$keymap-step current-installer)))) + (#$keymap-step current-installer))) + (configuration-formatter keyboard-layout->configuration)) ;; Run a partitioning tool allowing the user to modify ;; partition tables, partitions and their mount points. @@ -293,13 +300,15 @@ (define modules "gnu/installer")) (define installer-builder + ;; Note: Include GUIX as an extension to get all the (gnu system …), (gnu + ;; packages …), etc. modules. (with-extensions (list guile-gcrypt guile-newt guile-parted guile-bytestructures - guile-json) + guile-json guile-git guix) (with-imported-modules `(,@(source-module-closure `(,@modules (guix build utils)) - #:select? not-config?) + #:select? module-to-import?) ((guix config) => ,(make-config.scm))) #~(begin (use-modules (gnu installer record) @@ -313,6 +322,8 @@ (define installer-builder (gnu installer timezone) (gnu installer user) (gnu installer newt) + ((gnu installer newt keymap) + #:select (keyboard-layout->configuration)) (guix i18n) (guix build utils) (ice-9 match)) diff --git a/gnu/installer/newt/keymap.scm b/gnu/installer/newt/keymap.scm index 3e765bfdd4..948b54783c 100644 --- a/gnu/installer/newt/keymap.scm +++ b/gnu/installer/newt/keymap.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Mathieu Othacehe +;;; Copyright © 2019 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,7 +28,9 @@ (define-module (gnu installer newt keymap) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) - #:export (run-keymap-page)) + #:use-module (ice-9 match) + #:export (run-keymap-page + keyboard-layout->configuration)) (define (run-layout-page layouts layout->text) (let ((title (G_ "Layout"))) @@ -120,3 +123,11 @@ (define (format-result result) (list layout (or variant "")))) (format-result (run-installer-steps #:steps keymap-steps))) + +(define (keyboard-layout->configuration keymap) + "Return the operating system configuration snippet to install KEYMAP." + (match keymap + ((name "") + `((keyboard-layout (keyboard-layout ,name)))) + ((name variant) + `((keyboard-layout (keyboard-layout ,name ,variant)))))) diff --git a/gnu/installer/newt/page.scm b/gnu/installer/newt/page.scm index 23fbfcce76..8b3fd488e9 100644 --- a/gnu/installer/newt/page.scm +++ b/gnu/installer/newt/page.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Mathieu Othacehe +;;; Copyright © 2019 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,6 +30,7 @@ (define-module (gnu installer newt page) draw-connecting-page run-input-page run-error-page + run-confirmation-page run-listbox-selection-page run-scale-page run-checkbox-tree-page @@ -141,6 +143,42 @@ (define (run-error-page text title) (newt-set-color COLORSET-ROOT "white" "blue") (destroy-form-and-pop form))) +(define* (run-confirmation-page text title + #:key (exit-button-procedure (const #f))) + "Run a page to inform the user of an error. The page contains the given TEXT +to explain the error and an \"OK\" button to acknowledge the error. The title +of the page is set to TITLE." + (let* ((text-box + (make-reflowed-textbox -1 -1 text 40 + #:flags FLAG-BORDER)) + (ok-button (make-button -1 -1 (G_ "Continue"))) + (exit-button (make-button -1 -1 (G_ "Exit"))) + (grid (vertically-stacked-grid + GRID-ELEMENT-COMPONENT text-box + GRID-ELEMENT-SUBGRID + (horizontal-stacked-grid + GRID-ELEMENT-COMPONENT ok-button + GRID-ELEMENT-COMPONENT exit-button))) + (form (make-form))) + + (add-form-to-grid grid form #t) + (make-wrapped-grid-window grid title) + + (receive (exit-reason argument) + (run-form form) + (dynamic-wind + (const #t) + (lambda () + (case exit-reason + ((exit-component) + (cond + ((components=? argument ok-button) + #t) + ((components=? argument exit-button) + (exit-button-procedure)))))) + (lambda () + (destroy-form-and-pop form)))))) + (define* (run-listbox-selection-page #:key info-text title diff --git a/gnu/installer/newt/partition.scm b/gnu/installer/newt/partition.scm index d4c91edc66..373aedd24c 100644 --- a/gnu/installer/newt/partition.scm +++ b/gnu/installer/newt/partition.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Mathieu Othacehe +;;; Copyright © 2019 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -53,7 +54,12 @@ (define (run-scheme-page) (car result))) (define (draw-formatting-page) - "Draw a page to indicate partitions are being formated." + "Draw a page asking for confirmation, and then indicating that partitions +are being formatted." + (run-confirmation-page (G_ "We are about to format your hard disk. All \ +its data will be lost. Do you wish to continue?") + (G_ "Format disk?") + #:exit-button-procedure button-exit-action) (draw-info-page (format #f (G_ "Partition formatting is in progress, please wait.")) (G_ "Preparing partitions"))) diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm index 642b8c6d8a..7cc2217cbe 100644 --- a/gnu/installer/parted.scm +++ b/gnu/installer/parted.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018, 2019 Mathieu Othacehe +;;; Copyright © 2019 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +25,10 @@ (define-module (gnu installer parted) #:use-module ((gnu build file-systems) #:select (read-partition-uuid read-luks-partition-uuid)) + #:use-module ((gnu build linux-modules) + #:select (missing-modules)) + #:use-module ((gnu system linux-initrd) + #:select (%base-initrd-modules)) #:use-module (guix build syscalls) #:use-module (guix build utils) #:use-module (guix records) @@ -1243,22 +1248,51 @@ (define (user-partition->mapped-device user-partition) (target ,label) (type luks-device-mapping)))) +(define (root-user-partition? partition) + "Return true if PARTITION is the root partition." + (let ((mount-point (user-partition-mount-point partition))) + (and mount-point + (string=? mount-point "/")))) + (define (bootloader-configuration user-partitions) "Return the bootloader configuration field for USER-PARTITIONS." - (let* ((root-partition - (find (lambda (user-partition) - (let ((mount-point - (user-partition-mount-point user-partition))) - (and mount-point - (string=? mount-point "/")))) - user-partitions)) + (let* ((root-partition (find root-user-partition? + user-partitions)) (root-partition-disk (user-partition-disk-file-name root-partition))) `((bootloader-configuration ,@(if (efi-installation?) `((bootloader grub-efi-bootloader) (target ,(default-esp-mount-point))) `((bootloader grub-bootloader) - (target ,root-partition-disk))))))) + (target ,root-partition-disk))) + + ;; XXX: Assume we defined the 'keyboard-layout' field of + ;; right above. + (keyboard-layout keyboard-layout))))) + +(define (user-partition-missing-modules user-partitions) + "Return the list of kernel modules missing from the default set of kernel +modules to access USER-PARTITIONS." + (let ((devices (filter user-partition-crypt-label user-partitions)) + (root (find root-user-partition? user-partitions))) + (delete-duplicates + (append-map (lambda (device) + (catch 'system-error + (lambda () + (missing-modules device %base-initrd-modules)) + (const '()))) + (delete-duplicates + (map user-partition-file-name + (cons root devices))))))) + +(define (initrd-configuration user-partitions) + "Return an 'initrd-modules' field with everything needed for +USER-PARTITIONS, or return nothing." + (match (user-partition-missing-modules user-partitions) + (() + '()) + ((modules ...) + `((initrd-modules ',modules))))) (define (user-partitions->configuration user-partitions) "Return the configuration field for USER-PARTITIONS." @@ -1266,10 +1300,11 @@ (define (user-partitions->configuration user-partitions) (swap-devices (map user-partition-file-name swap-user-partitions)) (encrypted-partitions (filter user-partition-crypt-label user-partitions))) - `(,@(if (null? swap-devices) + `((bootloader ,@(bootloader-configuration user-partitions)) + ,@(initrd-configuration user-partitions) + ,@(if (null? swap-devices) '() `((swap-devices (list ,@swap-devices)))) - (bootloader ,@(bootloader-configuration user-partitions)) ,@(if (null? encrypted-partitions) '() `((mapped-devices diff --git a/gnu/installer/services.scm b/gnu/installer/services.scm index ed44b87682..2b6625f6af 100644 --- a/gnu/installer/services.scm +++ b/gnu/installer/services.scm @@ -38,13 +38,15 @@ (define %desktop-environments (list (desktop-environment (name "GNOME") - (snippet '(gnome-desktop-service))) + (snippet '(service gnome-desktop-service-type))) (desktop-environment (name "Xfce") + ;; TODO: Use 'xfce-desktop-service-type' when the 'guix' package provides + ;; it with a default value. (snippet '(xfce-desktop-service))) (desktop-environment (name "MATE") - (snippet '(mate-desktop-service))) + (snippet '(service mate-desktop-service-type))) (desktop-environment (name "Enlightenment") (snippet '(service enlightenment-desktop-service-type))))) diff --git a/gnu/local.mk b/gnu/local.mk index 1844fbd404..c6cacd7ada 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -538,6 +538,7 @@ GNU_SYSTEM_MODULES = \ %D%/system/accounts.scm \ %D%/system/file-systems.scm \ %D%/system/install.scm \ + %D%/system/keyboard.scm \ %D%/system/linux-container.scm \ %D%/system/linux-initrd.scm \ %D%/system/locale.scm \ @@ -729,6 +730,7 @@ dist_patch_DATA = \ %D%/packages/patches/doc++-segfault-fix.patch \ %D%/packages/patches/docker-engine-test-noinstall.patch \ %D%/packages/patches/docker-fix-tests.patch \ + %D%/packages/patches/docker-use-fewer-modprobes.patch \ %D%/packages/patches/dovecot-trees-support-dovecot-2.3.patch \ %D%/packages/patches/doxygen-test.patch \ %D%/packages/patches/dvd+rw-tools-add-include.patch \ @@ -744,6 +746,7 @@ dist_patch_DATA = \ %D%/packages/patches/emacs-source-date-epoch.patch \ %D%/packages/patches/emacs-realgud-fix-configure-ac.patch \ %D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch \ + %D%/packages/patches/emacs-zones-called-interactively.patch \ %D%/packages/patches/enlightenment-fix-setuid-path.patch \ %D%/packages/patches/erlang-man-path.patch \ %D%/packages/patches/eudev-rules-directory.patch \ @@ -873,6 +876,7 @@ dist_patch_DATA = \ %D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \ %D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \ %D%/packages/patches/gtk2-theme-paths.patch \ + %D%/packages/patches/gtk3-fix-deprecation-macro-use.patch \ %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch \ %D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \ %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \ @@ -1215,7 +1219,6 @@ dist_patch_DATA = \ %D%/packages/patches/readline-6.2-CVE-2014-2524.patch \ %D%/packages/patches/red-eclipse-remove-gamma-name-hack.patch \ %D%/packages/patches/reposurgeon-add-missing-docbook-files.patch \ - %D%/packages/patches/reptyr-fix-gcc-7.patch \ %D%/packages/patches/ripperx-missing-file.patch \ %D%/packages/patches/rpcbind-CVE-2017-8779.patch \ %D%/packages/patches/rtags-separate-rct.patch \ diff --git a/gnu/packages.scm b/gnu/packages.scm index 9f211ae23c..48390575ba 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -32,6 +32,7 @@ (define-module (gnu packages) mkdir-p)) #:autoload (guix profiles) (packages->manifest) #:use-module (guix describe) + #:use-module (guix deprecation) #:use-module (ice-9 vlist) #:use-module (ice-9 match) #:autoload (ice-9 binary-ports) (put-bytevector) @@ -55,6 +56,7 @@ (define-module (gnu packages) fold-packages fold-available-packages + find-newest-available-packages find-packages-by-name find-package-locations find-best-packages-by-name @@ -186,6 +188,29 @@ (define %patch-path directory)) %load-path))) +;; This procedure is used by Emacs-Guix up to 0.5.1.1, so keep it for now. +;; See . +(define-deprecated find-newest-available-packages + find-packages-by-name + (mlambda () + "Return a vhash keyed by package names, and with +associated values of the form + + (newest-version newest-package ...) + +where the preferred package is listed first." + (fold-packages (lambda (p r) + (let ((name (package-name p)) + (version (package-version p))) + (match (vhash-assoc name r) + ((_ newest-so-far . pkgs) + (case (version-compare version newest-so-far) + ((>) (vhash-cons name `(,version ,p) r)) + ((=) (vhash-cons name `(,version ,p ,@pkgs) r)) + ((<) r))) + (#f (vhash-cons name `(,version ,p) r))))) + vlist-null))) + (define (fold-available-packages proc init) "Fold PROC over the list of available packages. For each available package, PROC is called along these lines: diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 9ed2e32324..d901110e53 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -475,8 +475,8 @@ (define-public mingetty (synopsis "Getty for the text console") (description "Small console getty that is started on the Linux text console, -asks for a login name and then transfers over to 'login'. It is extended to -allow automatic login and starting any app.") +asks for a login name and then transfers over to @code{login}. It is extended +to allow automatic login and starting any app.") (license license:gpl2+))) (define-public net-base @@ -1140,7 +1140,8 @@ (define (copy-man-page target) and it controls the roaming and IEEE 802.11 authentication/association of the WLAN driver. -This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.") +This package provides the @code{wpa_supplicant} daemon and the @code{wpa_cli} +command.") ;; In practice, this is linked against Readline, which makes it GPLv3+. (license license:bsd-3) @@ -2076,7 +2077,7 @@ (define-public di (home-page "https://www.gentoo.com/di/") (synopsis "Advanced df like disk information utility") (description - "'di' is a disk information utility, displaying everything that your + "@code{di} is a disk information utility, displaying everything that your @code{df} command does and more. It features the ability to display your disk usage in whatever format you prefer. It is designed to be highly portable and produce uniform output across heterogeneous networks.") @@ -2918,7 +2919,8 @@ (define-public solaar (define-public lynis (package (name "lynis") - (version "2.7.2") + ;; Also update the ‘lynis-sdk’ input to the commit matching this release. + (version "2.7.3") (source (origin (method git-fetch) @@ -2927,7 +2929,7 @@ (define-public lynis (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0dbbfk47dpxx7zpb98n4w3ls3z5di57qnr2nsgxjvp49gk9j3f6k")) + (base32 "0md1w86i3fy9l78i98ijr5136nbhdiik2dxyw9qnzmvdlvkqmw70")) (modules '((guix build utils))) (snippet '(begin @@ -2944,11 +2946,10 @@ (define-public lynis (method git-fetch) (uri (git-reference (url "https://github.com/CISOfy/lynis-sdk") - (commit "3310aef4f2b3dd97d166c96ad0253c89c4ad390d"))) + (commit "c166b6a67a53b24f5c1fecd4eb5033f54279a5b3"))) (file-name (git-file-name "lynis-sdk" version)) (sha256 - (base32 - "0sqsrm5wal742yrwps8bqb8a8lxd93n4b93n3kkm1b30nbs25g7y")))))) + (base32 "0wa2azcmx6pj9axvq1jmwmz7826rj1c214asmmn1hq7pxmfw62zr")))))) (arguments `(#:phases (modify-phases %standard-phases diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm index 2813062e95..6025af8323 100644 --- a/gnu/packages/astronomy.scm +++ b/gnu/packages/astronomy.scm @@ -131,7 +131,7 @@ (define-public gnuastro (define-public stellarium (package (name "stellarium") - (version "0.18.3") + (version "0.19.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/Stellarium/" name @@ -139,7 +139,7 @@ (define-public stellarium "/" name "-" version ".tar.gz")) (sha256 (base32 - "1mm8rjcb8j56m3kfigpix5vxviw1616kvl9ws2s3s5gdyngljrc3")))) + "1mjjqcpgm5a1022x0mpqj3v6qkvpm9wqm1hqyg0mlypc5681va8a")))) (build-system cmake-build-system) (inputs `(("qtbase" ,qtbase) @@ -161,13 +161,6 @@ (define-public stellarium (assoc-ref %build-inputs "qtserialport") "/include/qt5")) #:phases (modify-phases %standard-phases - ;; Skip a test that assumes Stellarium is "installed": - ;; https://bugs.gentoo.org/674472 - (add-after 'unpack 'patch-tests - (lambda _ - (substitute* "src/tests/testEphemeris.cpp" - (("ifndef Q_OS_WIN") "if 0")) - #t)) (add-before 'check 'set-offscreen-display (lambda _ ;; make Qt render "offscreen", required for tests diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index a38e77c996..fb119f870d 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -943,7 +943,7 @@ (define-public fil-plugins The 2nd order resonant filters are implemented using a Mitra-Regalia style lattice filter, which is stable even while parameters are being changed. -All switches and controls are internally smoothed, so they can be used 'live' +All switches and controls are internally smoothed, so they can be used @code{live} without any clicks or zipper noises. This makes this plugin suitable for use in systems that allow automation of plugin control ports, such as Ardour, or for stage use.") @@ -2130,11 +2130,7 @@ (define-public qjackctl "0wlmbb9m7cf3wr7c2h2hji18592x2b119m7mx85wksjs6rjaq2mj")))) (build-system gnu-build-system) (arguments - '(#:tests? #f ; no check target - ;; Disable xunique to prevent X hanging when starting qjackctl in - ;; tiling window managers such as StumpWM or i3 - ;; (see https://github.com/rncbc/qjackctl/issues/13). - #:configure-flags '("--disable-xunique"))) + '(#:tests? #f)) ; no check target (inputs `(("jack" ,jack-1) ("alsa-lib" ,alsa-lib) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index db9cca6faf..91f8b03c83 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -600,9 +600,9 @@ (define* (make-ld-wrapper name #:key #t))))) (synopsis "The linker wrapper") (description - "The linker wrapper (or 'ld-wrapper') wraps the linker to add any -missing '-rpath' flags, and to detect any misuse of libraries outside of the -store.") + "The linker wrapper (or @code{ld-wrapper}) wraps the linker to add any +missing @code{-rpath} flags, and to detect any misuse of libraries outside of +the store.") (home-page "https://www.gnu.org/software/guix//") (license gpl3+))) @@ -1019,8 +1019,8 @@ (define-public (make-glibc-locales glibc) (synopsis "All the locales supported by the GNU C Library") (description "This package provides all the locales supported by the GNU C Library, -more than 400 in total. To use them set the 'LOCPATH' environment variable to -the 'share/locale' sub-directory of this package.") +more than 400 in total. To use them set the @code{LOCPATH} environment variable +to the @code{share/locale} sub-directory of this package.") (outputs '("out")) ;110+ MiB (native-search-paths '()) (arguments diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index 710b9fd07a..750311fd7b 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -29,6 +29,8 @@ (define-module (gnu packages bioconductor) #:use-module (gnu packages compression) #:use-module (gnu packages gcc) #:use-module (gnu packages graph) + #:use-module (gnu packages haskell) + #:use-module (gnu packages image) #:use-module (gnu packages maths) #:use-module (gnu packages pkg-config) #:use-module (gnu packages statistics) @@ -708,9 +710,72 @@ (define-public r-illuminahumanmethylationepicmanifest "This is a manifest package for Illumina's EPIC methylation arrays.") (license license:artistic2.0))) +(define-public r-do-db + (package + (name "r-do-db") + (version "2.9") + (source (origin + (method url-fetch) + ;; We cannot use bioconductor-uri here because this tarball is + ;; located under "data/annotation/" instead of "bioc/". + (uri (string-append "https://www.bioconductor.org/packages/" + "release/data/annotation/src/contrib/" + "DO.db_" version ".tar.gz")) + (sha256 + (base32 + "10bqqa124l61ivzy4mdd3z3ar9a6537qbxw23pc4y9w8a6dwnavn")))) + (properties + `((upstream-name . "DO.db"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi))) + (home-page "https://www.bioconductor.org/packages/DO.db/") + (synopsis "Annotation maps describing the entire Disease Ontology") + (description + "This package provides a set of annotation maps describing the entire +Disease Ontology.") + (license license:artistic2.0))) + ;;; Experiment data +(define-public r-abadata + (package + (name "r-abadata") + (version "1.12.0") + (source (origin + (method url-fetch) + ;; We cannot use bioconductor-uri here because this tarball is + ;; located under "data/experiment/" instead of "bioc/". + (uri (string-append "https://www.bioconductor.org/packages/" + "release/data/experiment/src/contrib/" + "ABAData_" version ".tar.gz")) + (sha256 + (base32 + "1bmj341xcymlrk02gss5vvrqc4ddas0rdw39lnpsj98hq6n11p5z")))) + (properties + `((upstream-name . "ABAData"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi))) + (home-page "https://www.bioconductor.org/packages/ABAData/") + (synopsis "Gene expression in human brain regions from Allen Brain Atlas") + (description + "This package provides the data for the gene expression enrichment +analysis conducted in the package ABAEnrichment. The package includes three +datasets which are derived from the Allen Brain Atlas: + +@enumerate +@item Gene expression data from Human Brain (adults) averaged across donors, +@item Gene expression data from the Developing Human Brain pooled into five + age categories and averaged across donors, and +@item a developmental effect score based on the Developing Human Brain + expression data. +@end enumerate + +All datasets are restricted to protein coding genes.") + (license license:gpl2+))) + (define-public r-hsmmsinglecell (package (name "r-hsmmsinglecell") @@ -2521,3 +2586,1457 @@ (define-public r-ioniser visualising metrics relative to experiment run time or spatially over the surface of a flowcell.") (license license:expat))) + +;; This is a CRAN package, but it depends on packages from Bioconductor. +(define-public r-gkmsvm + (package + (name "r-gkmsvm") + (version "0.79.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "gkmSVM" version)) + (sha256 + (base32 + "04dakbgfvfalz4rm4fvvybp506dn5fbj5g86ybfhrc6wywjllsz3")))) + (properties `((upstream-name . "gkmSVM"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biocgenerics" ,r-biocgenerics) + ("r-biostrings" ,r-biostrings) + ("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicranges" ,r-genomicranges) + ("r-iranges" ,r-iranges) + ("r-kernlab" ,r-kernlab) + ("r-rcpp" ,r-rcpp) + ("r-rocr" ,r-rocr) + ("r-rtracklayer" ,r-rtracklayer) + ("r-s4vectors" ,r-s4vectors) + ("r-seqinr" ,r-seqinr))) + (home-page "https://cran.r-project.org/web/packages/gkmSVM") + (synopsis "Gapped-kmer support vector machine") + (description + "This R package provides tools for training gapped-kmer SVM classifiers +for DNA and protein sequences. This package supports several sequence +kernels, including: gkmSVM, kmer-SVM, mismatch kernel and wildcard kernel.") + (license license:gpl2+))) + +(define-public r-triform + (package + (name "r-triform") + (version "1.24.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "triform" version)) + (sha256 + (base32 + "12ca24pv1r5vbw3rq345jqg7x3prrbsxk6445zikpzfblwmw0b4s")))) + (build-system r-build-system) + (propagated-inputs + `(("r-biocgenerics" ,r-biocgenerics) + ("r-iranges" ,r-iranges) + ("r-yaml" ,r-yaml))) + (home-page "https://bioconductor.org/packages/triform/") + (synopsis "Find enriched regions in transcription factor ChIP-sequencing data") + (description + "The Triform algorithm uses model-free statistics to identify peak-like +distributions of TF ChIP sequencing reads, taking advantage of an improved +peak definition in combination with known profile characteristics.") + (license license:gpl2))) + +(define-public r-varianttools + (package + (name "r-varianttools") + (version "1.24.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "VariantTools" version)) + (sha256 + (base32 + "1ml3pl7xnxvzr6zkypr80xzw6nffswk29gzxycn42473sc4ixn7j")))) + (properties `((upstream-name . "VariantTools"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-biocparallel" ,r-biocparallel) + ("r-biostrings" ,r-biostrings) + ("r-bsgenome" ,r-bsgenome) + ("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicfeatures" ,r-genomicfeatures) + ("r-genomicranges" ,r-genomicranges) + ("r-iranges" ,r-iranges) + ("r-matrix" ,r-matrix) + ("r-rsamtools" ,r-rsamtools) + ("r-rtracklayer" ,r-rtracklayer) + ("r-s4vectors" ,r-s4vectors) + ("r-variantannotation" ,r-variantannotation))) + (home-page "https://bioconductor.org/packages/VariantTools/") + (synopsis "Tools for exploratory analysis of variant calls") + (description + "Explore, diagnose, and compare variant calls using filters. The +VariantTools package supports a workflow for loading data, calling single +sample variants and tumor-specific somatic mutations or other sample-specific +variant types (e.g., RNA editing). Most of the functions operate on +alignments (BAM files) or datasets of called variants. The user is expected +to have already aligned the reads with a separate tool, e.g., GSNAP via +gmapR.") + (license license:artistic2.0))) + +(define-public r-heatplus + (package + (name "r-heatplus") + (version "2.28.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "Heatplus" version)) + (sha256 + (base32 + "0drspjzgb23ra2kdvpxhsd8mdifsf97fcf668llyz2hr0r39fc48")))) + (properties `((upstream-name . "Heatplus"))) + (build-system r-build-system) + (propagated-inputs + `(("r-rcolorbrewer" ,r-rcolorbrewer))) + (home-page "https://github.com/alexploner/Heatplus") + (synopsis "Heatmaps with row and/or column covariates and colored clusters") + (description + "This package provides tools to display a rectangular heatmap (intensity +plot) of a data matrix. By default, both samples (columns) and features (row) +of the matrix are sorted according to a hierarchical clustering, and the +corresponding dendrogram is plotted. Optionally, panels with additional +information about samples and features can be added to the plot.") + (license license:gpl2+))) + +(define-public r-gosemsim + (package + (name "r-gosemsim") + (version "2.8.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "GOSemSim" version)) + (sha256 + (base32 + "0ckihpy8jmgn2np1avprz76v9z7i5hqm2gj514c6dmmq3csbc7ib")))) + (properties `((upstream-name . "GOSemSim"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-go-db" ,r-go-db) + ("r-rcpp" ,r-rcpp))) + (home-page "https://guangchuangyu.github.io/software/GOSemSim") + (synopsis "GO-terms semantic similarity measures") + (description + "The semantic comparisons of @dfn{Gene Ontology} (GO) annotations provide +quantitative ways to compute similarities between genes and gene groups, and +have became important basis for many bioinformatics analysis approaches. +GOSemSim is an R package for semantic similarity computation among GO terms, +sets of GO terms, gene products and gene clusters.") + (license license:artistic2.0))) + +(define-public r-anota + (package + (name "r-anota") + (version "1.30.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "anota" version)) + (sha256 + (base32 + "182fp6dpws516y0igvwn6936higfqvy25haa0xs273f8aczr9cf0")))) + (build-system r-build-system) + (propagated-inputs + `(("r-multtest" ,r-multtest) + ("r-qvalue" ,r-qvalue))) + (home-page "https://bioconductor.org/packages/anota/") + (synopsis "Analysis of translational activity") + (description + "Genome wide studies of translational control is emerging as a tool to +study verious biological conditions. The output from such analysis is both +the mRNA level (e.g. cytosolic mRNA level) and the levl of mRNA actively +involved in translation (the actively translating mRNA level) for each mRNA. +The standard analysis of such data strives towards identifying differential +translational between two or more sample classes - i.e. differences in +actively translated mRNA levels that are independent of underlying differences +in cytosolic mRNA levels. This package allows for such analysis using partial +variances and the random variance model. As 10s of thousands of mRNAs are +analyzed in parallell the library performs a number of tests to assure that +the data set is suitable for such analysis.") + (license license:gpl3))) + +(define-public r-sigpathway + (package + (name "r-sigpathway") + (version "1.50.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "sigPathway" version)) + (sha256 + (base32 + "0pygrla2q2151981gshzv51jnj60h1df3vby5gsxqvxn2pdr4bv3")))) + (properties `((upstream-name . "sigPathway"))) + (build-system r-build-system) + (home-page "https://www.pnas.org/cgi/doi/10.1073/pnas.0506577102") + (synopsis "Pathway analysis") + (description + "This package is used to conduct pathway analysis by calculating the NT_k +and NE_k statistics in a statistical framework for determining whether a +specified group of genes for a pathway has a coordinated association with a +phenotype of interest.") + (license license:gpl2))) + +(define-public r-fgsea + (package + (name "r-fgsea") + (version "1.8.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "fgsea" version)) + (sha256 + (base32 + "0cxxvlmg340l5l5fz4abbwppiri0ibg4navvq5k3wg511mz8ma2q")))) + (build-system r-build-system) + (propagated-inputs + `(("r-biocparallel" ,r-biocparallel) + ("r-data-table" ,r-data-table) + ("r-fastmatch" ,r-fastmatch) + ("r-ggplot2" ,r-ggplot2) + ("r-gridextra" ,r-gridextra) + ("r-matrix" ,r-matrix) + ("r-rcpp" ,r-rcpp))) + (home-page "https://github.com/ctlab/fgsea/") + (synopsis "Fast gene set enrichment analysis") + (description + "The package implements an algorithm for fast gene set enrichment +analysis. Using the fast algorithm allows to make more permutations and get +more fine grained p-values, which allows to use accurate stantard approaches +to multiple hypothesis correction.") + (license license:expat))) + +(define-public r-dose + (package + (name "r-dose") + (version "3.8.2") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "DOSE" version)) + (sha256 + (base32 + "1gh7dhvfc71kawxcfx8xqlir7mwvg5mmz4lqrdrvw5knvi2h3mfa")))) + (properties `((upstream-name . "DOSE"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-biocparallel" ,r-biocparallel) + ("r-do-db" ,r-do-db) + ("r-fgsea" ,r-fgsea) + ("r-ggplot2" ,r-ggplot2) + ("r-gosemsim" ,r-gosemsim) + ("r-qvalue" ,r-qvalue) + ("r-reshape2" ,r-reshape2) + ("r-s4vectors" ,r-s4vectors))) + (home-page "https://guangchuangyu.github.io/software/DOSE/") + (synopsis "Disease ontology semantic and enrichment analysis") + (description + "This package implements five methods proposed by Resnik, Schlicker, +Jiang, Lin and Wang, respectively, for measuring semantic similarities among +@dfn{Disease ontology} (DO) terms and gene products. Enrichment analyses +including hypergeometric model and gene set enrichment analysis are also +implemented for discovering disease associations of high-throughput biological +data.") + (license license:artistic2.0))) + +(define-public r-enrichplot + (package + (name "r-enrichplot") + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "enrichplot" version)) + (sha256 + (base32 + "0cxqfpy6py4k3z3lnlkiwx89r4ymfpdc4hm25dfpazqgjflz5is7")))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-cowplot" ,r-cowplot) + ("r-dose" ,r-dose) + ("r-europepmc" ,r-europepmc) + ("r-ggplot2" ,r-ggplot2) + ("r-ggplotify" ,r-ggplotify) + ("r-ggraph" ,r-ggraph) + ("r-ggridges" ,r-ggridges) + ("r-gosemsim" ,r-gosemsim) + ("r-gridextra" ,r-gridextra) + ("r-igraph" ,r-igraph) + ("r-purrr" ,r-purrr) + ("r-rcolorbrewer" ,r-rcolorbrewer) + ("r-reshape2" ,r-reshape2) + ("r-upsetr" ,r-upsetr))) + (home-page "https://github.com/GuangchuangYu/enrichplot") + (synopsis "Visualization of functional enrichment result") + (description + "The enrichplot package implements several visualization methods for +interpreting functional enrichment results obtained from ORA or GSEA analyses. +All the visualization methods are developed based on ggplot2 graphics.") + (license license:artistic2.0))) + +(define-public r-clusterprofiler + (package + (name "r-clusterprofiler") + (version "3.10.1") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "clusterProfiler" version)) + (sha256 + (base32 + "1v4fh8ll7zk8yhbaa0nq9xvqrb05kyvbpwkqpnjf07s873805rxm")))) + (properties + `((upstream-name . "clusterProfiler"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-dose" ,r-dose) + ("r-enrichplot" ,r-enrichplot) + ("r-ggplot2" ,r-ggplot2) + ("r-go-db" ,r-go-db) + ("r-gosemsim" ,r-gosemsim) + ("r-magrittr" ,r-magrittr) + ("r-plyr" ,r-plyr) + ("r-qvalue" ,r-qvalue) + ("r-rvcheck" ,r-rvcheck) + ("r-tidyr" ,r-tidyr))) + (home-page "https://guangchuangyu.github.io/software/clusterProfiler/") + (synopsis "Analysis and visualization of functional profiles for gene clusters") + (description + "This package implements methods to analyze and visualize functional +profiles (GO and KEGG) of gene and gene clusters.") + (license license:artistic2.0))) + +(define-public r-mlinterfaces + (package + (name "r-mlinterfaces") + (version "1.62.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "MLInterfaces" version)) + (sha256 + (base32 + "12bgplyzfh0hkwmdp5w4cs5zw3ygdhzmiqzm8vhjyni6m9nrxwy8")))) + (properties `((upstream-name . "MLInterfaces"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotate" ,r-annotate) + ("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-cluster" ,r-cluster) + ("r-fpc" ,r-fpc) + ("r-gbm" ,r-gbm) + ("r-gdata" ,r-gdata) + ("r-genefilter" ,r-genefilter) + ("r-ggvis" ,r-ggvis) + ("r-hwriter" ,r-hwriter) + ("r-mass" ,r-mass) + ("r-mlbench" ,r-mlbench) + ("r-pls" ,r-pls) + ("r-rcolorbrewer" ,r-rcolorbrewer) + ("r-rda" ,r-rda) + ("r-rpart" ,r-rpart) + ("r-sfsmisc" ,r-sfsmisc) + ("r-shiny" ,r-shiny) + ("r-threejs" ,r-threejs))) + (home-page "https://bioconductor.org/packages/MLInterfaces/") + (synopsis "Interfaces to R machine learning procedures") + (description + "This package provides uniform interfaces to machine learning code for +data in R and Bioconductor containers.") + ;; Any version of the LGPL. + (license license:lgpl2.1+))) + +(define-public r-annaffy + (package + (name "r-annaffy") + (version "1.54.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "annaffy" version)) + (sha256 + (base32 + "16c6allp4vlx0g3nffanrm0mkkf8s2n31dccw4bflnx2pr81bmd5")))) + (build-system r-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-reference-to-non-free-data + (lambda _ + (substitute* "DESCRIPTION" + ((", KEGG.db") "")) + #t))))) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-biobase" ,r-biobase) + ("r-dbi" ,r-dbi) + ("r-go-db" ,r-go-db))) + (home-page "https://bioconductor.org/packages/annaffy/") + (synopsis "Annotation tools for Affymetrix biological metadata") + (description + "This package provides functions for handling data from Bioconductor +Affymetrix annotation data packages. It produces compact HTML and text +reports including experimental data and URL links to many online databases. +It allows searching of biological metadata using various criteria.") + ;; Any version of the LGPL according to the DESCRIPTION file. A copy of + ;; the LGPL 2.1 is included. + (license license:lgpl2.1+))) + +(define-public r-a4core + (package + (name "r-a4core") + (version "1.30.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "a4Core" version)) + (sha256 + (base32 + "1d62afxkfp9zbp59ijcn4wd1gdynygw013av41wq8bfm3cx6f9zr")))) + (properties `((upstream-name . "a4Core"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biobase" ,r-biobase) + ("r-glmnet" ,r-glmnet))) + (home-page "https://bioconductor.org/packages/a4Core") + (synopsis "Automated Affymetrix array analysis core package") + (description + "This is the core package for the automated analysis of Affymetrix +arrays.") + (license license:gpl3))) + +(define-public r-a4classif + (package + (name "r-a4classif") + (version "1.30.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "a4Classif" version)) + (sha256 + (base32 + "02l77a59865ly3bydv74ff2l2wfb0x5s283g1nx6g1qrw3ly982j")))) + (properties `((upstream-name . "a4Classif"))) + (build-system r-build-system) + (propagated-inputs + `(("r-a4core" ,r-a4core) + ("r-a4preproc" ,r-a4preproc) + ("r-glmnet" ,r-glmnet) + ("r-mlinterfaces" ,r-mlinterfaces) + ("r-pamr" ,r-pamr) + ("r-rocr" ,r-rocr) + ("r-varselrf" ,r-varselrf))) + (home-page "https://bioconductor.org/packages/a4Classif/") + (synopsis "Automated Affymetrix array analysis classification package") + (description + "This is the classification package for the automated analysis of +Affymetrix arrays.") + (license license:gpl3))) + +(define-public r-a4preproc + (package + (name "r-a4preproc") + (version "1.30.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "a4Preproc" version)) + (sha256 + (base32 + "1dd3fqcc7nr2zbi46k0mnqkh42mfxk894ixfpqg7i9np2523p5gp")))) + (properties `((upstream-name . "a4Preproc"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi))) + (home-page "https://bioconductor.org/packages/a4Preproc/") + (synopsis "Automated Affymetrix array analysis preprocessing package") + (description + "This is a package for the automated analysis of Affymetrix arrays. It +is used for preprocessing the arrays.") + (license license:gpl3))) + +(define-public r-a4reporting + (package + (name "r-a4reporting") + (version "1.30.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "a4Reporting" version)) + (sha256 + (base32 + "124774z3bfdjgxx2ad40795h92aam21yfx0rw0n01nk2wf6k7xc4")))) + (properties `((upstream-name . "a4Reporting"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annaffy" ,r-annaffy) + ("r-xtable" ,r-xtable))) + (home-page "https://bioconductor.org/packages/a4Reporting/") + (synopsis "Automated Affymetrix array analysis reporting package") + (description + "This is a package for the automated analysis of Affymetrix arrays. It +provides reporting features.") + (license license:gpl3))) + +(define-public r-a4base + (package + (name "r-a4base") + (version "1.30.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "a4Base" version)) + (sha256 + (base32 + "0k9k3bv99msbwf2y416cz316ssaha2dxvmaddbl7z9037p8mjr70")))) + (properties `((upstream-name . "a4Base"))) + (build-system r-build-system) + (propagated-inputs + `(("r-a4core" ,r-a4core) + ("r-a4preproc" ,r-a4preproc) + ("r-annaffy" ,r-annaffy) + ("r-annotationdbi" ,r-annotationdbi) + ("r-biobase" ,r-biobase) + ("r-genefilter" ,r-genefilter) + ("r-glmnet" ,r-glmnet) + ("r-gplots" ,r-gplots) + ("r-limma" ,r-limma) + ("r-mpm" ,r-mpm) + ("r-multtest" ,r-multtest))) + (home-page "https://bioconductor.org/packages/a4Base/") + (synopsis "Automated Affymetrix array analysis base package") + (description + "This package provides basic features for the automated analysis of +Affymetrix arrays.") + (license license:gpl3))) + +(define-public r-a4 + (package + (name "r-a4") + (version "1.30.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "a4" version)) + (sha256 + (base32 + "1iqjy35rqx3m2y0dm2bk4cnzdm1qvbi608bfmrid88w6wmwz3qlk")))) + (build-system r-build-system) + (propagated-inputs + `(("r-a4base" ,r-a4base) + ("r-a4classif" ,r-a4classif) + ("r-a4core" ,r-a4core) + ("r-a4preproc" ,r-a4preproc) + ("r-a4reporting" ,r-a4reporting))) + (home-page "https://bioconductor.org/packages/a4/") + (synopsis "Automated Affymetrix array analysis umbrella package") + (description + "This package provides a software suite for the automated analysis of +Affymetrix arrays.") + (license license:gpl3))) + +(define-public r-abseqr + (package + (name "r-abseqr") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "abseqR" version)) + (sha256 + (base32 + "0w0ngxnilcrxlixsz7ls3zm99gyabxwn7w1r3r45n96d4aj075ry")))) + (properties `((upstream-name . "abseqR"))) + (build-system r-build-system) + (inputs + `(("pandoc" ,ghc-pandoc))) + (propagated-inputs + `(("r-biocparallel" ,r-biocparallel) + ("r-biocstyle" ,r-biocstyle) + ("r-circlize" ,r-circlize) + ("r-flexdashboard" ,r-flexdashboard) + ("r-ggcorrplot" ,r-ggcorrplot) + ("r-ggdendro" ,r-ggdendro) + ("r-ggplot2" ,r-ggplot2) + ("r-gridextra" ,r-gridextra) + ("r-knitr" ,r-knitr) + ("r-plotly" ,r-plotly) + ("r-plyr" ,r-plyr) + ("r-png" ,r-png) + ("r-rcolorbrewer" ,r-rcolorbrewer) + ("r-reshape2" ,r-reshape2) + ("r-rmarkdown" ,r-rmarkdown) + ("r-stringr" ,r-stringr) + ("r-vegan" ,r-vegan) + ("r-venndiagram" ,r-venndiagram))) + (home-page "https://github.com/malhamdoosh/abseqR") + (synopsis "Reporting and data analysis for Rep-Seq datasets of antibody libraries") + (description + "AbSeq is a comprehensive bioinformatic pipeline for the analysis of +sequencing datasets generated from antibody libraries and abseqR is one of its +packages. AbseqR empowers the users of abseqPy with plotting and reporting +capabilities and allows them to generate interactive HTML reports for the +convenience of viewing and sharing with other researchers. Additionally, +abseqR extends abseqPy to compare multiple repertoire analyses and perform +further downstream analysis on its output.") + (license license:gpl3))) + +(define-public r-bacon + (package + (name "r-bacon") + (version "1.10.1") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "bacon" version)) + (sha256 + (base32 + "1pd3p1cfggiy08458vplsy3s1zm5jqqcwrv4fks8ra2kf97j38df")))) + (build-system r-build-system) + (propagated-inputs + `(("r-biocparallel" ,r-biocparallel) + ("r-ellipse" ,r-ellipse) + ("r-ggplot2" ,r-ggplot2))) + (home-page "https://bioconductor.org/packages/bacon/") + (synopsis "Controlling bias and inflation in association studies") + (description + "Bacon can be used to remove inflation and bias often observed in +epigenome- and transcriptome-wide association studies. To this end bacon +constructs an empirical null distribution using a Gibbs Sampling algorithm by +fitting a three-component normal mixture on z-scores.") + (license license:gpl2+))) + +(define-public r-rgadem + (package + (name "r-rgadem") + (version "2.30.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "rGADEM" version)) + (sha256 + (base32 + "1a3mvxabp7yb275cv1wr0rzyvjhnsaysk2hnmll4z4cci171z2j2")))) + (properties `((upstream-name . "rGADEM"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biostrings" ,r-biostrings) + ("r-bsgenome" ,r-bsgenome) + ("r-iranges" ,r-iranges) + ("r-seqlogo" ,r-seqlogo))) + (home-page "https://bioconductor.org/packages/rGADEM/") + (synopsis "De novo sequence motif discovery") + (description + "rGADEM is an efficient de novo motif discovery tool for large-scale +genomic sequence data.") + (license license:artistic2.0))) + +(define-public r-motiv + (package + (name "r-motiv") + (version "1.38.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "MotIV" version)) + (sha256 + (base32 + "1qrpydwc5bn8f0843qkyhw6920xk8kvq452ird0ij96g6faiv9a8")))) + (properties `((upstream-name . "MotIV"))) + (build-system r-build-system) + (inputs + `(("gsl" ,gsl))) + (propagated-inputs + `(("r-biocgenerics" ,r-biocgenerics) + ("r-biostrings" ,r-biostrings) + ("r-iranges" ,r-iranges) + ("r-lattice" ,r-lattice) + ("r-rgadem" ,r-rgadem) + ("r-s4vectors" ,r-s4vectors))) + (home-page "https://bioconductor.org/packages/MotIV/") + (synopsis "Motif identification and validation") + (description + "This package is used for the identification and validation of sequence +motifs. It makes use of STAMP for comparing a set of motifs to a given +database (e.g. JASPAR). It can also be used to visualize motifs, motif +distributions, modules and filter motifs.") + (license license:gpl2))) + +(define-public r-motifstack + (package + (name "r-motifstack") + (version "1.26.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "motifStack" version)) + (sha256 + (base32 + "1c4w39ilc4ca4wgi1b6iypadkbxvqjw7k2br0d7q03niw9qjkhxf")))) + (properties `((upstream-name . "motifStack"))) + (build-system r-build-system) + (propagated-inputs + `(("r-ade4" ,r-ade4) + ("r-biostrings" ,r-biostrings) + ("r-grimport" ,r-grimport) + ("r-htmlwidgets" ,r-htmlwidgets) + ("r-motiv" ,r-motiv) + ("r-scales" ,r-scales) + ("r-xml" ,r-xml))) + (home-page "https://bioconductor.org/packages/motifStack/") + (synopsis "Plot stacked logos for DNA, RNA and amino acid sequences") + (description + "The motifStack package is designed for graphic representation of +multiple motifs with different similarity scores. It works with both DNA/RNA +sequence motifs and amino acid sequence motifs. In addition, it provides the +flexibility for users to customize the graphic parameters such as the font +type and symbol colors.") + (license license:gpl2+))) + +(define-public r-genomicscores + (package + (name "r-genomicscores") + (version "1.6.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "GenomicScores" version)) + (sha256 + (base32 + "0lrhkcblvnki6kncwpavs01gbcz22yza6ma8zvfmbrrkfaxqzh8n")))) + (properties `((upstream-name . "GenomicScores"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationhub" ,r-annotationhub) + ("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-biostrings" ,r-biostrings) + ("r-bsgenome" ,r-bsgenome) + ("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicranges" ,r-genomicranges) + ("r-iranges" ,r-iranges) + ("r-s4vectors" ,r-s4vectors) + ("r-xml" ,r-xml))) + (home-page "https://github.com/rcastelo/GenomicScores/") + (synopsis "Work with genome-wide position-specific scores") + (description + "This package provides infrastructure to store and access genome-wide +position-specific scores within R and Bioconductor.") + (license license:artistic2.0))) + +(define-public r-atacseqqc + (package + (name "r-atacseqqc") + (version "1.6.4") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "ATACseqQC" version)) + (sha256 + (base32 + "1rblvqar11fib6ip2hq0756vqi6qmncf90jw6i5p5lrgzmaxy8hn")))) + (properties `((upstream-name . "ATACseqQC"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biocgenerics" ,r-biocgenerics) + ("r-biostrings" ,r-biostrings) + ("r-bsgenome" ,r-bsgenome) + ("r-chippeakanno" ,r-chippeakanno) + ("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicalignments" ,r-genomicalignments) + ("r-genomicranges" ,r-genomicranges) + ("r-genomicscores" ,r-genomicscores) + ("r-iranges" ,r-iranges) + ("r-kernsmooth" ,r-kernsmooth) + ("r-limma" ,r-limma) + ("r-motifstack" ,r-motifstack) + ("r-preseqr" ,r-preseqr) + ("r-randomforest" ,r-randomforest) + ("r-rsamtools" ,r-rsamtools) + ("r-rtracklayer" ,r-rtracklayer) + ("r-s4vectors" ,r-s4vectors))) + (home-page "https://bioconductor.org/packages/ATACseqQC/") + (synopsis "ATAC-seq quality control") + (description + "ATAC-seq, an assay for Transposase-Accessible Chromatin using +sequencing, is a rapid and sensitive method for chromatin accessibility +analysis. It was developed as an alternative method to MNase-seq, FAIRE-seq +and DNAse-seq. The ATACseqQC package was developed to help users to quickly +assess whether their ATAC-seq experiment is successful. It includes +diagnostic plots of fragment size distribution, proportion of mitochondria +reads, nucleosome positioning pattern, and CTCF or other Transcript Factor +footprints.") + (license license:gpl2+))) + +(define-public r-gofuncr + (package + (name "r-gofuncr") + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "GOfuncR" version)) + (sha256 + (base32 + "021kgcbm8n2yalhzab11cyppwznlkglynnh45wsgy9i2vi2n2znk")))) + (properties `((upstream-name . "GOfuncR"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-genomicranges" ,r-genomicranges) + ("r-gtools" ,r-gtools) + ("r-iranges" ,r-iranges) + ("r-mapplots" ,r-mapplots) + ("r-rcpp" ,r-rcpp) + ("r-vioplot" ,r-vioplot))) + (home-page "https://bioconductor.org/packages/GOfuncR/") + (synopsis "Gene ontology enrichment using FUNC") + (description + "GOfuncR performs a gene ontology enrichment analysis based on the +ontology enrichment software FUNC. GO-annotations are obtained from +OrganismDb or OrgDb packages (@code{Homo.sapiens} by default); the GO-graph is +included in the package and updated regularly. GOfuncR provides the standard +candidate vs background enrichment analysis using the hypergeometric test, as +well as three additional tests: + +@enumerate +@item the Wilcoxon rank-sum test that is used when genes are ranked, +@item a binomial test that is used when genes are associated with two counts, + and +@item a Chi-square or Fisher's exact test that is used in cases when genes are +associated with four counts. +@end enumerate + +To correct for multiple testing and interdependency of the tests, family-wise +error rates are computed based on random permutations of the gene-associated +variables. GOfuncR also provides tools for exploring the ontology graph and +the annotations, and options to take gene-length or spatial clustering of +genes into account. It is also possible to provide custom gene coordinates, +annotations and ontologies.") + (license license:gpl2+))) + +(define-public r-abaenrichment + (package + (name "r-abaenrichment") + (version "1.12.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "ABAEnrichment" version)) + (sha256 + (base32 + "0bvanqmg1smyckh16m2qn7d68zq4j7n74sgsnbgms5jngbp9158v")))) + (properties `((upstream-name . "ABAEnrichment"))) + (build-system r-build-system) + (propagated-inputs + `(("r-abadata" ,r-abadata) + ("r-data-table" ,r-data-table) + ("r-gofuncr" ,r-gofuncr) + ("r-gplots" ,r-gplots) + ("r-gtools" ,r-gtools) + ("r-rcpp" ,r-rcpp))) + (home-page "https://bioconductor.org/packages/ABAEnrichment/") + (synopsis "Gene expression enrichment in human brain regions") + (description + "The package ABAEnrichment is designed to test for enrichment of user +defined candidate genes in the set of expressed genes in different human brain +regions. The core function @code{aba_enrich} integrates the expression of the +candidate gene set (averaged across donors) and the structural information of +the brain using an ontology, both provided by the Allen Brain Atlas project.") + (license license:gpl2+))) + +(define-public r-annotationfuncs + (package + (name "r-annotationfuncs") + (version "1.32.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "AnnotationFuncs" version)) + (sha256 + (base32 + "1x11mfabh7kbp39y5rkmrpjkaawx7ab5anfmciamrmrcw1kddbss")))) + (properties + `((upstream-name . "AnnotationFuncs"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-dbi" ,r-dbi))) + (home-page "https://www.iysik.com/r/annotationfuncs") + (synopsis "Annotation translation functions") + (description + "This package provides functions for handling translating between +different identifieres using the Biocore Data Team data-packages (e.g. +@code{org.Bt.eg.db}).") + (license license:gpl2))) + +(define-public r-annotationtools + (package + (name "r-annotationtools") + (version "1.56.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "annotationTools" version)) + (sha256 + (base32 + "0hqy0mq6pkn05p2dv4pw24p697yvikhdn351adf2ynldy6f3sl9z")))) + (properties + `((upstream-name . "annotationTools"))) + (build-system r-build-system) + (propagated-inputs `(("r-biobase" ,r-biobase))) + (home-page "https://bioconductor.org/packages/annotationTools/") + (synopsis "Annotate microarrays and perform gene expression analyses") + (description + "This package provides functions to annotate microarrays, find orthologs, +and integrate heterogeneous gene expression profiles using annotation and +other molecular biology information available as flat file database (plain +text files).") + ;; Any version of the GPL. + (license (list license:gpl2+)))) + +(define-public r-allelicimbalance + (package + (name "r-allelicimbalance") + (version "1.20.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "AllelicImbalance" version)) + (sha256 + (base32 + "03524lj6aw9cskbpxzjmi9g708x6p94mf26yz4j941g1d0mc3z91")))) + (properties + `((upstream-name . "AllelicImbalance"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-biocgenerics" ,r-biocgenerics) + ("r-biostrings" ,r-biostrings) + ("r-bsgenome" ,r-bsgenome) + ("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicalignments" ,r-genomicalignments) + ("r-genomicfeatures" ,r-genomicfeatures) + ("r-genomicranges" ,r-genomicranges) + ("r-gridextra" ,r-gridextra) + ("r-gviz" ,r-gviz) + ("r-iranges" ,r-iranges) + ("r-lattice" ,r-lattice) + ("r-latticeextra" ,r-latticeextra) + ("r-nlme" ,r-nlme) + ("r-rsamtools" ,r-rsamtools) + ("r-s4vectors" ,r-s4vectors) + ("r-seqinr" ,r-seqinr) + ("r-summarizedexperiment" ,r-summarizedexperiment) + ("r-variantannotation" ,r-variantannotation))) + (home-page "https://github.com/pappewaio/AllelicImbalance") + (synopsis "Investigate allele-specific expression") + (description + "This package provides a framework for allele-specific expression +investigation using RNA-seq data.") + (license license:gpl3))) + +(define-public r-aucell + (package + (name "r-aucell") + (version "1.4.1") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "AUCell" version)) + (sha256 + (base32 + "1kdrs0521cyb8wlc4i3idfprrcy2f9w6kl56hfa94n0brmx62ya9")))) + (properties `((upstream-name . "AUCell"))) + (build-system r-build-system) + (propagated-inputs + `(("r-data-table" ,r-data-table) + ("r-gseabase" ,r-gseabase) + ("r-mixtools" ,r-mixtools) + ("r-r-utils" ,r-r-utils) + ("r-shiny" ,r-shiny) + ("r-summarizedexperiment" ,r-summarizedexperiment))) + (home-page "https://bioconductor.org/packages/AUCell/") + (synopsis "Analysis of gene set activity in single-cell RNA-seq data") + (description + "AUCell allows to identify cells with active gene sets (e.g. signatures, +gene modules, etc) in single-cell RNA-seq data. AUCell uses the @dfn{Area +Under the Curve} (AUC) to calculate whether a critical subset of the input +gene set is enriched within the expressed genes for each cell. The +distribution of AUC scores across all the cells allows exploring the relative +expression of the signature. Since the scoring method is ranking-based, +AUCell is independent of the gene expression units and the normalization +procedure. In addition, since the cells are evaluated individually, it can +easily be applied to bigger datasets, subsetting the expression matrix if +needed.") + (license license:gpl3))) + +(define-public r-ebimage + (package + (name "r-ebimage") + (version "4.24.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "EBImage" version)) + (sha256 + (base32 + "18v2zr7xh0d0xbs7mxa2b6xjqlqiml0hji27gq1351xp5bf2pxvx")))) + (properties `((upstream-name . "EBImage"))) + (build-system r-build-system) + (propagated-inputs + `(("r-abind" ,r-abind) + ("r-biocgenerics" ,r-biocgenerics) + ("r-fftwtools" ,r-fftwtools) + ("r-htmltools" ,r-htmltools) + ("r-htmlwidgets" ,r-htmlwidgets) + ("r-jpeg" ,r-jpeg) + ("r-locfit" ,r-locfit) + ("r-png" ,r-png) + ("r-rcurl" ,r-rcurl) + ("r-tiff" ,r-tiff))) + (native-inputs + `(("r-knitr" ,r-knitr))) ; for vignettes + (home-page "https://github.com/aoles/EBImage") + (synopsis "Image processing and analysis toolbox for R") + (description + "EBImage provides general purpose functionality for image processing and +analysis. In the context of (high-throughput) microscopy-based cellular +assays, EBImage offers tools to segment cells and extract quantitative +cellular descriptors. This allows the automation of such tasks using the R +programming language and facilitates the use of other tools in the R +environment for signal processing, statistical modeling, machine learning and +visualization with image data.") + ;; Any version of the LGPL. + (license license:lgpl2.1+))) + +(define-public r-yamss + (package + (name "r-yamss") + (version "1.8.1") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "yamss" version)) + (sha256 + (base32 + "13pln09j08fjsr7bj17apy4j0sr79n7jzshi8jbnz57jil7k6ia9")))) + (build-system r-build-system) + (propagated-inputs + `(("r-biocgenerics" ,r-biocgenerics) + ("r-data-table" ,r-data-table) + ("r-ebimage" ,r-ebimage) + ("r-iranges" ,r-iranges) + ("r-limma" ,r-limma) + ("r-matrix" ,r-matrix) + ("r-mzr" ,r-mzr) + ("r-s4vectors" ,r-s4vectors) + ("r-summarizedexperiment" + ,r-summarizedexperiment))) + (home-page "https://github.com/hansenlab/yamss") + (synopsis "Tools for high-throughput metabolomics") + (description + "This package provides tools to analyze and visualize high-throughput +metabolomics data aquired using chromatography-mass spectrometry. These tools +preprocess data in a way that enables reliable and powerful differential +analysis.") + (license license:artistic2.0))) + +(define-public r-gtrellis + (package + (name "r-gtrellis") + (version "1.14.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "gtrellis" version)) + (sha256 + (base32 + "17c43vs6m6hj90x5is0pbcpcv59gg9z98c47hnvlypgcqch38h6v")))) + (build-system r-build-system) + (propagated-inputs + `(("r-circlize" ,r-circlize) + ("r-genomicranges" ,r-genomicranges) + ("r-getoptlong" ,r-getoptlong) + ("r-iranges" ,r-iranges))) + (home-page "https://github.com/jokergoo/gtrellis") + (synopsis "Genome level Trellis layout") + (description + "Genome level Trellis graph visualizes genomic data conditioned by +genomic categories (e.g. chromosomes). For each genomic category, multiple +dimensional data which are represented as tracks describe different features +from different aspects. This package provides high flexibility to arrange +genomic categories and to add self-defined graphics in the plot.") + (license license:expat))) + +(define-public r-somaticsignatures + (package + (name "r-somaticsignatures") + (version "2.18.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "SomaticSignatures" version)) + (sha256 + (base32 + "013dslbyq55a41d3n842brjk2bq1kxw0r18mb6drgbxx2sflzc02")))) + (properties + `((upstream-name . "SomaticSignatures"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biobase" ,r-biobase) + ("r-biostrings" ,r-biostrings) + ("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicranges" ,r-genomicranges) + ("r-ggbio" ,r-ggbio) + ("r-ggplot2" ,r-ggplot2) + ("r-iranges" ,r-iranges) + ("r-nmf" ,r-nmf) + ("r-pcamethods" ,r-pcamethods) + ("r-proxy" ,r-proxy) + ("r-reshape2" ,r-reshape2) + ("r-s4vectors" ,r-s4vectors) + ("r-variantannotation" ,r-variantannotation))) + (home-page "https://github.com/juliangehring/SomaticSignatures") + (synopsis "Somatic signatures") + (description + "This package identifies mutational signatures of @dfn{single nucleotide +variants} (SNVs). It provides a infrastructure related to the methodology +described in Nik-Zainal (2012, Cell), with flexibility in the matrix +decomposition algorithms.") + (license license:expat))) + +(define-public r-yapsa + (package + (name "r-yapsa") + (version "1.8.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "YAPSA" version)) + (sha256 + (base32 + "1agacimdd1m5yja2xbcsb83mns4svpxbjcsfrvm9ydqdj737i10j")))) + (properties `((upstream-name . "YAPSA"))) + (build-system r-build-system) + (propagated-inputs + `(("r-circlize" ,r-circlize) + ("r-complexheatmap" ,r-complexheatmap) + ("r-corrplot" ,r-corrplot) + ("r-dendextend" ,r-dendextend) + ("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicranges" ,r-genomicranges) + ("r-getoptlong" ,r-getoptlong) + ("r-ggplot2" ,r-ggplot2) + ("r-gridextra" ,r-gridextra) + ("r-gtrellis" ,r-gtrellis) + ("r-keggrest" ,r-keggrest) + ("r-lsei" ,r-lsei) + ("r-pmcmr" ,r-pmcmr) + ("r-reshape2" ,r-reshape2) + ("r-somaticsignatures" ,r-somaticsignatures) + ("r-variantannotation" ,r-variantannotation))) + (home-page "https://bioconductor.org/packages/YAPSA/") + (synopsis "Yet another package for signature analysis") + (description + "This package provides functions and routines useful in the analysis of +somatic signatures (cf. L. Alexandrov et al., Nature 2013). In particular, +functions to perform a signature analysis with known signatures and a +signature analysis on @dfn{stratified mutational catalogue} (SMC) are +provided.") + (license license:gpl3))) + +(define-public r-gcrma + (package + (name "r-gcrma") + (version "2.54.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "gcrma" version)) + (sha256 + (base32 + "1v5fi98gdmj002ryq0rgsg2l4x3m3w5pz4h3bx4v8lk15azafgim")))) + (build-system r-build-system) + (propagated-inputs + `(("r-affy" ,r-affy) + ("r-affyio" ,r-affyio) + ("r-biobase" ,r-biobase) + ("r-biocmanager" ,r-biocmanager) + ("r-biostrings" ,r-biostrings) + ("r-xvector" ,r-xvector))) + (home-page "https://bioconductor.org/packages/gcrma/") + (synopsis "Background adjustment using sequence information") + (description + "Gcrma adjusts for background intensities in Affymetrix array data which +include optical noise and @dfn{non-specific binding} (NSB). The main function +@code{gcrma} converts background adjusted probe intensities to expression +measures using the same normalization and summarization methods as a +@dfn{Robust Multiarray Average} (RMA). Gcrma uses probe sequence information +to estimate probe affinity to NSB. The sequence information is summarized in +a more complex way than the simple GC content. Instead, the base types (A, T, +G or C) at each position along the probe determine the affinity of each probe. +The parameters of the position-specific base contributions to the probe +affinity is estimated in an NSB experiment in which only NSB but no +gene-specific bidning is expected.") + ;; Any version of the LGPL + (license license:lgpl2.1+))) + +(define-public r-simpleaffy + (package + (name "r-simpleaffy") + (version "2.58.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "simpleaffy" version)) + (sha256 + (base32 + "0bry0d2vw0w2rrpnmfm1kl5v4rdclypmy33jvs9l43vd6vx2ra9s")))) + (build-system r-build-system) + (propagated-inputs + `(("r-affy" ,r-affy) + ("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-gcrma" ,r-gcrma) + ("r-genefilter" ,r-genefilter))) + (home-page "https://bioconductor.org/packages/simpleaffy/") + (synopsis "Very simple high level analysis of Affymetrix data") + (description + "This package provides high level functions for reading Affy @file{.CEL} +files, phenotypic data, and then computing simple things with it, such as +t-tests, fold changes and the like. It makes heavy use of the @code{affy} +library. It also has some basic scatter plot functions and mechanisms for +generating high resolution journal figures.") + (license license:gpl2+))) + +(define-public r-yaqcaffy + (package + (name "r-yaqcaffy") + (version "1.42.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "yaqcaffy" version)) + (sha256 + (base32 + "192n1zvd54nm9q71vyb6dcr7ia6givf4bjwf6542jjig085lwhxk")))) + (build-system r-build-system) + (propagated-inputs + `(("r-simpleaffy" ,r-simpleaffy))) + (home-page "https://bioconductor.org/packages/yaqcaffy/") + (synopsis "Affymetrix quality control and reproducibility analysis") + (description + "This is a package that can be used for quality control of Affymetrix +GeneChip expression data and reproducibility analysis of human whole genome +chips with the MAQC reference datasets.") + (license license:artistic2.0))) + +(define-public r-quantro + (package + (name "r-quantro") + (version "1.16.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "quantro" version)) + (sha256 + (base32 + "1777gjgn855f04yv7hx70h9l8idmjzamkpazaq2cdr8qzhxwy2ib")))) + (build-system r-build-system) + (propagated-inputs + `(("r-biobase" ,r-biobase) + ("r-doparallel" ,r-doparallel) + ("r-foreach" ,r-foreach) + ("r-ggplot2" ,r-ggplot2) + ("r-iterators" ,r-iterators) + ("r-minfi" ,r-minfi) + ("r-rcolorbrewer" ,r-rcolorbrewer))) + (home-page "https://bioconductor.org/packages/quantro/") + (synopsis "Test for when to use quantile normalization") + (description + "This package provides a data-driven test for the assumptions of quantile +normalization using raw data such as objects that inherit eSets (e.g. +ExpressionSet, MethylSet). Group level information about each sample (such as +Tumor / Normal status) must also be provided because the test assesses if +there are global differences in the distributions between the user-defined +groups.") + (license license:gpl3+))) + +(define-public r-yarn + (package + (name "r-yarn") + (version "1.8.1") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "yarn" version)) + (sha256 + (base32 + "0c84x1zq34hadpsyaa873r8kg0jcxp09c2z63377hlmhsll90l7s")))) + (build-system r-build-system) + (propagated-inputs + `(("r-biobase" ,r-biobase) + ("r-biomart" ,r-biomart) + ("r-downloader" ,r-downloader) + ("r-edger" ,r-edger) + ("r-gplots" ,r-gplots) + ("r-limma" ,r-limma) + ("r-matrixstats" ,r-matrixstats) + ("r-preprocesscore" ,r-preprocesscore) + ("r-quantro" ,r-quantro) + ("r-rcolorbrewer" ,r-rcolorbrewer) + ("r-readr" ,r-readr))) + (home-page "https://bioconductor.org/packages/yarn/") + (synopsis "Robust multi-condition RNA-Seq preprocessing and normalization") + (description + "Expedite large RNA-Seq analyses using a combination of previously +developed tools. YARN is meant to make it easier for the user in performing +basic mis-annotation quality control, filtering, and condition-aware +normalization. YARN leverages many Bioconductor tools and statistical +techniques to account for the large heterogeneity and sparsity found in very +large RNA-seq experiments.") + (license license:artistic2.0))) + +(define-public r-roar + (package + (name "r-roar") + (version "1.18.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "roar" version)) + (sha256 + (base32 + "15650s9vs7dvmqpvrs4xwn6j4kh14yqsx4daqyhhxxr68kn8mklw")))) + (build-system r-build-system) + (propagated-inputs + `(("r-biocgenerics" ,r-biocgenerics) + ("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicalignments" ,r-genomicalignments) + ("r-genomicranges" ,r-genomicranges) + ("r-iranges" ,r-iranges) + ("r-rtracklayer" ,r-rtracklayer) + ("r-s4vectors" ,r-s4vectors) + ("r-summarizedexperiment" ,r-summarizedexperiment))) + (home-page "https://github.com/vodkatad/roar/") + (synopsis "Identify differential APA usage from RNA-seq alignments") + (description + "This package provides tools for identifying preferential usage of APA +sites, comparing two biological conditions, starting from known alternative +sites and alignments obtained from standard RNA-seq experiments.") + (license license:gpl3))) + +(define-public r-xbseq + (package + (name "r-xbseq") + (version "1.14.1") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "XBSeq" version)) + (sha256 + (base32 + "0na0jiqfy40bzl243gqc2214k4hibv6v4ndiqwq0c5f78cyr6lph")))) + (properties `((upstream-name . "XBSeq"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biobase" ,r-biobase) + ("r-deseq2" ,r-deseq2) + ("r-dplyr" ,r-dplyr) + ("r-ggplot2" ,r-ggplot2) + ("r-locfit" ,r-locfit) + ("r-magrittr" ,r-magrittr) + ("r-matrixstats" ,r-matrixstats) + ("r-pracma" ,r-pracma) + ("r-roar" ,r-roar))) + (home-page "https://github.com/Liuy12/XBSeq") + (synopsis "Test for differential expression for RNA-seq data") + (description + "XBSeq is a novel algorithm for testing RNA-seq @dfn{differential +expression} (DE), where a statistical model was established based on the +assumption that observed signals are the convolution of true expression +signals and sequencing noises. The mapped reads in non-exonic regions are +considered as sequencing noises, which follows a Poisson distribution. Given +measurable observed signal and background noise from RNA-seq data, true +expression signals, assuming governed by the negative binomial distribution, +can be delineated and thus the accurate detection of differential expressed +genes.") + (license license:gpl3+))) + +(define-public r-massspecwavelet + (package + (name "r-massspecwavelet") + (version "1.48.1") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "MassSpecWavelet" version)) + (sha256 + (base32 + "1xcr568a36b570rldy27wq4a2jn7yf5f6fddlzgx6x944jdn3ckz")))) + (properties + `((upstream-name . "MassSpecWavelet"))) + (build-system r-build-system) + (propagated-inputs + `(("r-waveslim" ,r-waveslim))) + (home-page "https://bioconductor.org/packages/MassSpecWavelet/") + (synopsis "Mass spectrum processing by wavelet-based algorithms") + (description + "The MassSpecWavelet package aims to process @dfn{Mass Spectrometry} (MS) +data mainly through the use of wavelet transforms. It supports peak detection +based on @dfn{Continuous Wavelet Transform} (CWT).") + (license license:lgpl2.0+))) + +(define-public r-xcms + (package + (name "r-xcms") + (version "3.4.4") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "xcms" version)) + (sha256 + (base32 + "073f25m7y8z4560k93d99fv72pr7nrgrp054zssi7jhas4l3ddww")))) + (build-system r-build-system) + (propagated-inputs + `(("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-biocparallel" ,r-biocparallel) + ("r-lattice" ,r-lattice) + ("r-massspecwavelet" ,r-massspecwavelet) + ("r-msnbase" ,r-msnbase) + ("r-multtest" ,r-multtest) + ("r-mzr" ,r-mzr) + ("r-plyr" ,r-plyr) + ("r-protgenerics" ,r-protgenerics) + ("r-rann" ,r-rann) + ("r-rcolorbrewer" ,r-rcolorbrewer) + ("r-robustbase" ,r-robustbase) + ("r-s4vectors" ,r-s4vectors))) + (home-page "https://bioconductor.org/packages/xcms/") + (synopsis "LC/MS and GC/MS mass spectrometry data analysis") + (description + "This package provides a framework for processing and visualization of +chromatographically separated and single-spectra mass spectral data. It +imports from AIA/ANDI NetCDF, mzXML, mzData and mzML files. It preprocesses +data for high-throughput, untargeted analyte profiling.") + (license license:gpl2+))) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 1836939970..8f6a37a4f8 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -2325,23 +2325,21 @@ (define-public python-dnaio (define-public cutadapt (package (name "cutadapt") - (version "1.18") + (version "2.1") (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/marcelm/cutadapt.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) + (method url-fetch) + (uri (pypi-uri "cutadapt" version)) (sha256 (base32 - "08bbfwyc0kvcd95jf2s95xiv9s3cbsxm39ydl0qck3fw3cviwxpg")))) + "1vqmsfkm6llxzmsz9wcfcvzx9a9f8iabvwik2rbyn7nc4wm25z89")))) (build-system python-build-system) (inputs `(("python-dnaio" ,python-dnaio) ("python-xopen" ,python-xopen))) (native-inputs `(("python-cython" ,python-cython) - ("python-pytest" ,python-pytest))) + ("python-pytest" ,python-pytest) + ("python-setuptools-scm" ,python-setuptools-scm))) (home-page "https://cutadapt.readthedocs.io/en/stable/") (synopsis "Remove adapter sequences from nucleotide sequencing reads") (description @@ -6792,14 +6790,14 @@ (define-public r-annotationforge (define-public r-rbgl (package (name "r-rbgl") - (version "1.58.1") + (version "1.58.2") (source (origin (method url-fetch) (uri (bioconductor-uri "RBGL" version)) (sha256 (base32 - "1l5x2icv9di1lr3gqfi0vjnyd9xc3l77yc42ippqd4cadj3d1pzf")))) + "0vhnh47pswnp27c0zqcbnnsayfmq3cxcgrs9g860555ldqfl4cyl")))) (properties `((upstream-name . "RBGL"))) (build-system r-build-system) (propagated-inputs `(("r-graph" ,r-graph))) @@ -7014,29 +7012,6 @@ (define-public r-grohmm "This package provides a pipeline for the analysis of GRO-seq data.") (license license:gpl3+))) -(define-public r-sparql - (package - (name "r-sparql") - (version "1.16") - (source (origin - (method url-fetch) - (uri (cran-uri "SPARQL" version)) - (sha256 - (base32 - "0gak1q06yyhdmcxb2n3v0h9gr1vqd0viqji52wpw211qp6r6dcrc")))) - (properties `((upstream-name . "SPARQL"))) - (build-system r-build-system) - (propagated-inputs - `(("r-rcurl" ,r-rcurl) - ("r-xml" ,r-xml))) - (home-page "https://cran.r-project.org/web/packages/SPARQL") - (synopsis "SPARQL client for R") - (description "This package provides an interface to use SPARQL to pose -SELECT or UPDATE queries to an end-point.") - ;; The only license indication is found in the DESCRIPTION file, - ;; which states GPL-3. So we cannot assume GPLv3+. - (license license:gpl3))) - (define-public vsearch (package (name "vsearch") @@ -7243,32 +7218,6 @@ (define-public bioruby ;; (LGPLv2.1+) and scripts in samples (which have GPL2 and GPL2+) (license (list license:ruby license:lgpl2.1+ license:gpl2+ )))) -(define-public r-acsnminer - (package - (name "r-acsnminer") - (version "0.16.8.25") - (source (origin - (method url-fetch) - (uri (cran-uri "ACSNMineR" version)) - (sha256 - (base32 - "0gh604s8qall6zfjlwcg2ilxjvz08dplf9k5g47idhv43scm748l")))) - (properties `((upstream-name . "ACSNMineR"))) - (build-system r-build-system) - (propagated-inputs - `(("r-ggplot2" ,r-ggplot2) - ("r-gridextra" ,r-gridextra))) - (home-page "https://cran.r-project.org/web/packages/ACSNMineR") - (synopsis "Gene enrichment analysis") - (description - "This package provides tools to compute and represent gene set enrichment -or depletion from your data based on pre-saved maps from the @dfn{Atlas of -Cancer Signalling Networks} (ACSN) or user imported maps. The gene set -enrichment can be run with hypergeometric test or Fisher exact test, and can -use multiple corrections. Visualization of data can be done either by -barplots or heatmaps.") - (license license:gpl2+))) - (define-public r-biocinstaller (package (name "r-biocinstaller") @@ -7315,30 +7264,6 @@ (define-public r-biocviews also known as views, in a controlled vocabulary.") (license license:artistic2.0))) -(define-public r-bookdown - (package - (name "r-bookdown") - (version "0.9") - (source (origin - (method url-fetch) - (uri (cran-uri "bookdown" version)) - (sha256 - (base32 - "0vg1s1w0l9pm95asqb21yf39mfk1nc9rdhmlys9xwr7p7i7rsz32")))) - (build-system r-build-system) - (propagated-inputs - `(("r-htmltools" ,r-htmltools) - ("r-knitr" ,r-knitr) - ("r-rmarkdown" ,r-rmarkdown) - ("r-tinytex" ,r-tinytex) - ("r-yaml" ,r-yaml) - ("r-xfun" ,r-xfun))) - (home-page "https://github.com/rstudio/bookdown") - (synopsis "Authoring books and technical documents with R markdown") - (description "This package provides output formats and utilities for -authoring books and technical documents with R Markdown.") - (license license:gpl3))) - (define-public r-biocstyle (package (name "r-biocstyle") @@ -7412,29 +7337,6 @@ (define-public r-bioccheck checks on R packages that are to be submitted to the Bioconductor repository.") (license license:artistic2.0))) -(define-public r-optparse - (package - (name "r-optparse") - (version "1.6.1") - (source - (origin - (method url-fetch) - (uri (cran-uri "optparse" version)) - (sha256 - (base32 - "04vyb6dhcga30mvghsg1p052jmf69xqxkvh3hzqz7dscyppy76w1")))) - (build-system r-build-system) - (propagated-inputs - `(("r-getopt" ,r-getopt))) - (home-page - "https://github.com/trevorld/optparse") - (synopsis "Command line option parser") - (description - "This package provides a command line parser inspired by Python's -@code{optparse} library to be used with Rscript to write shebang scripts -that accept short and long options.") - (license license:gpl2+))) - (define-public r-s4vectors (package (name "r-s4vectors") @@ -7462,31 +7364,6 @@ (define-public r-s4vectors S4Vectors package itself.") (license license:artistic2.0))) -(define-public r-seqinr - (package - (name "r-seqinr") - (version "3.4-5") - (source - (origin - (method url-fetch) - (uri (cran-uri "seqinr" version)) - (sha256 - (base32 - "17zv0n5cji17izwmwg0jcbxbjl3w5rls91w15svcnlpxjms38ahn")))) - (build-system r-build-system) - (propagated-inputs - `(("r-ade4" ,r-ade4) - ("r-segmented" ,r-segmented))) - (inputs - `(("zlib" ,zlib))) - (home-page "http://seqinr.r-forge.r-project.org/") - (synopsis "Biological sequences retrieval and analysis") - (description - "This package provides tools for exploratory data analysis and data -visualization of biological sequence (DNA and protein) data. It also includes -utilities for sequence data management under the ACNUC system.") - (license license:gpl2+))) - (define-public r-iranges (package (name "r-iranges") @@ -7888,10 +7765,10 @@ (define-public r-rsamtools (home-page "https://bioconductor.org/packages/release/bioc/html/Rsamtools.html") (synopsis "Interface to samtools, bcftools, and tabix") (description - "This package provides an interface to the 'samtools', 'bcftools', and -'tabix' utilities for manipulating SAM (Sequence Alignment / Map), FASTA, -binary variant call (BCF) and compressed indexed tab-delimited (tabix) -files.") + "This package provides an interface to the @code{samtools}, +@code{bcftools}, and @code{tabix} utilities for manipulating SAM (Sequence +Alignment / Map), FASTA, binary variant call (BCF) and compressed indexed +tab-delimited (tabix) files.") (license license:expat))) (define-public r-delayedarray @@ -8039,13 +7916,13 @@ (define-public r-rtracklayer (define-public r-genomicfeatures (package (name "r-genomicfeatures") - (version "1.34.6") + (version "1.34.7") (source (origin (method url-fetch) (uri (bioconductor-uri "GenomicFeatures" version)) (sha256 (base32 - "1cz7qx324dmsrkzyhm956cfgr08gpily5rpym7hc8zz5kbl6i3ra")))) + "100y8cx9xfglbn36k25y09y0qfwm0qpb4b01qhk367832rqz5dhz")))) (properties `((upstream-name . "GenomicFeatures"))) (build-system r-build-system) @@ -8587,45 +8464,6 @@ (define-public r-mutationalpatterns in SNV base substitution data.") (license license:expat))) -(define-public r-wgcna - (package - (name "r-wgcna") - (version "1.66") - (source - (origin - (method url-fetch) - (uri (cran-uri "WGCNA" version)) - (sha256 - (base32 - "0rhnyhzfn93yp24jz9v6dzrmyizwzdw070a7idm0k33w1cm8sjqv")))) - (properties `((upstream-name . "WGCNA"))) - (build-system r-build-system) - (propagated-inputs - `(("r-annotationdbi" ,r-annotationdbi) - ("r-doparallel" ,r-doparallel) - ("r-dynamictreecut" ,r-dynamictreecut) - ("r-fastcluster" ,r-fastcluster) - ("r-foreach" ,r-foreach) - ("r-go-db" ,r-go-db) - ("r-hmisc" ,r-hmisc) - ("r-impute" ,r-impute) - ("r-rcpp" ,r-rcpp) - ("r-robust" ,r-robust) - ("r-survival" ,r-survival) - ("r-matrixstats" ,r-matrixstats) - ("r-preprocesscore" ,r-preprocesscore))) - (home-page - "http://www.genetics.ucla.edu/labs/horvath/CoexpressionNetwork/Rpackages/WGCNA/") - (synopsis "Weighted correlation network analysis") - (description - "This package provides functions necessary to perform Weighted -Correlation Network Analysis on high-dimensional data. It includes functions -for rudimentary data cleaning, construction and summarization of correlation -networks, module identification and functions for relating both variables and -modules to sample traits. It also includes a number of utility functions for -data manipulation and visualization.") - (license license:gpl2+))) - (define-public r-chipkernels (let ((commit "c9cfcacb626b1221094fb3490ea7bac0fd625372") (revision "1")) @@ -8693,39 +8531,6 @@ (define-public r-seqgl factors bound at the specific regions.") (license license:gpl2+))) -(define-public r-gkmsvm - (package - (name "r-gkmsvm") - (version "0.79.0") - (source - (origin - (method url-fetch) - (uri (cran-uri "gkmSVM" version)) - (sha256 - (base32 - "04dakbgfvfalz4rm4fvvybp506dn5fbj5g86ybfhrc6wywjllsz3")))) - (properties `((upstream-name . "gkmSVM"))) - (build-system r-build-system) - (propagated-inputs - `(("r-biocgenerics" ,r-biocgenerics) - ("r-biostrings" ,r-biostrings) - ("r-genomeinfodb" ,r-genomeinfodb) - ("r-genomicranges" ,r-genomicranges) - ("r-iranges" ,r-iranges) - ("r-kernlab" ,r-kernlab) - ("r-rcpp" ,r-rcpp) - ("r-rocr" ,r-rocr) - ("r-rtracklayer" ,r-rtracklayer) - ("r-s4vectors" ,r-s4vectors) - ("r-seqinr" ,r-seqinr))) - (home-page "https://cran.r-project.org/web/packages/gkmSVM") - (synopsis "Gapped-kmer support vector machine") - (description - "This R package provides tools for training gapped-kmer SVM classifiers -for DNA and protein sequences. This package supports several sequence -kernels, including: gkmSVM, kmer-SVM, mismatch kernel and wildcard kernel.") - (license license:gpl2+))) - (define-public r-tximport (package (name "r-tximport") @@ -10384,14 +10189,14 @@ (define-public r-ldblock (define-public r-gqtlstats (package (name "r-gqtlstats") - (version "1.14.0") + (version "1.14.1") (source (origin (method url-fetch) (uri (bioconductor-uri "gQTLstats" version)) (sha256 (base32 - "1sg9kw59dlayj7qxql9pd93d4hmml504sa3kkfpzfh3xri7m5pxf")))) + "1rkbnb3h02fdksc4nacqvmq4jgbj9fz4hm7j51yr2ggcgcykwraa")))) (properties `((upstream-name . "gQTLstats"))) (build-system r-build-system) (propagated-inputs @@ -10625,14 +10430,14 @@ (define-public r-hdf5array (define-public r-rhdf5lib (package (name "r-rhdf5lib") - (version "1.4.2") + (version "1.4.3") (source (origin (method url-fetch) (uri (bioconductor-uri "Rhdf5lib" version)) (sha256 (base32 - "06bxd3wz8lrvh2hzvmjpdv4lvzj5lz9353bw5b3zb98cb8w9r2j5")) + "0hjhjvg2kss71fkmxlbgnyyy1agwzgq57rxkgkm4riw82x2rvw7q")) (modules '((guix build utils))) (snippet '(begin @@ -10861,14 +10666,14 @@ (define-public r-delayedmatrixstats (define-public r-phangorn (package (name "r-phangorn") - (version "2.4.0") + (version "2.5.3") (source (origin (method url-fetch) (uri (cran-uri "phangorn" version)) (sha256 (base32 - "0xc8k552nxczy19jr0xjjagrzc8x6lafasgk2c099ls8bc1yml1i")))) + "1bv86yfk5r015s7ij6v4zz7bagwrw9m13yfs5853drxb19d5h1m3")))) (build-system r-build-system) (propagated-inputs `(("r-ape" ,r-ape) @@ -11075,23 +10880,31 @@ (define-public ritornello (define-public trim-galore (package (name "trim-galore") - (version "0.4.5") + (version "0.6.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/FelixKrueger/TrimGalore.git") (commit version))) - (file-name (string-append name "-" version "-checkout")) + (file-name (git-file-name name version)) (sha256 (base32 - "0x5892l48c816pf00wmnz5vq0zq6170d3xc8zrxncd4jcz7h1p71")))) + "1y31wbxwkm9xqzr5zv1pk5q418whnmlmgmfyxxpnl12h83m2i9iv")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no tests #:phases (modify-phases %standard-phases - (delete 'configure) + (replace 'configure + (lambda _ + ;; Trim Galore tries to figure out what version of Python + ;; cutadapt is using by looking at the shebang. Of course that + ;; doesn't work, because cutadapt is wrapped in a shell script. + (substitute* "trim_galore" + (("my \\$python_return.*") + "my $python_return = \"Python 3.999\";\n")) + #t)) (delete 'build) (add-after 'unpack 'hardcode-tool-references (lambda* (#:key inputs #:allow-other-keys) @@ -11100,14 +10913,18 @@ (define-public trim-galore (string-append "$path_to_cutadapt = '" (assoc-ref inputs "cutadapt") "/bin/cutadapt'")) - (("\\| gzip") - (string-append "| " + (("\\$compression_path = \"gzip\"") + (string-append "$compression_path = \"" (assoc-ref inputs "gzip") - "/bin/gzip")) + "/bin/gzip\"")) (("\"gunzip") (string-append "\"" (assoc-ref inputs "gzip") - "/bin/gunzip"))) + "/bin/gunzip")) + (("\"pigz") + (string-append "\"" + (assoc-ref inputs "pigz") + "/bin/pigz"))) #t)) (replace 'install (lambda* (#:key outputs #:allow-other-keys) @@ -11119,6 +10936,7 @@ (define-public trim-galore (inputs `(("gzip" ,gzip) ("perl" ,perl) + ("pigz" ,pigz) ("cutadapt" ,cutadapt))) (native-inputs `(("unzip" ,unzip))) @@ -13461,15 +13279,41 @@ (define-public find-circ (define-public python-scanpy (package (name "python-scanpy") - (version "1.2.2") + (version "1.4") + ;; Fetch from git because the pypi tarball does not include tests. (source (origin - (method url-fetch) - (uri (pypi-uri "scanpy" version)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/theislab/scanpy.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "1ak7bxms5a0yvf65prppq2g38clkv7c7jnjbnfpkh3xxv7q512jz")))) + "0zn6x6c0cnm1a20i6isigwb51g3pr9zpjk8r1minjqnxi5yc9pm4")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs #:allow-other-keys) + ;; These tests require Internet access. + (delete-file-recursively "scanpy/tests/notebooks") + (delete-file "scanpy/tests/test_clustering.py") + + ;; TODO: No module named 'louvain' + (delete-file "scanpy/tests/test_rank_genes_groups_logreg.py") + + ;; TODO: I can't get the plotting tests to work, even with Xvfb. + (delete-file "scanpy/tests/test_plotting.py") + (delete-file "scanpy/tests/test_preprocessing.py") + (delete-file "scanpy/tests/test_read_10x.py") + + (setenv "PYTHONPATH" + (string-append (getcwd) ":" + (getenv "PYTHONPATH"))) + (invoke "pytest") + #t))))) (propagated-inputs `(("python-anndata" ,python-anndata) ("python-igraph" ,python-igraph) @@ -13485,7 +13329,9 @@ (define-public python-scanpy ("python-seaborn" ,python-seaborn) ("python-h5py" ,python-h5py) ("python-tables" ,python-tables))) - (home-page "http://github.com/theislab/scanpy") + (native-inputs + `(("python-pytest" ,python-pytest))) + (home-page "https://github.com/theislab/scanpy") (synopsis "Single-Cell Analysis in Python.") (description "Scanpy is a scalable toolkit for analyzing single-cell gene expression data. It includes preprocessing, visualization, clustering, @@ -13494,6 +13340,38 @@ (define-public python-scanpy million cells.") (license license:bsd-3))) +(define-public python-bbknn + (package + (name "python-bbknn") + (version "1.3.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "bbknn" version)) + (sha256 + (base32 + "1qgdganvj3lyxj84v7alm23b9vqhwpn8z0115qndpnpy90qxynwz")))) + (build-system python-build-system) + (propagated-inputs + `(("python-annoy" ,python-annoy) + ("python-cython" ,python-cython) + ("python-faiss" ,python-faiss) + ("python-numpy" ,python-numpy) + ("python-scanpy" ,python-scanpy))) + (home-page "https://github.com/Teichlab/bbknn") + (synopsis "Batch balanced KNN") + (description "BBKNN is a batch effect removal tool that can be directly +used in the Scanpy workflow. It serves as an alternative to +@code{scanpy.api.pp.neighbors()}, with both functions creating a neighbour +graph for subsequent use in clustering, pseudotime and UMAP visualisation. If +technical artifacts are present in the data, they will make it challenging to +link corresponding cell types across different batches. BBKNN actively +combats this effect by splitting your data into batches and finding a smaller +number of neighbours for each cell within each of the groups. This helps +create connections between analogous cells in different batches without +altering the counts or PCA space.") + (license license:expat))) + (define-public gffcompare (let ((commit "be56ef4349ea3966c12c6397f85e49e047361c41") (revision "1")) diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm index 3b20e84a91..2629ebb6dd 100644 --- a/gnu/packages/c.scm +++ b/gnu/packages/c.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016, 2018 Ludovic Courtès -;;; Copyright © 2016, 2017, 2018 Ricardo Wurmus +;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Pierre Neidhardt ;;; Copyright © 2019 Efraim Flashner @@ -38,7 +38,8 @@ (define-module (gnu packages c) #:use-module (gnu packages python) #:use-module (gnu packages autotools) #:use-module (gnu packages gettext) - #:use-module (gnu packages pkg-config)) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages xml)) (define-public tcc (package @@ -257,3 +258,32 @@ (define-public libbytesize every project that needs to deal with sizes in bytes. It is written in the C language with thin bindings for other languages.") (license license:lgpl2.1+))) + +(define-public udunits + (package + (name "udunits") + (version "2.2.26") + (source (origin + (method url-fetch) + (uri (string-append "ftp://ftp.unidata.ucar.edu/pub/udunits/" + "udunits-" version ".tar.gz")) + (sha256 + (base32 + "0v9mqw4drnkzkm57331ail6yvs9485jmi37s40lhvmf7r5lli3rn")))) + (build-system gnu-build-system) + (inputs + `(("expat" ,expat))) + (home-page "https://www.unidata.ucar.edu/software/udunits/") + (synopsis "C library for units of physical quantities and value-conversion utils") + (description + "The UDUNITS-2 package provides support for units of physical quantities. +Its three main components are: + +@enumerate +@item @code{udunits2lib}, a C library for units of physical quantities; +@item @code{udunits2prog}, a utility for obtaining the definition of a unit + and for converting numeric values between compatible units; and +@item an extensive database of units. +@end enumerate\n") + ;; Like the BSD-3 license but with an extra anti patent clause. + (license (license:non-copyleft "file://COPYRIGHT")))) diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm index 226d8f57e2..90f23452f7 100644 --- a/gnu/packages/calendar.scm +++ b/gnu/packages/calendar.scm @@ -96,13 +96,13 @@ (define-public libical (define-public khal (package (name "khal") - (version "0.9.10") + (version "0.10.0") (source (origin (method url-fetch) (uri (pypi-uri "khal" version)) (sha256 (base32 - "03h0j0d3xyqh98x5v2gv63wv3g91hip3vsaxvybsn5iz331d23h4")))) + "1p49f3g25x900vk32spjbr2aipj12kcbhayny2vwhdpkjlv6k396")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -122,22 +122,14 @@ (define-public khal (setenv "TZ" (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo/Zulu")) - (invoke "py.test" "tests" "-k" - (string-append - ;; These tests are known to fail in when not - ;; running in a TTY: - ;; https://github.com/pimutils/khal/issues/683 - "not test_printics_read_from_stdin " - "and not test_import_from_stdin " - ;; https://github.com/pimutils/khal/issues/825 - "and not test_description_and_location_and_categories"))))))) + (invoke "py.test" "tests")))))) (native-inputs `(("python-pytest" ,python-pytest) ("python-pytest-cov" ,python-pytest-cov) ("python-setuptools-scm" ,python-setuptools-scm) ;; Required for tests ("python-freezegun" ,python-freezegun) - ("tzdata" ,tzdata) + ("tzdata" ,tzdata-for-tests) ("vdirsyncer" ,vdirsyncer) ;; Required to build manpage ("python-sphinxcontrib-newsfeed" ,python-sphinxcontrib-newsfeed) diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm index 50bf3abcb9..f16f4ca4f8 100644 --- a/gnu/packages/cdrom.scm +++ b/gnu/packages/cdrom.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2016 Marius Bakke ;;; Copyright © 2017 John Darrington ;;; Copyright © 2017 Thomas Danckaert -;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice +;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2017 ng0 ;;; Copyright © 2018 Oleg Pykhalov ;;; Copyright © 2018, 2019 Ricardo Wurmus @@ -336,13 +336,15 @@ (define-public dvdisaster (package (name "dvdisaster") (version "0.79.5") - (source (origin - (method url-fetch) - (uri (string-append "http://dvdisaster.net/downloads/dvdisaster-" - version ".tar.bz2")) - (sha256 - (base32 - "0f8gjnia2fxcbmhl8b3qkr5b7idl8m855dw7xw2fnmbqwvcm6k4w")))) + (source + (origin + (method url-fetch) + ;; Update this (and update HOME-PAGE) when/if one reappears. + (uri (string-append "https://web.archive.org/web/20180428070843/" + "http://dvdisaster.net/downloads/dvdisaster-" + version ".tar.bz2")) + (sha256 + (base32 "0f8gjnia2fxcbmhl8b3qkr5b7idl8m855dw7xw2fnmbqwvcm6k4w")))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+-2))) @@ -384,7 +386,8 @@ (define-public dvdisaster (copy-file "contrib/dvdisaster48.xpm" (string-append datadir "/pixmaps/dvdisaster.xpm")) #t)))))) - (home-page "http://dvdisaster.net/en/index.html") + (home-page (string-append "https://web.archive.org/web/20180428070843/" + "http://dvdisaster.net/en/index.html")) (synopsis "Error correcting codes for optical media images") (description "Optical media (CD,DVD,BD) keep their data only for a finite time (typically for many years). After that time, data loss develops @@ -656,7 +659,7 @@ (define-public geteltorito (define-public asunder (package (name "asunder") - (version "2.8") + (version "2.9.3") (source (origin (method url-fetch) (uri @@ -665,7 +668,7 @@ (define-public asunder ".tar.bz2")) (sha256 (base32 - "1nq9kd4rd4k2kibf57gdbm0zw2gxa234vvvdhxkm8g5bhx5h3iyq")))) + "1630i1df06y840v3fgdf75jxw1s8kwbfn5bhi0686viah0scccw5")))) (build-system glib-or-gtk-build-system) (arguments '(#:out-of-source? #f diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 9a88a8d873..a38abf0b5b 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -485,13 +485,14 @@ (define-public googletest (version "1.8.0") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/google/googletest/archive/" - "release-" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/google/googletest.git") + (commit (string-append "release-" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "1n5p1m2m3fjrjdj752lf92f9wq3pl5cbsfrb49jqbg52ghkz99jq")))) + "0bjlljmbf8glnd9qjabx73w6pd7ibv43yiyngqvmvgxsabzr8399")))) (build-system cmake-build-system) (arguments `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON"))) diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm index 7d0042872e..7e9f00f4c4 100644 --- a/gnu/packages/chez.scm +++ b/gnu/packages/chez.scm @@ -558,7 +558,7 @@ (define-public chez-mit (synopsis "MIT/GNU Scheme compatibility library for Chez Scheme") (description "This package provides a set of MIT/GNU Scheme compatibility libraries for Chez Scheme. The main goal was to provide the functionality -required to port the program 'Scmutils' to Chez Scheme.") +required to port the program @code{Scmutils} to Chez Scheme.") (license gpl3+))) (define-public chez-scmutils diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index 7d49b06ce3..2678e49ca7 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -80,11 +80,9 @@ (define %preserved-third-party-files "chrome/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+ "courgette/third_party/bsdiff" ;BSD-2, BSD protection license "courgette/third_party/divsufsort" ;Expat - "net/third_party/http2" ;BSD-3 "net/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+ "net/third_party/nss" ;MPL-2.0 "net/third_party/quic" ;BSD-3 - "net/third_party/spdy" ;BSD-3 "net/third_party/uri_template" ;ASL2.0 "third_party/abseil-cpp" ;ASL2.0 "third_party/adobe/flash/flapper_version.h" ;no license, trivial @@ -206,6 +204,7 @@ (define %preserved-third-party-files "third_party/yasm/run_yasm.py" ;BSD-2 or BSD-3 "third_party/zlib/google" ;BSD-3 "url/third_party/mozilla" ;BSD-3, MPL1.1/GPL2+/LGPL2.1+ + "v8/src/third_party/siphash" ;Public domain "v8/src/third_party/utf8-decoder" ;Expat "v8/src/third_party/valgrind" ;BSD-4 "v8/third_party/inspector_protocol" ;BSD-3 @@ -224,8 +223,9 @@ (define* (computed-origin-method gexp-promise hash-algo hash #:system system #:guile-for-build guile))) -(define %chromium-version "72.0.3626.121") -(define %ungoogled-revision "a80839c418de8843dfcd6c13a557f12d26a0a17a") +(define %chromium-version "73.0.3683.86") +(define %ungoogled-revision "4c7fb6d1a86602999f30b58ef8b331b2115c5ad8") +(define %debian-revision "debian/73.0.3683.75-1") (define package-revision "0") (define %package-version (string-append %chromium-version "-" @@ -233,29 +233,43 @@ (define %package-version (string-append %chromium-version "-" (string-take %ungoogled-revision 7))) ;; This is a "computed" origin that does the following: -;; 1) Runs the Ungoogled scripts on a pristine Chromium tarball. -;; 2) Prunes all third_party folders that are not explicitly preserved. -;; 3) Adjusts "GN" build files such that system libraries are preferred. +;; *) Runs the Ungoogled scripts on a pristine Chromium tarball. +;; *) Applies Debians Chromium patches, for their unbundling and GCC work. +;; *) Prunes all third_party directories that are not explicitly preserved. +;; *) Adjusts "GN" build files such that system libraries are preferred. (define ungoogled-chromium-source - (let* ((chromium-source - (origin - (method url-fetch) - (uri (string-append "https://commondatastorage.googleapis.com" - "/chromium-browser-official/chromium-" - %chromium-version ".tar.xz")) - (sha256 - (base32 - "07xwmlvmzfga61nrimqmzl7s29jb4kc94nkzwwlb7sh6nr55a7jc")))) - (ungoogled-source - (origin - (method git-fetch) - (uri (git-reference (url "https://github.com/Eloston/ungoogled-chromium") - (commit %ungoogled-revision))) - (file-name (git-file-name "ungoogled-chromium" - (string-take %ungoogled-revision 7))) - (sha256 - (base32 - "0rgirbxbgjdm3s2kzgj101rjq0clr7x2a7b37kfx2q629z4qlrpc"))))) + (let ((chromium-source + (origin + (method url-fetch) + (uri (string-append "https://commondatastorage.googleapis.com" + "/chromium-browser-official/chromium-" + %chromium-version ".tar.xz")) + (sha256 + (base32 + "18xzddqi8rgng5vksx23jaiv103prxc38pshwp702nfjfqap7fwy")))) + (ungoogled-source + (origin + (method git-fetch) + (uri (git-reference (url "https://github.com/Eloston/ungoogled-chromium") + (commit %ungoogled-revision))) + (file-name (git-file-name "ungoogled-chromium" + (string-take %ungoogled-revision 7))) + (sha256 + (base32 + "0njx505il07d237fzgbhciy78rz7h77r2ai5crbnsx2gdr9kpvd1")))) + (debian-source + (origin + (method git-fetch) + (uri (git-reference + (url "https://salsa.debian.org/chromium-team/chromium.git") + (commit %debian-revision))) + (file-name (git-file-name "debian-chromium-packaging" + (if (string-prefix? "debian/" %debian-revision) + (cadr (string-split %debian-revision #\/)) + (string-take %debian-revision 7)))) + (sha256 + (base32 + "1pq0l3m7frf9ygxc1gva1191fxf3d1phaaqp7g3b70mgbabp0mxi"))))) (origin (method computed-origin-method) @@ -265,7 +279,10 @@ (define ungoogled-chromium-source (delay (with-imported-modules '((guix build utils)) #~(begin - (use-modules (guix build utils)) + (use-modules (guix build utils) + (ice-9 rdelim) + (srfi srfi-1) + (srfi srfi-26)) (let ((chromium-dir (string-append "chromium-" #$%chromium-version)) (preserved-files (list #$@%preserved-third-party-files))) @@ -281,41 +298,61 @@ (define ungoogled-chromium-source (with-directory-excursion "/tmp/ungoogled" - ;; Create a custom "bundle" that inherits from linux_rooted - ;; and adds an additional patch. - (format #t "Creating Guix config bundle...~%") - (force-output) - (mkdir-p "config_bundles/guix") - (call-with-output-file "config_bundles/guix/bundlemeta.ini" - (lambda (port) - (format port - "[bundle] -display_name = GNU Guix -depends = linux_rooted\n"))) - (call-with-output-file "config_bundles/guix/patch_order.list" - (lambda (port) - (format port "debian_buster/system/openjpeg.patch\n"))) - (format #t "Unpacking chromium tarball...~%") (force-output) (invoke "tar" "xf" #+chromium-source) (format #t "Ungooglifying...~%") (force-output) - (invoke "python3" "run_buildkit_cli.py" "prune" - "-b" "config_bundles/guix" chromium-dir) - (invoke "python3" "run_buildkit_cli.py" "patches" "apply" - "-b" "config_bundles/guix" chromium-dir) - (invoke "python3" "run_buildkit_cli.py" "domains" "apply" - "-b" "config_bundles/linux_rooted" + (invoke "python3" "utils/prune_binaries.py" chromium-dir + "pruning.list") + (invoke "python3" "utils/patches.py" "apply" + chromium-dir "patches") + (invoke "python3" "utils/domain_substitution.py" "apply" "-r" + "domain_regex.list" "-f" "domain_substitution.list" "-c" "/tmp/domainscache.tar.gz" chromium-dir) (with-directory-excursion chromium-dir + + (format #t "applying Debian patches...~%") + (force-output) + (let* ((debian #+debian-source) + (patches (string-append debian "/debian/patches")) + (series (string-append patches "/series")) + (grep-q (lambda (query file) + (with-input-from-file file + (lambda () + (let loop ((line (read-line)) + (match #f)) + (if (or match (eof-object? line)) + (if match #t #f) + (loop (read-line) + (string-contains line query))))))))) + (with-input-from-file series + (lambda () + (let loop ((line (read-line))) + (unless (eof-object? line) + (when (and (> (string-length line) 1) + ;; Skip the Debian-specific ones. + (not (string-prefix? "debianization/" line)) + ;; And those that conflict with Ungoogled. + (not (any (cute string-suffix? <> line) + '("widevine-buildflag.patch" + "signin.patch" + "third-party-cookies.patch"))) + ;; Ungoogled includes a subset of the Debian + ;; patches. Exclude those already present. + (not (grep-q line "../patches/series"))) + (invoke "patch" "--force" "-p1" "--input" + (string-append patches "/" line) + "--no-backup-if-mismatch")) + (loop (read-line))))))) + (format #t "Pruning third party files...~%") (force-output) (apply invoke "python" - "build/linux/unbundle/remove_bundled_libraries.py" - "--do-remove" preserved-files) + "build/linux/unbundle/remove_bundled_libraries.py" + "--do-remove" preserved-files) (format #t "Replacing GN files...~%") (force-output) @@ -427,7 +464,12 @@ (define-public ungoogled-chromium "use_openh264=true" "use_pulseaudio=true" "link_pulseaudio=true" - "use_vaapi=true" + + ;; VA-API acceleration is currently only supported on x86_64-linux. + ,@(if (string-prefix? "x86_64" (or (%current-target-system) + (%current-system))) + '("use_vaapi=true") + '()) ;; Don't arbitrarily restrict formats supported by system ffmpeg. "proprietary_codecs=true" @@ -502,12 +544,13 @@ (define-public ungoogled-chromium (substitute* "third_party/webrtc/rtc_base/strings/json.h" (("#include \"third_party/jsoncpp/") "#include \"json/")) - (substitute* "media/base/decode_capabilities.cc" - (("third_party/libvpx/source/libvpx/") "")) - - (substitute* "ui/gfx/skia_util.h" + (substitute* '("ui/gfx/skia_util.h" + "components/viz/common/resources/resource_format_utils.h") (("third_party/vulkan/include/") "")) + (substitute* "third_party/skia/include/gpu/vk/GrVkVulkan.h" + (("\\.\\./\\.\\./include/third_party/vulkan/") "")) + ;; Building chromedriver embeds some files using the ZIP ;; format which doesn't support timestamps before ;; 1980. Therefore, advance the timestamps of the files diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 0aa65fe638..b07630a54d 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -1050,7 +1050,7 @@ (define (make-gcc-toolchain gcc) (description "This package provides a complete GCC tool chain for C/C++ development to be installed in user profiles. This includes GCC, as well as libc (headers -and binaries, plus debugging symbols in the 'debug' output), and Binutils.") +and binaries, plus debugging symbols in the @code{debug} output), and Binutils.") (home-page "https://gcc.gnu.org/") (outputs '("out" "debug" "static")) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index fee657c3f8..ec80dc92ec 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -158,8 +158,8 @@ (define-public fastjar (home-page "https://savannah.nongnu.org/projects/fastjar") (synopsis "Replacement for Sun's 'jar' utility") (description - "FastJar is an attempt to create a much faster replacement for Sun's 'jar' -utility. Instead of being written in Java, FastJar is written in C.") + "FastJar is an attempt to create a much faster replacement for Sun's +@code{jar} utility. Instead of being written in Java, FastJar is written in C.") (license license:gpl2+))) (define-public libtar diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 5a3762fd7a..f741b20f15 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -40,19 +40,24 @@ (define-module (gnu packages cran) #:use-module (guix build-system r) #:use-module (gnu packages algebra) #:use-module (gnu packages base) + #:use-module (gnu packages bioinformatics) + #:use-module (gnu packages c) #:use-module (gnu packages compression) #:use-module (gnu packages curl) #:use-module (gnu packages databases) #:use-module (gnu packages fontutils) #:use-module (gnu packages gcc) + #:use-module (gnu packages geo) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gl) #:use-module (gnu packages gnome) #:use-module (gnu packages graph) #:use-module (gnu packages gtk) #:use-module (gnu packages haskell) + #:use-module (gnu packages icu4c) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages java) #:use-module (gnu packages javascript) #:use-module (gnu packages lisp) #:use-module (gnu packages machine-learning) @@ -60,6 +65,7 @@ (define-module (gnu packages cran) #:use-module (gnu packages mpi) #:use-module (gnu packages multiprecision) #:use-module (gnu packages networking) + #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) @@ -889,14 +895,14 @@ (define-public r-miniui (define-public r-feather (package (name "r-feather") - (version "0.3.2") + (version "0.3.3") (source (origin (method url-fetch) (uri (cran-uri "feather" version)) (sha256 (base32 - "138vnlwhkwayyim4rbx6rnf91kzhfij6v2f91ppx2174ky5611h6")))) + "0ls8lmygyjq60467s88h66d7fczjp1d3a2106rfq4dx9lyfvdfsa")))) (build-system r-build-system) (propagated-inputs `(("r-hms" ,r-hms) @@ -923,8 +929,8 @@ (define-public r-maps (home-page "https://cran.r-project.org/web/packages/maps") (synopsis "Draw geographical maps") (description "This package provides an R module for display of maps. -Projection code and larger maps are in separate packages ('mapproj' and -'mapdata').") +Projection code and larger maps are in separate packages (@code{mapproj} and +@code{mapdata}).") (license license:gpl2))) (define-public r-mapproj @@ -1218,14 +1224,14 @@ (define-public r-plogr (define-public r-pls (package (name "r-pls") - (version "2.7-0") + (version "2.7-1") (source (origin (method url-fetch) (uri (cran-uri "pls" version)) (sha256 (base32 - "0xaqqgmdvfh7g7v1m4bcwjqzph68b9cq3bn4kjisfsadl54i5p2x")))) + "0jw3zl5z06023zxr74phnvwax8m3i4a4i6lsqiq6j15aq9zq3zgq")))) (build-system r-build-system) (home-page "http://mevik.net/work/software/pls.html") (synopsis "Partial Least Squares and Principal Component Regression") @@ -1345,9 +1351,9 @@ (define-public r-rcpp mapped back and forth to C++ equivalents which facilitates both writing of new code as well as easier integration of third-party libraries. Documentation about Rcpp is provided by several vignettes included in this package, via the -'Rcpp Gallery' site at , the paper by Eddelbuettel +@code{Rcpp Gallery} site at , the paper by Eddelbuettel and Francois (2011, JSS), and the book by Eddelbuettel (2013, Springer); see -'citation(\"Rcpp\")' for details on these last two.") +@code{citation(\"Rcpp\")} for details on these last two.") (license license:gpl2+))) (define-public r-bindr @@ -2476,20 +2482,20 @@ (define-public r-rpostgresql (define-public r-geometry (package (name "r-geometry") - (version "0.4.0") + (version "0.4.1") (source (origin (method url-fetch) (uri (cran-uri "geometry" version)) (sha256 (base32 - "0lpih1a93jz021krdv78zf6fq95g8i0xw4r9aj5gq36a0vzc3i0y")))) + "0v3ivaw8vbjyxg08dd573qk3kqfyknj5hli9503dza6p6xz0dzmm")))) (build-system r-build-system) (propagated-inputs `(("r-magic" ,r-magic) ("r-lpsolve" ,r-lpsolve) ("r-rcpp" ,r-rcpp) - ("r-cppprogress" ,r-rcppprogress))) + ("r-rcppprogress" ,r-rcppprogress))) (home-page "http://geometry.r-forge.r-project.org/") (synopsis "Mesh generation and surface tesselation") (description @@ -3944,14 +3950,14 @@ (define-public r-aggregation (define-public r-quantmod (package (name "r-quantmod") - (version "0.4-13") + (version "0.4-14") (source (origin (method url-fetch) (uri (cran-uri "quantmod" version)) (sha256 (base32 - "16aldg96z7amp5mr90nb8127yy04gxsihfr26km5p3cx3j117yv0")))) + "1csljagnpkr1mmc18h70b64zbyj07kx972nip9dng39jfg7ilnyr")))) (build-system r-build-system) (propagated-inputs `(("r-curl" ,r-curl) @@ -5484,14 +5490,14 @@ (define-public r-nbclust (define-public r-hdf5r (package (name "r-hdf5r") - (version "1.0.1") + (version "1.1.1") (source (origin (method url-fetch) (uri (cran-uri "hdf5r" version)) (sha256 (base32 - "0h222q80li8rs3cv4c5lvv3g91ygd51w43ay6fwyk9q9d315vwrj")))) + "1cq4rdfd0rqvy29ml3x1iid142ljnscs8f4d2y1na13hlvkl3k05")))) (build-system r-build-system) (inputs `(("hdf5" ,hdf5) @@ -5534,14 +5540,14 @@ (define-public r-itertools (define-public r-polynom (package (name "r-polynom") - (version "1.3-9") + (version "1.4-0") (source (origin (method url-fetch) (uri (cran-uri "polynom" version)) (sha256 (base32 - "1s4xxv5rvpigawknvq27v9vzvs83phfsj5h8mim2lmf5bj950nnk")))) + "1pflscwc0qzdf0y60j7s0dkglgmz18xajywfbn6s263idyr8idy5")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/polynom/") (synopsis "Functions for univariate polynomial manipulations") @@ -6054,14 +6060,14 @@ (define-public r-goplot (define-public r-getopt (package (name "r-getopt") - (version "1.20.2") + (version "1.20.3") (source (origin (method url-fetch) (uri (cran-uri "getopt" version)) (sha256 (base32 - "13p35lbpy7i578752fa71sbfvcsqw5qfa9p6kf8b5m3c5p9i4v1x")))) + "0zzmzgwl9a4y3s34600vmih22d6y32294f9bvxrnmffnvkgmy7sk")))) (build-system r-build-system) (home-page "https://github.com/trevorld/getopt") (synopsis "Command-line option processor for R") @@ -8800,14 +8806,14 @@ (define-public r-stabledist (define-public r-gsl (package (name "r-gsl") - (version "2.1-5") + (version "2.1-6") (source (origin (method url-fetch) (uri (cran-uri "gsl" version)) (sha256 (base32 - "18kzgwmyfqg570gn2b33fm6mj87fiaa4a3bx954yrj8iq28im71v")))) + "0p4rh7npp6qbfc5sxjq86xjn7c9ivf3pd60qf1hldwckjqin7m7m")))) (build-system r-build-system) (inputs `(("gsl" ,gsl))) @@ -11823,3 +11829,2035 @@ (define-public r-reinforcelearn can be used with function approximation, eligibility traces (Singh & Sutton, 1996) and experience replay (Mnih et al., 2013).") (license license:expat))) + +(define-public r-lemon + (package + (name "r-lemon") + (version "0.4.3") + (source + (origin + (method url-fetch) + (uri (cran-uri "lemon" version)) + (sha256 + (base32 + "0wsn5bfg10wq4dnrgpyraz2bzx9p19c7hf1pwj3h4zmpqfgsdbpw")))) + (build-system r-build-system) + (propagated-inputs + `(("r-ggplot2" ,r-ggplot2) + ("r-gridextra" ,r-gridextra) + ("r-gtable" ,r-gtable) + ("r-knitr" ,r-knitr) + ("r-lattice" ,r-lattice) + ("r-plyr" ,r-plyr) + ("r-scales" ,r-scales))) + (home-page "https://github.com/stefanedwards/lemon") + (synopsis "Freshen up your ggplot2 plots") + (description + "This package provides functions for working with legends and axis lines +of ggplot2, facets that repeat axis lines on all panels, and some knitr +extensions.") + (license license:gpl3))) + +(define-public r-wgaim + (package + (name "r-wgaim") + (version "1.4-11") + (source + (origin + (method url-fetch) + (uri (cran-uri "wgaim" version)) + (sha256 + (base32 + "1jjyp100dcjjczp61xlvhmy48ynniqcys535vzbgswhr7fvijymg")))) + (build-system r-build-system) + (propagated-inputs + `(("r-lattice" ,r-lattice) + ("r-qtl" ,r-qtl))) + (home-page "https://cran.r-project.org/web/packages/wgaim") + (synopsis "Whole genome average interval mapping for QTL detection") + (description + "This package integrates sophisticated mixed modelling methods with a +whole genome approach to detecting significant QTL in linkage maps.") + (license license:gpl2+))) + +(define-public r-bedr + (package + (name "r-bedr") + (version "1.0.6") + (source + (origin + (method url-fetch) + (uri (cran-uri "bedr" version)) + (sha256 + (base32 + "0q790695h8bls0qw284n1zn7lxzym1dnnj095fsbjga2p116z4yv")))) + (build-system r-build-system) + (propagated-inputs + `(("r-data-table" ,r-data-table) + ("r-r-utils" ,r-r-utils) + ("r-testthat" ,r-testthat) + ("r-venndiagram" ,r-venndiagram) + ("r-yaml" ,r-yaml) + ("bedops" ,bedops) + ("bedtools" ,bedtools) + ("htslib" ,htslib))) ; for tabix + (native-inputs + `(("r-knitr" ,r-knitr))) ; for vignettes + (home-page "https://cran.r-project.org/web/packages/bedr") + (synopsis "Genomic region processing") + (description + "This package is for genomic regions processing using command line tools +such as BEDTools, BEDOPS and Tabix. These tools offer scalable and efficient +utilities to perform genome arithmetic e.g indexing, formatting and merging. +The bedr package's API enhances access to these tools as well as offers +additional utilities for genomic regions processing.") + (license license:gpl2))) + +(define-public r-partitions + (package + (name "r-partitions") + (version "1.9-19") + (source + (origin + (method url-fetch) + (uri (cran-uri "partitions" version)) + (sha256 + (base32 + "1pklfnjdc094c8nzkqcdvqzdh8v3p5n8jbg4pf9678iw648saiyx")))) + (build-system r-build-system) + (propagated-inputs + `(("r-gmp" ,r-gmp) + ("r-polynom" ,r-polynom))) + (home-page "https://cran.r-project.org/web/packages/partitions") + (synopsis "Additive partitions of integers") + (description + "This package provides tools to enumerates the partitions, unequal +partitions, and restricted partitions of an integer; the three corresponding +partition functions are also given.") + ;; Any version of the GPL + (license license:gpl2+))) + +(define-public r-brobdingnag + (package + (name "r-brobdingnag") + (version "1.2-6") + (source + (origin + (method url-fetch) + (uri (cran-uri "Brobdingnag" version)) + (sha256 + (base32 + "1m3ajvcksqfck5l5hj5xiflj4ry6d896ybv4f0xxks8chgnwmv0r")))) + (properties `((upstream-name . "Brobdingnag"))) + (build-system r-build-system) + (home-page "https://github.com/RobinHankin/Brobdingnag.git") + (synopsis "Very large numbers in R") + (description + "This package handles very large numbers in R. Real numbers are held +using their natural logarithms, plus a logical flag indicating sign. The +package includes a vignette that gives a step-by-step introduction to using S4 +methods.") + ;; Any version of the GPL + (license license:gpl2+))) + +(define-public r-untb + (package + (name "r-untb") + (version "1.7-4") + (source + (origin + (method url-fetch) + (uri (cran-uri "untb" version)) + (sha256 + (base32 + "1i7m4vfslsix98dwx4jlrsldm7fhhfp25gr7aapcxqxms7ryaby6")))) + (build-system r-build-system) + (propagated-inputs + `(("r-brobdingnag" ,r-brobdingnag) + ("r-partitions" ,r-partitions) + ("r-polynom" ,r-polynom))) + (home-page "https://github.com/RobinHankin/untb.git") + (synopsis "Ecological drift under the UNTB") + (description + "This package provides numerical simulations, and visualizations, of +Hubbell's @dfn{Unified Neutral Theory of Biodiversity} (UNTB).") + (license license:gpl2+))) + +(define-public r-stepwise + (package + (name "r-stepwise") + (version "0.3") + (source + (origin + (method url-fetch) + (uri (cran-uri "stepwise" version)) + (sha256 + (base32 + "1lbx1bxwkf9dw6q46w40pp7h5nkxgghmx8rkpaymm6iybc7gyir2")))) + (build-system r-build-system) + (home-page "http://stat.sfu.ca/statgen/research/stepwise.html") + (synopsis "Stepwise detection of recombination breakpoints") + (description + "This package provides a stepwise approach to identifying recombination +breakpoints in a genomic sequence alignment.") + (license license:gpl2+))) + +(define-public r-snpmaxsel + (package + (name "r-snpmaxsel") + (version "1.0-3") + (source + (origin + (method url-fetch) + (uri (cran-uri "SNPmaxsel" version)) + (sha256 + (base32 + "0pjvixwqzjd3jwccc8yqq9c76afvbmfq0z1w0cwyj8bblrjpx13z")))) + (properties `((upstream-name . "SNPmaxsel"))) + (build-system r-build-system) + (propagated-inputs + `(("r-combinat" ,r-combinat) + ("r-mvtnorm" ,r-mvtnorm))) + (home-page "https://cran.r-project.org/web/packages/SNPmaxsel/index.html") + (synopsis "Maximally selected statistics for SNP data") + (description + "This package implements asymptotic methods related to maximally selected +statistics, with applications to @dfn{single-nucleotide polymorphism} (SNP) +data.") + (license license:gpl2+))) + +(define-public r-acsnminer + (package + (name "r-acsnminer") + (version "0.16.8.25") + (source (origin + (method url-fetch) + (uri (cran-uri "ACSNMineR" version)) + (sha256 + (base32 + "0gh604s8qall6zfjlwcg2ilxjvz08dplf9k5g47idhv43scm748l")))) + (properties `((upstream-name . "ACSNMineR"))) + (build-system r-build-system) + (propagated-inputs + `(("r-ggplot2" ,r-ggplot2) + ("r-gridextra" ,r-gridextra))) + (home-page "https://cran.r-project.org/web/packages/ACSNMineR") + (synopsis "Gene enrichment analysis") + (description + "This package provides tools to compute and represent gene set enrichment +or depletion from your data based on pre-saved maps from the @dfn{Atlas of +Cancer Signalling Networks} (ACSN) or user imported maps. The gene set +enrichment can be run with hypergeometric test or Fisher exact test, and can +use multiple corrections. Visualization of data can be done either by +barplots or heatmaps.") + (license license:gpl2+))) + +(define-public r-seqinr + (package + (name "r-seqinr") + (version "3.4-5") + (source + (origin + (method url-fetch) + (uri (cran-uri "seqinr" version)) + (sha256 + (base32 + "17zv0n5cji17izwmwg0jcbxbjl3w5rls91w15svcnlpxjms38ahn")))) + (build-system r-build-system) + (propagated-inputs + `(("r-ade4" ,r-ade4) + ("r-segmented" ,r-segmented))) + (inputs + `(("zlib" ,zlib))) + (home-page "http://seqinr.r-forge.r-project.org/") + (synopsis "Biological sequences retrieval and analysis") + (description + "This package provides tools for exploratory data analysis and data +visualization of biological sequence (DNA and protein) data. It also includes +utilities for sequence data management under the ACNUC system.") + (license license:gpl2+))) + +(define-public r-units + (package + (name "r-units") + (version "0.6-2") + (source + (origin + (method url-fetch) + (uri (cran-uri "units" version)) + (sha256 + (base32 + "0w7iwp8c66d5gj4rsb8c87vb0ja39hym6fmfnqaqwb3is1snfa2y")))) + (build-system r-build-system) + (inputs + `(("udunits" ,udunits))) + (propagated-inputs + `(("r-rcpp" ,r-rcpp))) + (home-page "https://github.com/r-quantities/units/") + (synopsis "Measurement Units for R Vectors") + (description + "This package provides support for measurement units in R vectors, +matrices and arrays: automatic propagation, conversion, derivation and +simplification of units; raising errors in case of unit incompatibility. It +is compatible with the @code{POSIXct}, @code{Date} and @code{difftime} +classes.") + (license license:gpl2))) + +(define-public r-classint + (package + (name "r-classint") + (version "0.3-1") + (source + (origin + (method url-fetch) + (uri (cran-uri "classInt" version)) + (sha256 + (base32 + "1fcjrb593bzvx1z57hq1sjs2gp6g7sm4d4xrhasfrps4nmbzirp2")))) + (properties `((upstream-name . "classInt"))) + (build-system r-build-system) + (propagated-inputs + `(("r-class" ,r-class) + ("r-e1071" ,r-e1071))) + (native-inputs `(("gfortran" ,gfortran))) + (home-page "https://github.com/r-spatial/classInt/") + (synopsis "Choose univariate class intervals") + (description + "This package provides selected commonly used methods for choosing +univariate class intervals for mapping or other graphics purposes.") + (license license:gpl2+))) + +(define-public r-spdata + (package + (name "r-spdata") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "spData" version)) + (sha256 + (base32 + "162cqb331ki43jx4r8lpkjpn2l712figd896rnawg9j1jmjyl96y")))) + (properties `((upstream-name . "spData"))) + (build-system r-build-system) + (home-page "https://github.com/Nowosad/spData") + (synopsis "Datasets for spatial analysis") + (description + "This a package containing diverse spatial datasets for demonstrating, +benchmarking and teaching spatial data analysis. It includes R data of class +@code{sf}, @code{Spatial}, and @code{nb}. It also contains data stored in a +range of file formats including GeoJSON, ESRI Shapefile and GeoPackage. Some +of the datasets are designed to illustrate specific analysis techniques. +@code{cycle_hire()} and @code{cycle_hire_osm()}, for example, are designed to +illustrate point pattern analysis techniques.") + (license license:cc0))) + +(define-public r-learnbayes + (package + (name "r-learnbayes") + (version "2.15.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "LearnBayes" version)) + (sha256 + (base32 + "0ch54v2zz2yyyk0lvn5rfikdmyz1qh9j1wk3585wl8v58mc0h4cv")))) + (properties `((upstream-name . "LearnBayes"))) + (build-system r-build-system) + (home-page "https://cran.r-project.org/web/packages/LearnBayes") + (synopsis "Functions for learning Bayesian inference") + (description + "This package provides a collection of functions helpful in learning the +basic tenets of Bayesian statistical inference. It contains functions for +summarizing basic one and two parameter posterior distributions and predictive +distributions. It contains MCMC algorithms for summarizing posterior +distributions defined by the user. It also contains functions for regression +models, hierarchical models, Bayesian tests, and illustrations of Gibbs +sampling.") + (license license:gpl2+))) + +(define-public r-deldir + (package + (name "r-deldir") + (version "0.1-16") + (source + (origin + (method url-fetch) + (uri (cran-uri "deldir" version)) + (sha256 + (base32 + "0549kj0hlkdyvm5axsm3np30wg53fm2pxybijzw0avlgsd2y2n2q")))) + (build-system r-build-system) + (native-inputs `(("gfortran" ,gfortran))) + (home-page "https://cran.r-project.org/web/packages/deldir") + (synopsis "Delaunay triangulation and Dirichlet (Voronoi) tessellation") + (description + "This package provides tools for calculating the Delaunay triangulation +and the Dirichlet or Voronoi tessellation (with respect to the entire plane) +of a planar point set. It plots triangulations and tessellations in various +ways, clips tessellations to sub-windows, calculates perimeters of +tessellations, and summarizes information about the tiles of the +tessellation.") + (license license:gpl2+))) + +(define-public r-sf + (package + (name "r-sf") + (version "0.7-3") + (source + (origin + (method url-fetch) + (uri (cran-uri "sf" version)) + (sha256 + (base32 + "1b9lbid0hmmz8m5vhg8mi2mi2rclia6qwzd1jr8s81i2l0md828d")))) + (build-system r-build-system) + (inputs + `(("gdal" ,gdal) + ("geos" ,geos) + ("proj" ,proj.4) + ("zlib" ,zlib))) + (propagated-inputs + `(("r-classint" ,r-classint) + ("r-dbi" ,r-dbi) + ("r-magrittr" ,r-magrittr) + ("r-rcpp" ,r-rcpp) + ("r-units" ,r-units))) + (native-inputs `(("pkg-config" ,pkg-config))) + (home-page "https://github.com/r-spatial/sf/") + (synopsis "Simple features for R") + (description + "This package provides support for simple features, a standardized way to +encode spatial vector data. It binds to GDAL for reading and writing data, to +GEOS for geometrical operations, and to PROJ for projection conversions and +datum transformations.") + ;; Either of these licenses + (license (list license:gpl2 license:expat)))) + +(define-public r-spdep + (package + (name "r-spdep") + (version "1.0-2") + (source + (origin + (method url-fetch) + (uri (cran-uri "spdep" version)) + (sha256 + (base32 + "1ciqn5xslm4ryad10nm6fqy1qhq3qhd4hx9bj94kphfm8x1zm7kg")))) + (build-system r-build-system) + (propagated-inputs + `(("r-boot" ,r-boot) + ("r-coda" ,r-coda) + ("r-deldir" ,r-deldir) + ("r-expm" ,r-expm) + ("r-gmodels" ,r-gmodels) + ("r-learnbayes" ,r-learnbayes) + ("r-mass" ,r-mass) + ("r-matrix" ,r-matrix) + ("r-nlme" ,r-nlme) + ("r-sf" ,r-sf) + ("r-sp" ,r-sp) + ("r-spdata" ,r-spdata))) + (home-page "https://github.com/r-spatial/spdep/") + (synopsis "Spatial dependence: weighting schemes, statistics and models") + (description + "This package provides a collection of functions to create spatial +weights matrix objects from polygon contiguities, from point patterns by +distance and tessellations, for summarizing these objects, and for permitting +their use in spatial data analysis, including regional aggregation by minimum +spanning tree.") + (license license:gpl2+))) + +(define-public r-adegenet + (package + (name "r-adegenet") + (version "2.1.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "adegenet" version)) + (sha256 + (base32 + "0ynfblp0hbd3dp3k86fn1wyhqr28lk6hs2bg4q7gyf0sfdfzwhrh")))) + (build-system r-build-system) + (propagated-inputs + `(("r-ade4" ,r-ade4) + ("r-ape" ,r-ape) + ("r-boot" ,r-boot) + ("r-dplyr" ,r-dplyr) + ("r-ggplot2" ,r-ggplot2) + ("r-igraph" ,r-igraph) + ("r-mass" ,r-mass) + ("r-reshape2" ,r-reshape2) + ("r-seqinr" ,r-seqinr) + ("r-shiny" ,r-shiny) + ("r-spdep" ,r-spdep) + ("r-vegan" ,r-vegan))) + (home-page "https://github.com/thibautjombart/adegenet") + (synopsis "Exploratory analysis of genetic and genomic data") + (description + "This package provides a toolset for the exploration of genetic and +genomic data. Adegenet provides formal (S4) classes for storing and handling +various genetic data, including genetic markers with varying ploidy and +hierarchical population structure (@code{genind} class), alleles counts by +populations (@code{genpop}), and genome-wide SNP data (@code{genlight}). It +also implements original multivariate methods (DAPC, sPCA), graphics, +statistical tests, simulation tools, distance and similarity measures, and +several spatial methods. A range of both empirical and simulated datasets is +also provided to illustrate various methods.") + (license license:gpl2+))) + +(define-public r-pegas + (package + (name "r-pegas") + (version "0.11") + (source + (origin + (method url-fetch) + (uri (cran-uri "pegas" version)) + (sha256 + (base32 + "0l21bapzbjcvblbvks3jh9rpy9hng1ccd7f0glhqw695lc737bpx")))) + (build-system r-build-system) + (propagated-inputs + `(("r-adegenet" ,r-adegenet) + ("r-ape" ,r-ape))) + (home-page "http://ape-package.ird.fr/pegas.html") + (synopsis "Population and evolutionary genetics analysis system") + (description + "This package provides functions for reading, writing, plotting, +analysing, and manipulating allelic and haplotypic data, including from VCF +files, and for the analysis of population nucleotide sequences and +micro-satellites including coalescent analyses, linkage disequilibrium, +population structure (Fst, Amova) and equilibrium (HWE), haplotype networks, +minimum spanning tree and network, and median-joining networks.") + (license license:gpl2+))) + +(define-public r-rmetasim + (package + (name "r-rmetasim") + (version "3.1.7") + (source + (origin + (method url-fetch) + (uri (cran-uri "rmetasim" version)) + (sha256 + (base32 + "0sz4mdprdi6sgkfwfdvh2hr9nxiwq17sw0vggq3cvs7lzb0i6m9r")))) + (build-system r-build-system) + (propagated-inputs + `(("r-ade4" ,r-ade4) + ("r-adegenet" ,r-adegenet) + ("r-gtools" ,r-gtools) + ("r-pegas" ,r-pegas))) + (home-page "https://cran.r-project.org/web/packages/rmetasim") + (synopsis "Individual-based population genetic simulation environment") + (description + "This package provides an interface between R and the metasim simulation +engine. The simulation environment is documented in: Strand, A.(2002), +Metasim 1.0: an individual-based environment for simulating population +genetics of complex population dynamics.") + ;; Any GPL version + (license license:gpl2+))) + +(define-public r-genetics + (package + (name "r-genetics") + (version "1.3.8.1.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "genetics" version)) + (sha256 + (base32 + "0p59r4vxhy68d7cv2s2k4vbgnkxji21naz9jmdry9wxclrg7fw28")))) + (build-system r-build-system) + (propagated-inputs + `(("r-combinat" ,r-combinat) + ("r-gdata" ,r-gdata) + ("r-gtools" ,r-gtools) + ("r-mass" ,r-mass) + ("r-mvtnorm" ,r-mvtnorm))) + (home-page "https://cran.r-project.org/web/packages/genetics/") + (synopsis "Population genetics") + (description + "This package provides classes and methods for handling genetic data. +It includes classes to represent genotypes and haplotypes at single markers up +to multiple markers on multiple chromosomes. Function include allele +frequencies, flagging homo/heterozygotes, flagging carriers of certain +alleles, estimating and testing for Hardy-Weinberg disequilibrium, estimating +and testing for linkage disequilibrium, ...") + ;; Any GPL version. + (license license:gpl2+))) + +(define-public r-snp-plotter + (package + (name "r-snp-plotter") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "snp.plotter" version)) + (sha256 + (base32 + "16apsqvkah5l0d5qcwp3lq2jspkb6n62wzr0wskmj84jblx483vv")))) + (properties `((upstream-name . "snp.plotter"))) + (build-system r-build-system) + (propagated-inputs `(("r-genetics" ,r-genetics))) + (home-page "https://cran.r-project.org/web/packages/snp.plotter/") + (synopsis "Plot p-values using single SNP and/or haplotype data") + (description + "This package helps you create plots of p-values using single SNP and/or +haplotype data. Main features of the package include options to display a +@dfn{linkage disequilibrium} (LD) plot and the ability to plot multiple +datasets simultaneously. Plots can be created using global and/or individual +haplotype p-values along with single SNP p-values. Images are created as +either PDF/EPS files.") + (license license:gpl2+))) + +(define-public r-polspline + (package + (name "r-polspline") + (version "1.1.14") + (source + (origin + (method url-fetch) + (uri (cran-uri "polspline" version)) + (sha256 + (base32 + "0g4s5nwi13yfs6b169yw8vrs48nvjyc014k2v7ybcxarl8z81va0")))) + (build-system r-build-system) + (native-inputs `(("gfortran" ,gfortran))) + (home-page "https://cran.r-project.org/web/packages/polspline/") + (synopsis "Polynomial spline routines") + (description + "This package provides routines for the polynomial spline fitting +routines hazard regression, hazard estimation with flexible tails, logspline, +lspec, polyclass, and polymars.") + (license license:gpl2+))) + +(define-public r-rms + (package + (name "r-rms") + (version "5.1-3") + (source + (origin + (method url-fetch) + (uri (cran-uri "rms" version)) + (sha256 + (base32 + "1sw9a0iqiips580jpbk7yiqgyiswihvaqbnq4ybsmd4ki86i5isz")))) + (build-system r-build-system) + (propagated-inputs + `(("r-ggplot2" ,r-ggplot2) + ("r-hmisc" ,r-hmisc) + ("r-htmltable" ,r-htmltable) + ("r-htmltools" ,r-htmltools) + ("r-lattice" ,r-lattice) + ("r-multcomp" ,r-multcomp) + ("r-nlme" ,r-nlme) + ("r-polspline" ,r-polspline) + ("r-quantreg" ,r-quantreg) + ("r-rpart" ,r-rpart) + ("r-sparsem" ,r-sparsem) + ("r-survival" ,r-survival))) + (native-inputs `(("gfortran" ,gfortran))) + (home-page "http://biostat.mc.vanderbilt.edu/rms") + (synopsis "Regression modeling strategies") + (description + "This is a package for regression modeling, testing, estimation, +validation, graphics, prediction, and typesetting by storing enhanced model +design attributes in the fit. The rms package is a collection of functions +that assist with and streamline modeling. It also contains functions for +binary and ordinal logistic regression models, ordinal models for continuous Y +with a variety of distribution families, and the Buckley-James multiple +regression model for right-censored responses, and implements penalized +maximum likelihood estimation for logistic and ordinary linear models. The +package works with almost any regression model, but it was especially written +to work with binary or ordinal regression models, Cox regression, accelerated +failure time models, ordinary linear models, the Buckley-James model, +generalized least squares for serially or spatially correlated observations, +generalized linear models, and quantile regression.") + (license license:gpl2+))) + +(define-public r-haplo-stats + (package + (name "r-haplo-stats") + (version "1.7.9") + (source + (origin + (method url-fetch) + (uri (cran-uri "haplo.stats" version)) + (sha256 + (base32 + "19kxascqq5qz0zdxx0w837ji207y1z2ggxkl4vmlbay03k2dw2mx")))) + (properties `((upstream-name . "haplo.stats"))) + (build-system r-build-system) + (propagated-inputs + `(("r-rms" ,r-rms))) + (native-inputs + `(("r-r-rsp" ,r-r-rsp))) ; for vignettes + (home-page "https://www.mayo.edu/research/labs/statistical-genetics-genetic-epidemiology/software") + (synopsis "Analysis of haplotypes when linkage phase is ambiguous") + (description + "This package provides routines for the analysis of indirectly measured +haplotypes. The statistical methods assume that all subjects are unrelated +and that haplotypes are ambiguous (due to unknown linkage phase of the genetic +markers). The main functions are: @code{haplo.em()}, @code{haplo.glm()}, +@code{haplo.score()}, and @code{haplo.power()}; all of which have detailed +examples in the vignette.") + (license license:gpl2+))) + +(define-public r-bqtl + (package + (name "r-bqtl") + (version "1.0-32") + (source + (origin + (method url-fetch) + (uri (cran-uri "bqtl" version)) + (sha256 + (base32 + "0jjqgsm9fmvz5nkgz608xfljjpmaf4rs4f7kxvpqn4b1l9s5lhci")))) + (build-system r-build-system) + (native-inputs `(("gfortran" ,gfortran))) + (home-page "http://famprevmed.ucsd.edu/faculty/cberry/bqtl/") + (synopsis "Bayesian QTL mapping toolkit") + (description + "This is a QTL mapping toolkit for inbred crosses and recombinant inbred +lines. It includes maximum likelihood and Bayesian tools.") + (license license:gpl2+))) + +(define-public r-ibdreg + (package + (name "r-ibdreg") + (version "0.2.5") + (source + (origin + (method url-fetch) + (uri (cran-uri "ibdreg" version)) + (sha256 + (base32 + "1kaa5q1byi30wzr0mw4w2cv1ssxprzcwf91wrpqwkgcsdy7dkh2g")))) + (build-system r-build-system) + (home-page "https://www.mayo.edu/research/labs/\ +statistical-genetics-genetic-epidemiology/software") + (synopsis "Regression methods for IBD linkage with covariates") + (description + "This package provides a method to test genetic linkage with covariates +by regression methods with response IBD sharing for relative pairs. Account +for correlations of IBD statistics and covariates for relative pairs within +the same pedigree.") + (license license:gpl2+))) + +(define-public r-dlmap + (package + (name "r-dlmap") + (version "1.13") + (source + (origin + (method url-fetch) + (uri (cran-uri "dlmap" version)) + (sha256 + (base32 + "0s6wlkggkm3qndwyvw72xv1n0mcjb7ss3ajbq2ll6rv30splq0db")))) + (build-system r-build-system) + (propagated-inputs + `(("r-ibdreg" ,r-ibdreg) + ("r-mgcv" ,r-mgcv) + ("r-nlme" ,r-nlme) + ("r-qtl" ,r-qtl) + ("r-wgaim" ,r-wgaim))) + (home-page "https://cran.r-project.org/web/packages/dlmap/") + (synopsis "Detection localization mapping for QTL") + (description + "This is package for QTL mapping in a mixed model framework with separate +detection and localization stages. The first stage detects the number of QTL +on each chromosome based on the genetic variation due to grouped markers on +the chromosome; the second stage uses this information to determine the most +likely QTL positions. The mixed model can accommodate general fixed and +random effects, including spatial effects in field trials and pedigree +effects. It is applicable to backcrosses, doubled haploids, recombinant +inbred lines, F2 intercrosses, and association mapping populations.") + (license license:gpl2))) + +(define-public r-ldheatmap + (package + (name "r-ldheatmap") + (version "0.99-5") + (source + (origin + (method url-fetch) + (uri (cran-uri "LDheatmap" version)) + (sha256 + (base32 + "0il3g3n3bzv74lz7dlhyiwc2x2417v6yhx2g47pahxdzqa09kf4s")))) + (properties `((upstream-name . "LDheatmap"))) + (build-system r-build-system) + (propagated-inputs + `(("r-genetics" ,r-genetics) + ("r-snpstats" ,r-snpstats))) + (home-page "http://stat.sfu.ca/statgen/research/ldheatmap.html") + (synopsis "Graphical display of pairwise linkage disequilibria between SNPs") + (description + "This package provides tools to produce a graphical display, as a heat +map, of measures of pairwise linkage disequilibria between SNPs. Users may +optionally include the physical locations or genetic map distances of each SNP +on the plot.") + (license license:gpl3))) + +(define-public r-hwde + (package + (name "r-hwde") + (version "0.67") + (source + (origin + (method url-fetch) + (uri (cran-uri "hwde" version)) + (sha256 + (base32 + "0wb2f9i5qi7w77ygh8bvydfpr7j5x8dyvnnhdkajaz0wdcpkyaqy")))) + (build-system r-build-system) + (home-page "https://cran.r-project.org/web/packages/hwde/") + (synopsis "Models and tests for departure from Hardy-Weinberg equilibrium") + (description + "This package fits models for genotypic disequilibria, as described in +Huttley and Wilson (2000), Weir (1996) and Weir and Wilson (1986). Contrast +terms are available that account for first order interactions between loci. +It also implements, for a single locus in a single population, a conditional +exact test for Hardy-Weinberg equilibrium.") + (license license:gpl2+))) + +(define-public r-tdthap + (package + (name "r-tdthap") + (version "1.1-9") + (source + (origin + (method url-fetch) + (uri (cran-uri "tdthap" version)) + (sha256 + (base32 + "0y01x0hcf0rw06cpn4pk17b0shf4v2c9was7vfs0zhsbq8qcwx7r")))) + (build-system r-build-system) + (home-page "https://cran.r-project.org/web/packages/tdthap/") + (synopsis "TDT tests for extended haplotypes") + (description + "Functions and examples are provided for transmission/disequilibrium +tests for extended marker haplotypes, as in Clayton, D. and Jones, H. (1999) +\"Transmission/disequilibrium tests for extended marker haplotypes\".") + (license license:artistic2.0))) + +(define-public r-sparql + (package + (name "r-sparql") + (version "1.16") + (source (origin + (method url-fetch) + (uri (cran-uri "SPARQL" version)) + (sha256 + (base32 + "0gak1q06yyhdmcxb2n3v0h9gr1vqd0viqji52wpw211qp6r6dcrc")))) + (properties `((upstream-name . "SPARQL"))) + (build-system r-build-system) + (propagated-inputs + `(("r-rcurl" ,r-rcurl) + ("r-xml" ,r-xml))) + (home-page "https://cran.r-project.org/web/packages/SPARQL") + (synopsis "SPARQL client for R") + (description "This package provides an interface to use SPARQL to pose +SELECT or UPDATE queries to an end-point.") + ;; The only license indication is found in the DESCRIPTION file, + ;; which states GPL-3. So we cannot assume GPLv3+. + (license license:gpl3))) + +(define-public r-bookdown + (package + (name "r-bookdown") + (version "0.9") + (source (origin + (method url-fetch) + (uri (cran-uri "bookdown" version)) + (sha256 + (base32 + "0vg1s1w0l9pm95asqb21yf39mfk1nc9rdhmlys9xwr7p7i7rsz32")))) + (build-system r-build-system) + (propagated-inputs + `(("r-htmltools" ,r-htmltools) + ("r-knitr" ,r-knitr) + ("r-rmarkdown" ,r-rmarkdown) + ("r-tinytex" ,r-tinytex) + ("r-yaml" ,r-yaml) + ("r-xfun" ,r-xfun))) + (home-page "https://github.com/rstudio/bookdown") + (synopsis "Authoring books and technical documents with R markdown") + (description "This package provides output formats and utilities for +authoring books and technical documents with R Markdown.") + (license license:gpl3))) + +(define-public r-optparse + (package + (name "r-optparse") + (version "1.6.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "optparse" version)) + (sha256 + (base32 + "04vyb6dhcga30mvghsg1p052jmf69xqxkvh3hzqz7dscyppy76w1")))) + (build-system r-build-system) + (propagated-inputs + `(("r-getopt" ,r-getopt))) + (home-page "https://github.com/trevorld/optparse") + (synopsis "Command line option parser") + (description + "This package provides a command line parser inspired by Python's +@code{optparse} library to be used with Rscript to write shebang scripts +that accept short and long options.") + (license license:gpl2+))) + +(define-public r-wgcna + (package + (name "r-wgcna") + (version "1.66") + (source + (origin + (method url-fetch) + (uri (cran-uri "WGCNA" version)) + (sha256 + (base32 + "0rhnyhzfn93yp24jz9v6dzrmyizwzdw070a7idm0k33w1cm8sjqv")))) + (properties `((upstream-name . "WGCNA"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-doparallel" ,r-doparallel) + ("r-dynamictreecut" ,r-dynamictreecut) + ("r-fastcluster" ,r-fastcluster) + ("r-foreach" ,r-foreach) + ("r-go-db" ,r-go-db) + ("r-hmisc" ,r-hmisc) + ("r-impute" ,r-impute) + ("r-rcpp" ,r-rcpp) + ("r-robust" ,r-robust) + ("r-survival" ,r-survival) + ("r-matrixstats" ,r-matrixstats) + ("r-preprocesscore" ,r-preprocesscore))) + (home-page + "http://www.genetics.ucla.edu/labs/horvath/CoexpressionNetwork/Rpackages/WGCNA/") + (synopsis "Weighted correlation network analysis") + (description + "This package provides functions necessary to perform Weighted +Correlation Network Analysis on high-dimensional data. It includes functions +for rudimentary data cleaning, construction and summarization of correlation +networks, module identification and functions for relating both variables and +modules to sample traits. It also includes a number of utility functions for +data manipulation and visualization.") + (license license:gpl2+))) + +(define-public r-kernlab + (package + (name "r-kernlab") + (version "0.9-27") + (source + (origin + (method url-fetch) + (uri (cran-uri "kernlab" version)) + (sha256 + (base32 + "1m0xqf6gyvwayz7w3c83y32ayvnlz0jicj8ijk808zq9sh7dbbgn")))) + (build-system r-build-system) + (home-page "https://cran.r-project.org/web/packages/kernlab") + (synopsis "Kernel-based machine learning tools") + (description + "This package provides kernel-based machine learning methods for +classification, regression, clustering, novelty detection, quantile regression +and dimensionality reduction. Among other methods @code{kernlab} includes +Support Vector Machines, Spectral Clustering, Kernel PCA, Gaussian Processes +and a QP solver.") + (license license:gpl2))) + +(define-public r-hierfstat + (package + (name "r-hierfstat") + (version "0.04-22") + (source + (origin + (method url-fetch) + (uri (cran-uri "hierfstat" version)) + (sha256 + (base32 + "1fav2v2996v5kb1ffa6v5wxfm921syxg6as034vd3j4jfhdibyfx")))) + (build-system r-build-system) + (propagated-inputs + `(("r-ade4" ,r-ade4) + ("r-adegenet" ,r-adegenet) + ("r-gtools" ,r-gtools))) + (home-page "https://cran.r-project.org/web/packages/hierfstat/") + (synopsis "Estimation and tests of hierarchical F-statistics") + (description + "This package allows the estimation of hierarchical F-statistics from +haploid or diploid genetic data with any numbers of levels in the hierarchy, +following the algorithm of Yang (Evolution, 1998, 52(4):950-956). Functions +are also given to test via randomisations the significance of each F and +variance components, using the likelihood-ratio statistics G.") + (license license:gpl2+))) + +(define-public r-hapassoc + (package + (name "r-hapassoc") + (version "1.2-8") + (source + (origin + (method url-fetch) + (uri (cran-uri "hapassoc" version)) + (sha256 + (base32 + "0qs5jl0snzfchgpp6pabncwywxcmi743g91jvjiyyzw0lw85yv4s")))) + (build-system r-build-system) + (home-page "http://stat.sfu.ca/statgen/research/hapassoc.html") + (synopsis "Inference of trait associations with SNP haplotypes") + (description + "Hapassoc performs likelihood inference of trait associations with +haplotypes and other covariates in @dfn{generalized linear models} (GLMs). The +functions are developed primarily for data collected in cohort or +cross-sectional studies. They can accommodate uncertain haplotype phase and +handle missing genotypes at some SNPs.") + (license license:gpl2))) + +(define-public r-sampling + (package + (name "r-sampling") + (version "2.8") + (source + (origin + (method url-fetch) + (uri (cran-uri "sampling" version)) + (sha256 + (base32 + "06pj7dan0mknpsblmlnk7am78qrnwgnql5vvx7vmbfvib7rj6s9m")))) + (build-system r-build-system) + (propagated-inputs + `(("r-lpsolve" ,r-lpsolve) + ("r-mass" ,r-mass))) + (home-page "https://cran.r-project.org/web/packages/sampling/") + (synopsis "Survey sampling") + (description + "This package provides functions for drawing and calibrating samples.") + (license license:gpl2+))) + +(define-public r-r2html + (package + (name "r-r2html") + (version "2.3.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "R2HTML" version)) + (sha256 + (base32 + "00kxny7hajs9r2kw63qk7d03ggdxx2j1g8vbrmzp806y8aczvik9")))) + (properties `((upstream-name . "R2HTML"))) + (build-system r-build-system) + (home-page "https://github.com/nalimilan/R2HTML") + (synopsis "HTML export for R objects") + (description + "This package includes HTML functions and methods to write in an HTML +file. Thus, making HTML reports is easy. It includes a function that allows +redirection on the fly, which appears to be very useful for teaching purposes, +as the student can keep a copy of the produced output to keep all that they +did during the course. The package comes with a vignette describing how to +write HTML reports for statistical analysis. Finally, a driver for Sweave +allows to parse HTML flat files containing R code and to automatically write +the corresponding outputs (tables and graphs).") + (license license:gpl2+))) + +(define-public r-rjava + (package + (name "r-rjava") + (version "0.9-10") + (source + (origin + (method url-fetch) + (uri (cran-uri "rJava" version)) + (sha256 + (base32 + "0y7yg70i3zwbwl4g36js4dqpl51cmwss5ymrsk24d1z07bflp4y9")))) + (properties `((upstream-name . "rJava"))) + (build-system r-build-system) + (arguments + `(#:modules ((guix build utils) + (guix build r-build-system) + (ice-9 match)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-JAVA_HOME + (lambda* (#:key inputs #:allow-other-keys) + (let ((jdk (assoc-ref inputs "jdk"))) + (setenv "JAVA_HOME" jdk) + (setenv "JAVA" (which "java")) + (setenv "JAR" (which "jar")) + (setenv "JAVAC" (which "javac")) + (setenv "JAVAH" (which "javah")) + (setenv "JAVA_CPPFLAGS" + (string-append "-I" jdk "/include " + "-I" jdk "/include/linux")) + (match (find-files (string-append jdk "/jre/lib/") "libjvm.so") + ((lib) (setenv "JAVA_LIBS" lib)) + (_ (error "Could not find libjvm.so")))) + #t))))) + (inputs + `(("icu4c" ,icu4c) + ("jdk" ,icedtea-8 "jdk") + ("pcre" ,pcre) + ("zlib" ,zlib))) + (home-page "http://www.rforge.net/rJava/") + (synopsis "Low-Level R to Java interface") + (description + "This package provides a low-level interface to the Java VM very much +like .C/.Call and friends. It allows the creation of objects, calling methods +and accessing fields.") + (license license:gpl2))) + +(define-public r-svmisc + (package + (name "r-svmisc") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "svMisc" version)) + (sha256 + (base32 + "01r2a73wx2sh1njky961fxabx5wgddqqjqba6vjg0f3h8r3abmn2")))) + (properties `((upstream-name . "svMisc"))) + (build-system r-build-system) + (home-page "https://github.com/SciViews/svMisc") + (synopsis "Miscellaneous functions for SciViews") + (description + "This package provides miscellaneous functions for SciViews or general +use, including tools to manage a temporary environment attached to the search +path for temporary variables you do not want to @code{save()} or +@code{load()}; test the current platform; showing progress bars, etc.") + (license license:gpl2))) + +(define-public r-xyz + (package + (name "r-xyz") + (version "0.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "xyz" version)) + (sha256 + (base32 + "13w4sb4pvgciwr8wsz785dafj2k2kpx7znz46r5d32wx88vkycp4")))) + (build-system r-build-system) + (propagated-inputs + `(("r-rcpp" ,r-rcpp))) + (home-page "https://cran.r-project.org/web/packages/xyz/") + (synopsis "Algorithm for fast interaction search in high-dimensional data") + (description + "High dimensional interaction search by brute force requires a quadratic +computational cost in the number of variables. The xyz algorithm provably +finds strong interactions in almost linear time. For details of the algorithm +see: G. Thanei, N. Meinshausen and R. Shah (2016). The xyz algorithm for fast +interaction search in high-dimensional data.") + ;; Any version of the GPL. + (license license:gpl2+))) + +(define-public r-rttf2pt1 + (package + (name "r-rttf2pt1") + (version "1.3.7") + (source + (origin + (method url-fetch) + (uri (cran-uri "Rttf2pt1" version)) + (sha256 + (base32 + "12hf9r3mhjr9sawdvf7qhjf1zph2q64f77i81jwvy7awidbm0kja")))) + (properties `((upstream-name . "Rttf2pt1"))) + (build-system r-build-system) + (home-page "https://github.com/wch/Rttf2pt1") + (synopsis "Font conversion utility") + (description + "This package contains the program @code{ttf2pt1}, for use with the +@code{extrafont} package.") + ;; Most of the files are covered under the Expat license. Some files are + ;; covered under BSD-3. Deviations for individual files are recorded in + ;; the LICENSE file. + (license (list license:bsd-3 license:expat + (license:non-copyleft "file://LICENSE"))))) + +(define-public r-extrafontdb + (package + (name "r-extrafontdb") + (version "1.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "extrafontdb" version)) + (sha256 + (base32 + "115n42hfvv5h4nn4cfkfmkmn968py4lpy8zd0d6w5yylwpzbm8gs")))) + (build-system r-build-system) + (home-page "https://github.com/wch/extrafontdb") + (synopsis "Database for the extrafont package") + (description + "This package holds the database for the @code{extrafont} package.") + (license license:gpl2))) + +(define-public r-extrafont + (package + (name "r-extrafont") + (version "0.17") + (source + (origin + (method url-fetch) + (uri (cran-uri "extrafont" version)) + (sha256 + (base32 + "0b9k2n9sk23bh45hjgnkxpjyvpdrz1hx7kmxvmb4nhlhm1wpsv9g")))) + (build-system r-build-system) + (propagated-inputs + `(("r-extrafontdb" ,r-extrafontdb) + ("r-rttf2pt1" ,r-rttf2pt1))) + (home-page "https://github.com/wch/extrafont") + (synopsis "Tools for using fonts in R") + (description + "The extrafont package makes it easier to use fonts other than the basic +PostScript fonts that R uses. Fonts that are imported into extrafont can be +used with PDF or PostScript output files. There are two hurdles for using +fonts in PDF (or Postscript) output files: + +@enumerate +@item Making R aware of the font and the dimensions of the characters. +@item Embedding the fonts in the PDF file so that the PDF can be displayed + properly on a device that doesn't have the font. This is usually needed if + you want to print the PDF file or share it with others. +@end enumerate + +The extrafont package makes both of these things easier.") + (license license:gpl2))) + +(define-public r-xkcd + (package + (name "r-xkcd") + (version "0.0.6") + (source + (origin + (method url-fetch) + (uri (cran-uri "xkcd" version)) + (sha256 + (base32 + "1z2y0ihn68ppay7xkglhw7djki5654g6z4bbpyy41if57z9q554f")))) + (build-system r-build-system) + (propagated-inputs + `(("r-extrafont" ,r-extrafont) + ("r-ggplot2" ,r-ggplot2) + ("r-hmisc" ,r-hmisc))) + (home-page "https://cran.r-project.org/web/packages/xkcd/") + (synopsis "Plot ggplot2 graphics in the XKCD style") + (description + "This package provides the means to plot ggplot2 graphs in the style of +the XKCD web comic.") + (license license:gpl3))) + +(define-public r-msigdbr + (package + (name "r-msigdbr") + (version "6.2.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "msigdbr" version)) + (sha256 + (base32 + "1264j1hs74kq7hyh68vfynadfi6mdpq46qm1hnwzkzzhmbzpb9cg")))) + (build-system r-build-system) + (propagated-inputs + `(("r-dplyr" ,r-dplyr) + ("r-magrittr" ,r-magrittr) + ("r-rlang" ,r-rlang) + ("r-tibble" ,r-tibble))) + (home-page "https://github.com/igordot/msigdbr") + (synopsis "MSigDB gene sets for multiple organisms") + (description + "This package provides the @dfn{Molecular Signatures Database} (MSigDB) +gene sets typically used with the @dfn{Gene Set Enrichment Analysis} (GSEA) +software in a standard R data frame with key-value pairs. Included are the +original human gene symbols and Entrez IDs as well as the equivalents for +various frequently studied model organisms such as mouse, rat, pig, fly, and +yeast.") + ;; The package is covered under the Expat license, but the upstream MSigDB + ;; files are made available under the Creative Commons Attribution 4.0 + ;; International license. + (license (list license:expat license:cc-by4.0)))) + +(define-public r-gridgraphics + (package + (name "r-gridgraphics") + (version "0.3-0") + (source + (origin + (method url-fetch) + (uri (cran-uri "gridGraphics" version)) + (sha256 + (base32 + "1p94flvq5h3x817pl1m0aj3sim87x6zdbpv9xrgdnqw3rxfzwgqs")))) + (properties `((upstream-name . "gridGraphics"))) + (build-system r-build-system) + (home-page "https://github.com/pmur002/gridgraphics") + (synopsis "Redraw base graphics using @code{grid} graphics") + (description + "This package provides functions to convert a page of plots drawn with +the @code{graphics} package into identical output drawn with the @code{grid} +package. The result looks like the original @code{graphics}-based plot, but +consists of @code{grid} grobs and viewports that can then be manipulated with +@code{grid} functions (e.g., edit grobs and revisit viewports).") + (license license:gpl2+))) + +(define-public r-farver + (package + (name "r-farver") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "farver" version)) + (sha256 + (base32 + "1dllgx121al374gyp9pjv1m8ip4imm8zhbgyh1970dsz2c4z71i0")))) + (build-system r-build-system) + (propagated-inputs `(("r-rcpp" ,r-rcpp))) + (home-page "https://github.com/thomasp85/farver") + (synopsis "Vectorized color conversion and comparison") + (description + "The encoding of color can be handled in many different ways, using +different color spaces. As different color spaces have different uses, +efficient conversion between these representations are important. This +package provides a set of functions that gives access to very fast color space +conversion and comparisons implemented in C++, and offers 100-fold speed +improvements over the @code{convertColor} function in the @code{grDevices} +package.") + (license license:expat))) + +(define-public r-ggplotify + (package + (name "r-ggplotify") + (version "0.0.3") + (source + (origin + (method url-fetch) + (uri (cran-uri "ggplotify" version)) + (sha256 + (base32 + "14hqlpvnaq5psz1ljcpw9isa06827rg3fm5c1dx159rsjfi56yby")))) + (build-system r-build-system) + (propagated-inputs + `(("r-ggplot2" ,r-ggplot2) + ("r-gridgraphics" ,r-gridgraphics) + ("r-rvcheck" ,r-rvcheck))) + (home-page "https://github.com/GuangchuangYu/ggplotify") + (synopsis "Convert plots to @code{grob} or @code{ggplot} object") + (description + "This package provides tools to convert plot function calls (using +expression or formula) to @code{grob} or @code{ggplot} objects that are +compatible with the @code{grid} and @code{ggplot2} environment. With this +package, we are able to e.g. use @code{cowplot} to align plots produced by +@code{base} graphics, @code{grid}, @code{lattice}, @code{vcd} etc. by +converting them to @code{ggplot} objects.") + (license license:artistic2.0))) + +(define-public r-triebeard + (package + (name "r-triebeard") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "triebeard" version)) + (sha256 + (base32 + "1hqyz57gph02c9fdc07lxz113bbklif3g18sw8jan6pakhhdc7dz")))) + (build-system r-build-system) + (propagated-inputs `(("r-rcpp" ,r-rcpp))) + (home-page "https://github.com/Ironholds/triebeard/") + (synopsis "Radix trees in Rcpp") + (description + "Radix trees, or tries, are key-value data structures optimized for +efficient lookups, similar in purpose to hash tables. This package provides +an implementation of radix trees for use in R programming and in developing +packages with Rcpp.") + (license license:expat))) + +(define-public r-tweenr + (package + (name "r-tweenr") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "tweenr" version)) + (sha256 + (base32 + "0sq90pbln6lkc2q3zflhkxxwpqdw5dd7igrxhdnlynkdrmi83mpg")))) + (build-system r-build-system) + (propagated-inputs + `(("r-farver" ,r-farver) + ("r-magrittr" ,r-magrittr) + ("r-rcpp" ,r-rcpp) + ("r-rlang" ,r-rlang))) + (home-page "https://github.com/thomasp85/tweenr") + (synopsis "Interpolate data for smooth animations") + (description + "In order to create smooth animation between states of data, tweening is +necessary. This package provides a range of functions for creating tweened +data that can be used as basis for animation. Furthermore it adds a number of +vectorized interpolaters for common R data types such as numeric, date and +color.") + (license license:expat))) + +(define-public r-polyclip + (package + (name "r-polyclip") + (version "1.10-0") + (source + (origin + (method url-fetch) + (uri (cran-uri "polyclip" version)) + (sha256 + (base32 + "0jyk4maqiblvj095jd59dr76kbniyli3v3xvy0a72ljszq6vrnkl")))) + (build-system r-build-system) + (native-inputs `(("pkg-config" ,pkg-config))) + (home-page "http://www.angusj.com/delphi/clipper.php") + (synopsis "Polygon clipping") + (description + "This package provides an R port of the library Clipper. It performs +polygon clipping operations (intersection, union, set minus, set difference) +for polygonal regions of arbitrary complexity, including holes. It computes +offset polygons (spatial buffer zones, morphological dilations, Minkowski +dilations) for polygonal regions and polygonal lines. It computes the +Minkowski Sum of general polygons. There is a function for removing +self-intersections from polygon data.") + (license license:boost1.0))) + +(define-public r-urltools + (package + (name "r-urltools") + (version "1.7.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "urltools" version)) + (sha256 + (base32 + "18lp66f2l504b8q3j4xy8j9pyzzlljw9f112sn6qii1cg83072wm")))) + (build-system r-build-system) + (propagated-inputs + `(("r-rcpp" ,r-rcpp) + ("r-triebeard" ,r-triebeard))) + (home-page "https://github.com/Ironholds/urltools/") + (synopsis "Vectorized tools for URL handling and parsing") + (description + "This package provides a toolkit for all URL-handling needs, including +encoding and decoding, parsing, parameter extraction and modification. All +functions are designed to be both fast and entirely vectorized. It is +intended to be useful for people dealing with web-related datasets, such as +server-side logs, although may be useful for other situations involving large +sets of URLs.") + (license license:expat))) + +(define-public r-ggforce + (package + (name "r-ggforce") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "ggforce" version)) + (sha256 + (base32 + "04rh9z58q288lbi933472lgl26wwbw58rfhpgfyijmw9ccz7i93m")))) + (build-system r-build-system) + (propagated-inputs + `(("r-ggplot2" ,r-ggplot2) + ("r-gtable" ,r-gtable) + ("r-mass" ,r-mass) + ("r-polyclip" ,r-polyclip) + ("r-rcpp" ,r-rcpp) + ("r-rcppeigen" ,r-rcppeigen) + ("r-rlang" ,r-rlang) + ("r-scales" ,r-scales) + ("r-tweenr" ,r-tweenr))) + (home-page "https://ggforce.data-imaginist.com") + (synopsis "Accelerating ggplot2") + (description + "The aim of the ggplot2 package is to aid in visual data investigations. +This focus has led to a lack of facilities for composing specialized plots. +Thi package aims to be a collection of mainly new statistics and geometries +that fills this gap.") + (license license:expat))) + +(define-public r-europepmc + (package + (name "r-europepmc") + (version "0.3") + (source + (origin + (method url-fetch) + (uri (cran-uri "europepmc" version)) + (sha256 + (base32 + "1ngqs1sqzkbwv98dd5z4cxj8bnz41wyd0g060a2vpqi3s99s4i2h")))) + (build-system r-build-system) + (propagated-inputs + `(("r-dplyr" ,r-dplyr) + ("r-httr" ,r-httr) + ("r-jsonlite" ,r-jsonlite) + ("r-plyr" ,r-plyr) + ("r-progress" ,r-progress) + ("r-purrr" ,r-purrr) + ("r-urltools" ,r-urltools) + ("r-xml2" ,r-xml2))) + (home-page "https://github.com/ropensci/europepmc/") + (synopsis "R Interface to the Europe PubMed Central RESTful Web Service") + (description + "This package provides an R Client for the +@url{https://europepmc.org/RestfulWebService,Europe PubMed Central RESTful Web +Service}. It gives access to both metadata on life science literature and +open access full texts. Europe PMC indexes all PubMed content and other +literature sources including Agricola, a bibliographic database of citations +to the agricultural literature, or Biological Patents. In addition to +bibliographic metadata, the client allows users to fetch citations and +reference lists. Links between life-science literature and other EBI +databases, including ENA, PDB or ChEMBL are also accessible.") + (license license:gpl3))) + +(define-public r-ggraph + (package + (name "r-ggraph") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "ggraph" version)) + (sha256 + (base32 + "0fpmp326mryd1k1qvacjadksrnhbla8h960i18lmrimzrag7692c")))) + (build-system r-build-system) + (propagated-inputs + `(("r-digest" ,r-digest) + ("r-dplyr" ,r-dplyr) + ("r-ggforce" ,r-ggforce) + ("r-ggplot2" ,r-ggplot2) + ("r-ggrepel" ,r-ggrepel) + ("r-gtable" ,r-gtable) + ("r-igraph" ,r-igraph) + ("r-mass" ,r-mass) + ("r-plyr" ,r-plyr) + ("r-rcpp" ,r-rcpp) + ("r-scales" ,r-scales) + ("r-viridis" ,r-viridis))) + (home-page "https://cran.r-project.org/web/packages/ggraph/") + (synopsis "Implementation of grammar of graphics for graphs and networks") + (description + "The grammar of graphics as implemented in ggplot2 is a poor fit for +graph and network visualizations due to its reliance on tabular data input. +The ggraph package is an extension of the ggplot2 API tailored to graph +visualizations and provides the same flexible approach to building up plots +layer by layer.") + (license license:gpl3))) + +(define-public r-varselrf + (package + (name "r-varselrf") + (version "0.7-8") + (source + (origin + (method url-fetch) + (uri (cran-uri "varSelRF" version)) + (sha256 + (base32 + "0h49rl1j13yfh97rsfsyh9s2c4wajny4rzms2qw77d0cavxqg53i")))) + (properties `((upstream-name . "varSelRF"))) + (build-system r-build-system) + (propagated-inputs + `(("r-randomforest" ,r-randomforest))) + (home-page "http://ligarto.org/rdiaz/Software/Software.html") + (synopsis "Variable selection using random forests") + (description + "This package provides tools for the variable selection from random +forests using both backwards variable elimination (for the selection of small +sets of non-redundant variables) and selection based on the importance +spectrum (somewhat similar to scree plots; for the selection of large, +potentially highly-correlated variables). The main applications are in +high-dimensional data (e.g., microarray data, and other genomics and +proteomics applications).") + (license license:gpl2+))) + +(define-public r-pamr + (package + (name "r-pamr") + (version "1.56") + (source + (origin + (method url-fetch) + (uri (cran-uri "pamr" version)) + (sha256 + (base32 + "03h1m5fkw76jjln1psdb7x913a499ghf7n48rcd8damr5vdyf961")))) + (build-system r-build-system) + (propagated-inputs + `(("r-cluster" ,r-cluster) + ("r-survival" ,r-survival))) + (native-inputs `(("gfortran" ,gfortran))) + (home-page "https://cran.r-project.org/web/packages/pamr/") + (synopsis "Prediction Analysis for Microarrays") + (description + "This package provides some functions for sample classification in +microarrays.") + (license license:gpl2))) + +(define-public r-rda + (package + (name "r-rda") + (version "1.0.2-2.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "rda" version)) + (sha256 + (base32 + "1y4fawslr3i6crjaxhsdb47kfsqkyszdx6avq3r5far5a4pvc639")))) + (build-system r-build-system) + (home-page "https://cran.r-project.org/web/packages/rda/") + (synopsis "Shrunken centroids regularized discriminant analysis") + (description + "This package provides tools for shrunken centroids regularized +discriminant analysis for the purpose of classifying high dimensional data.") + (license license:gpl2+))) + +(define-public r-ggvis + (package + (name "r-ggvis") + (version "0.4.4") + (source + (origin + (method url-fetch) + (uri (cran-uri "ggvis" version)) + (sha256 + (base32 + "1bxggjr2313kfy895j0fvrv4bg7yh2z87907lk48i1kn5c9flchk")))) + (build-system r-build-system) + (propagated-inputs + `(("r-assertthat" ,r-assertthat) + ("r-dplyr" ,r-dplyr) + ("r-htmltools" ,r-htmltools) + ("r-jsonlite" ,r-jsonlite) + ("r-lazyeval" ,r-lazyeval) + ("r-magrittr" ,r-magrittr) + ("r-shiny" ,r-shiny))) + (home-page "https://ggvis.rstudio.com/") + (synopsis "Interactive grammar of graphics") + (description + "This package is a data visualization package for R providing an +implementation of an interactive grammar of graphics, taking the best parts of +ggplot2, combining them with the reactive framework of Shiny and drawing web +graphics using Vega.") + (license license:gpl2))) + +(define-public r-gbm + (package + (name "r-gbm") + (version "2.1.5") + (source + (origin + (method url-fetch) + (uri (cran-uri "gbm" version)) + (sha256 + (base32 + "0vs6ljaqhwwpgr8wlbhmm4v147rd82kl16rpaijqiylxcc8dxyq6")))) + (build-system r-build-system) + (propagated-inputs + `(("r-gridextra" ,r-gridextra) + ("r-lattice" ,r-lattice) + ("r-survival" ,r-survival))) + (home-page "https://github.com/gbm-developers/gbm") + (synopsis "Generalized boosted regression models") + (description + "This package is an implementation of extensions to Freund and Schapire's +AdaBoost algorithm and Friedman's gradient boosting machine. It includes +regression methods for least squares, absolute loss, t-distribution loss, +quantile regression, logistic, multinomial logistic, Poisson, Cox proportional +hazards partial likelihood, AdaBoost exponential loss, Huberized hinge loss, +and Learning to Rank measures (LambdaMart).") + (license license:gpl2+))) + +(define-public r-threejs + (package + (name "r-threejs") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "threejs" version)) + (sha256 + (base32 + "1s3rdlzy7man6177ycayg6xsh6k8y1r9rdj9yzn3b93j2rs0nxbi")))) + (build-system r-build-system) + (arguments + `(#:modules ((guix build utils) + (guix build r-build-system) + (srfi srfi-1) + (ice-9 popen)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'process-javascript + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "inst" + (call-with-values + (lambda () + (unzip2 + `((,(assoc-ref inputs "js-jquery") + "htmlwidgets/lib/jquery/jquery.min.js") + (,(assoc-ref inputs "js-threejs-85") + "htmlwidgets/lib/threejs-85/three.min.js")))) + (lambda (sources targets) + (for-each (lambda (source target) + (format #t "Processing ~a --> ~a~%" + source target) + (delete-file target) + (let ((minified (open-pipe* OPEN_READ "uglify-js" source))) + (call-with-output-file target + (lambda (port) + (dump-port minified port))))) + sources targets)))) + #t))))) + (propagated-inputs + `(("r-base64enc" ,r-base64enc) + ("r-crosstalk" ,r-crosstalk) + ("r-htmlwidgets" ,r-htmlwidgets) + ("r-igraph" ,r-igraph))) + (native-inputs + `(("uglify-js" ,uglify-js) + ("js-jquery" + ,(origin + (method url-fetch) + (uri "https://code.jquery.com/jquery-3.3.1.js") + (sha256 + (base32 + "1b8zxrp6xwzpw25apn8j4qws0f6sr7qr7h2va5h1mjyfqvn29anq")))) + ("js-threejs-85" + ,(origin + (method url-fetch) + (uri "https://raw.githubusercontent.com/mrdoob/three.js/r85/build/three.js") + (sha256 + (base32 + "17khh3dmijdjw4qb9qih1rqhxgrmm3pc6w8lzdx6rf6a3mrc9xnl")))))) + (home-page "https://bwlewis.github.io/rthreejs") + (synopsis "Interactive 3D scatter plots, networks and globes") + (description + "Create interactive 3D scatter plots, network plots, and globes in R +using the three.js visualization library.") + (license license:expat))) + +(define-public r-mlbench + (package + (name "r-mlbench") + (version "2.1-1") + (source + (origin + (method url-fetch) + (uri (cran-uri "mlbench" version)) + (sha256 + (base32 + "1rp035qxfgh5ail92zjh9jh57dj0b8babw3wsg29v8ricpal30bl")))) + (build-system r-build-system) + (home-page "https://cran.r-project.org/web/packages/mlbench/") + (synopsis "Machine learning benchmark problems") + (description + "This package provides a collection of artificial and real-world machine +learning benchmark problems, including, e.g., several data sets from the UCI +repository.") + (license license:gpl2))) + +(define-public r-mpm + (package + (name "r-mpm") + (version "1.0-22") + (source + (origin + (method url-fetch) + (uri (cran-uri "mpm" version)) + (sha256 + (base32 + "0wijw8v0wmbfrda5564cmnp788qmlkk21yn5cp5qk8aprm9l1fnk")))) + (build-system r-build-system) + (propagated-inputs + `(("r-kernsmooth" ,r-kernsmooth) + ("r-mass" ,r-mass))) + (home-page "http://mpm.r-forge.r-project.org") + (synopsis "Multivariate projection methods") + (description + "This is a package for exploratory graphical analysis of multivariate +data, specifically gene expression data with different projection methods: +principal component analysis, correspondence analysis, spectral map +analysis.") + (license license:gpl2+))) + +(define-public r-png + (package + (name "r-png") + (version "0.1-7") + (source (origin + (method url-fetch) + (uri (cran-uri "png" version)) + (sha256 + (base32 + "0g2mcp55lvvpx4kd3mn225mpbxqcq73wy5qx8b4lyf04iybgysg2")))) + (build-system r-build-system) + (inputs + `(("libpng" ,libpng) + ("zlib" ,zlib))) + (home-page "http://www.rforge.net/png/") + (synopsis "Read and write PNG images") + (description + "This package provides an easy and simple way to read, write and display +bitmap images stored in the PNG format. It can read and write both files and +in-memory raw vectors.") + ;; Any of these GPL versions. + (license (list license:gpl2 license:gpl3)))) + +(define-public r-ggcorrplot + (package + (name "r-ggcorrplot") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "ggcorrplot" version)) + (sha256 + (base32 + "12sxvd9kjgszpbk35m7fj1wv7x40bp79c0g0by1xax70r3495h93")))) + (build-system r-build-system) + (propagated-inputs + `(("r-ggplot2" ,r-ggplot2) + ("r-reshape2" ,r-reshape2))) + (home-page "http://www.sthda.com/english/wiki/ggcorrplot") + (synopsis "Visualization of a correlation matrix using ggplot2") + (description + "The ggcorrplot package can be used to visualize easily a correlation +matrix using ggplot2. It provides a solution for reordering the correlation +matrix and displays the significance level on the plot. It also includes a +function for computing a matrix of correlation p-values.") + (license license:gpl2))) + +(define-public r-flexdashboard + (package + (name "r-flexdashboard") + (version "0.5.1.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "flexdashboard" version)) + (sha256 + (base32 + "0fy3nbrr67zqgd44r2mc850s5sp0hzfcw3zqs15m8kxzj1aw067x")))) + (build-system r-build-system) + (arguments + `(#:modules ((guix build utils) + (guix build r-build-system) + (srfi srfi-1) + (srfi srfi-26) + (ice-9 popen) + (ice-9 textual-ports)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'process-javascript + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "inst" + ;; Concatenate all components of prism.js + (let ((contents (string-join + (map (lambda (name) + (call-with-input-file + (assoc-ref inputs name) + get-string-all)) + (list "js-prism" + "js-prism-r" + "js-prism-line-numbers")) + "\n"))) + (call-with-output-file "prism-src.js" + (cut display contents <>))) + (call-with-values + (lambda () + (unzip2 + `(("www/stickytableheaders/jquery.stickytableheaders.js" + "www/stickytableheaders/jquery.stickytableheaders.min.js") + ("www/sly/sly.js" + "www/sly/sly.min.js") + ("prism-src.js" + "www/prism/prism.js") + (,(assoc-ref inputs "js-raphael") + "htmlwidgets/lib/raphael/raphael-2.1.4.min.js") + (,(assoc-ref inputs "js-featherlight") + "www/featherlight/featherlight.min.js")))) + (lambda (sources targets) + (for-each (lambda (source target) + (format #t "Processing ~a --> ~a~%" + source target) + (delete-file target) + (let ((minified (open-pipe* OPEN_READ "uglify-js" source))) + (call-with-output-file target + (lambda (port) + (dump-port minified port))))) + sources targets)))) + #t))))) + (propagated-inputs + `(("r-htmltools" ,r-htmltools) + ("r-htmlwidgets" ,r-htmlwidgets) + ("r-jsonlite" ,r-jsonlite) + ("r-knitr" ,r-knitr) + ("r-rmarkdown" ,r-rmarkdown) + ("r-shiny" ,r-shiny))) + (native-inputs + `(("uglify-js" ,uglify-js) + ("js-raphael" + ,(origin + (method url-fetch) + (uri "https://raw.githubusercontent.com/DmitryBaranovskiy/raphael/v2.1.4/raphael.js") + (sha256 + (base32 + "1h4c4akrgcj7wra9j1z1rv2406j0yf68y9c0wg8v7w9ibw2iwf1x")))) + ("js-prism" + ,(origin + (method url-fetch) + (uri "https://raw.githubusercontent.com/PrismJS/prism/v1.16.0/prism.js") + (sha256 + (base32 + "0gqa9irbp9k8p5r3d98cszajzhjnssnl43nrsc5aiy7ki52z500c")))) + ("js-prism-r" + ,(origin + (method url-fetch) + (uri "https://raw.githubusercontent.com/PrismJS/prism/v1.16.0/components/prism-r.js") + (sha256 + (base32 + "1x31glci7wdgr2305njy0bm2lncb0jyn0j1s2g72rqi29xid9aki")))) + ("js-prism-line-numbers" + ,(origin + (method url-fetch) + (uri "https://raw.githubusercontent.com/PrismJS/prism/v1.16.0/plugins/line-numbers/prism-line-numbers.js") + (sha256 + (base32 + "1543wgf3iynrilyb27jq8px3h5gvfz5xmdib5ik2ki400c1sl991")))) + ("js-featherlight" + ,(origin + (method url-fetch) + (uri "https://raw.githubusercontent.com/noelboss/featherlight/1.3.4/src/featherlight.js") + (sha256 + (base32 + "14kkhwzvp8rxq2mrck5i0xcm8v5rqwqhwnmncbng8h4qq42zx3sb")))))) + (home-page "https://rmarkdown.rstudio.com/flexdashboard") + (synopsis "R Markdown format for flexible dashboards") + (description + "This package provides an R Markdown format for converting an R Markdown +document to a grid-oriented dashboard. The dashboard flexibly adapts the size +of its components to the containing web page.") + (license license:expat))) + +(define-public r-preseqr + (package + (name "r-preseqr") + (version "4.0.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "preseqR" version)) + (sha256 + (base32 + "1g2rnnmi45649vpy6z45v5i3wxm54s138ajqrzwi3a5r7x3xnhq1")))) + (properties `((upstream-name . "preseqR"))) + (build-system r-build-system) + (propagated-inputs + `(("r-polynom" ,r-polynom))) + (home-page "https://cran.r-project.org/web/packages/preseqR/") + (synopsis "Predicting species accumulation curves") + (description + "This package can be used to predict the r-species accumulation +curve (r-SAC), which is the number of species represented at least r times as +a function of the sampling effort. When r = 1, the curve is known as the +species accumulation curve, or the library complexity curve in high-throughput +genomic sequencing. The package includes both parametric and nonparametric +methods, as described by Deng C, et al. (2018).") + (license license:gpl3))) + +(define-public r-mapplots + (package + (name "r-mapplots") + (version "1.5.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "mapplots" version)) + (sha256 + (base32 + "18s2y66f8vi8g2r8a25zbgp2xm079r8v8qxv0w71h8krycs6vs9p")))) + (build-system r-build-system) + (home-page "https://cran.r-project.org/web/packages/mapplots/") + (synopsis "Data visualization on maps") + (description + "This package helps you create simple maps; add sub-plots like pie plots +to a map or any other plot; format, plot and export gridded data. The package +was developed for displaying fisheries data but most functions can be used for +more generic data visualisation.") + (license license:gpl2+))) + +(define-public r-pmcmr + (package + (name "r-pmcmr") + (version "4.3") + (source + (origin + (method url-fetch) + (uri (cran-uri "PMCMR" version)) + (sha256 + (base32 + "09bvdj2h1086r2cgy3myrhlylplxxlliv8nwx09c8kb1vn02i2ij")))) + (properties `((upstream-name . "PMCMR"))) + (build-system r-build-system) + (home-page "https://cran.r-project.org/web/packages/PMCMR/") + (synopsis "Calculate pairwise multiple comparisons of mean rank sums") + (description + "This is a deprecated package for calculating pairwise multiple +comparisons of mean rank sums. This package is superseded by the novel +PMCMRplus package. The PMCMR package is no longer maintained, but kept for +compatibility of reverse depending packages for some time.") + (license license:gpl3+))) + +(define-public r-downloader + (package + (name "r-downloader") + (version "0.4") + (source + (origin + (method url-fetch) + (uri (cran-uri "downloader" version)) + (sha256 + (base32 + "1axggnsc27zzgr7snf41j3zd1vp3nfpmq4zj4d01axc709dyg40q")))) + (build-system r-build-system) + (propagated-inputs + `(("r-digest" ,r-digest))) + (home-page "https://github.com/wch/downloader") + (synopsis "Download files over HTTP and HTTPS") + (description + "This package provides a wrapper for the @code{download.file} function, +making it possible to download files over HTTPS across platforms. The +@code{RCurl} package provides this functionality (and much more) but has +external dependencies. This package has is implemented purely in R.") + (license license:gpl2))) diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index 038db8f488..2f7ea3ba8b 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -208,9 +208,9 @@ (define-public encfs (add-after 'unpack 'unpack-googletest (lambda* (#:key inputs #:allow-other-keys) (mkdir-p "vendor/github.com/google/googletest") - (invoke "tar" "xvf" (assoc-ref inputs "googletest-source") - "-C" "vendor/github.com/google/googletest" - "--strip-components=1"))) + (copy-recursively (assoc-ref inputs "googletest-source") + "vendor/github.com/google/googletest") + #t)) (add-before 'check 'make-unittests (lambda _ (invoke "make" "unittests")))))) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index aefcb7ee05..11ca214f7c 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -239,32 +239,19 @@ (define-public es-dump-restore (define-public leveldb (package (name "leveldb") - (version "1.20") + (version "1.21") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/google/leveldb" - "/archive/v" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/google/leveldb") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "0r36bcrj6b2afsp4aw1gjai3jbs1c7734pxpc1jz7hh9nasyiazm")))) - (build-system gnu-build-system) + "00v0w6883z7a6204894j59nd5v6dazn3c8hvh3sbczv4wiabppw2")))) + (build-system cmake-build-system) (arguments - '(#:make-flags (list "CC=gcc") - #:phases - (modify-phases %standard-phases - (delete 'configure) - (replace 'install - ;; There is no install target, so we do it here. - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib")) - (include (string-append out "/include"))) - (for-each (lambda (file) - (install-file file lib)) - (find-files "out-shared" "^libleveldb\\.so.*$")) - (copy-recursively "include" include) - #t)))))) + `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON" "-DLEVELDB_BUILD_TESTS=ON"))) (inputs `(("snappy" ,snappy))) (home-page "http://leveldb.org/") @@ -987,7 +974,7 @@ (define-public sparql-query (home-page "https://github.com/tialaramex/sparql-query/") (synopsis "Command-line tool for accessing SPARQL endpoints over HTTP") (description "Sparql-query is a command-line tool for accessing SPARQL -endpoints over HTTP. It has been intentionally designed to 'feel' similar to +endpoints over HTTP. It has been intentionally designed to @code{feel} similar to tools for interrogating SQL databases. For example, you can enter a query over several lines, using a semi-colon at the end of a line to indicate the end of your query. It also supports readline so that you can more easily recall and diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm index 502cdde7da..afe5cc2b7b 100644 --- a/gnu/packages/display-managers.scm +++ b/gnu/packages/display-managers.scm @@ -134,7 +134,7 @@ (define-public greenisland (define-public sddm (package (name "sddm") - (version "0.18.0") + (version "0.18.1") (source (origin (method url-fetch) (uri (string-append @@ -143,7 +143,7 @@ (define-public sddm "sddm-" version ".tar.xz")) (sha256 (base32 - "0icyi9nqgbp2v6dwh3n3jzff9jv2xy8d4rbsz89hd65x7c3hrv87")))) + "0nilrhwlyvkngjgxfc08n73c16azgmw80pvx0a78xqww9y3hv4xh")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm index 8fd29d533a..8ea9dca16a 100644 --- a/gnu/packages/django.scm +++ b/gnu/packages/django.scm @@ -519,9 +519,9 @@ (define-public python-django-contact-form (replace 'check (lambda _ ;; the next version will need "make test" - (and (zero? (system* "flake8" "contact_form")) - (zero? (system* "coverage" "run" "contact_form/runtests.py")) - (zero? (system* "coverage" "report" "-m" "--fail-under" "0")))))))) + (invoke "flake8" "contact_form") + (invoke "coverage" "run" "contact_form/runtests.py") + (invoke "coverage" "report" "-m" "--fail-under" "0")))))) (native-inputs `(("python-coverage" ,python-coverage) ("python-flake8" ,python-flake8))) @@ -577,8 +577,7 @@ (define-public python-django-overextends `(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ - (zero? (system* "./test_project/manage.py" "test"))))))) + (lambda _ (invoke "./test_project/manage.py" "test")))))) (propagated-inputs `(("python-django" ,python-django))) (native-inputs diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm index 2530b8a3c7..c164ed849a 100644 --- a/gnu/packages/dlang.scm +++ b/gnu/packages/dlang.scm @@ -103,12 +103,13 @@ (define-public ldc-bootstrap (lambda* (#:key inputs #:allow-other-keys) (let ((unpack (lambda (source target) (with-directory-excursion target - (zero? (system* "tar" "xvf" - (assoc-ref inputs source) - "--strip-components=1")))))) - (and (unpack "phobos-src" "runtime/phobos") - (unpack "druntime-src" "runtime/druntime") - (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite"))))) + (invoke "tar" "xvf" + (assoc-ref inputs source) + "--strip-components=1"))))) + (unpack "phobos-src" "runtime/phobos") + (unpack "druntime-src" "runtime/druntime") + (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite") + #t))) (add-after 'unpack-submodule-sources 'patch-dmd2 (lambda* (#:key inputs #:allow-other-keys) (substitute* "dmd2/root/port.c" @@ -210,12 +211,12 @@ (define-public ldc (lambda* (#:key inputs #:allow-other-keys) (let ((unpack (lambda (source target) (with-directory-excursion target - (zero? (system* "tar" "xvf" - (assoc-ref inputs source) - "--strip-components=1")))))) - (and (unpack "phobos-src" "runtime/phobos") - (unpack "druntime-src" "runtime/druntime") - (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite"))))) + (invoke "tar" "xvf" + (assoc-ref inputs source) + "--strip-components=1"))))) + (unpack "phobos-src" "runtime/phobos") + (unpack "druntime-src" "runtime/druntime") + (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")))) (add-after 'unpack-submodule-sources 'patch-phobos (lambda* (#:key inputs #:allow-other-keys) (substitute* '("runtime/phobos/std/process.d" diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm index 88fc7fc6ec..a11ce266d2 100644 --- a/gnu/packages/docker.scm +++ b/gnu/packages/docker.scm @@ -227,6 +227,8 @@ (define-public containerd (home-page "http://containerd.io/") (license license:asl2.0))) +;; TODO: Patch out modprobes for ip_vs, nf_conntrack, +;; brige, nf_conntrack_netlink, aufs. (define-public docker (package (name "docker") @@ -242,7 +244,8 @@ (define-public docker (base32 "06yr5xwr181lalh8z1lk07nxlp7hn38aq8cyqjk617dfy4lz0ixx")) (patches (search-patches "docker-engine-test-noinstall.patch" - "docker-fix-tests.patch")))) + "docker-fix-tests.patch" + "docker-use-fewer-modprobes.patch")))) (build-system gnu-build-system) (arguments `(#:modules diff --git a/gnu/packages/dunst.scm b/gnu/packages/dunst.scm index 7328e442cf..31b7f58758 100644 --- a/gnu/packages/dunst.scm +++ b/gnu/packages/dunst.scm @@ -73,6 +73,6 @@ (define-public dunst (synopsis "Customizable and lightweight notification daemon") (description "Dunst is a highly configurable and minimalistic notification daemon. -It provides 'org.freedesktop.Notifications' D-Bus service, so it is +It provides @code{org.freedesktop.Notifications} D-Bus service, so it is started automatically on the first call via D-Bus.") (license license:bsd-3))) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 0f040b2b07..1e8d703ce3 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -777,6 +777,29 @@ (define-public emacs-xr @code{skip-chars-backward}.") (license license:gpl3+))) +(define-public emacs-relint + (package + (name "emacs-relint") + (version "1.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://elpa.gnu.org/packages/relint-" version ".el")) + (sha256 + (base32 + "0y7lki2vndpkmzg4k0yh2722hp01qr77vm337xnm8wp3bmwn8s1f")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-xr" ,emacs-xr))) + (home-page "https://github.com/mattiase/relint") + (synopsis "Elisp regexp mistake finder") + (description + "Relint (regular expression lint) scans Elisp files for mistakes in +regexps, including deprecated syntax and bad practice. It also checks the +regexp-like arguments to @code{skip-chars-forward} and +@code{skip-chars-backward}.") + (license license:gpl3+))) + ;;; ;;; Web browsing. @@ -1158,19 +1181,45 @@ (define-public emacs-aggressive-indent than @code{electric-indent-mode}.") (license license:gpl2+))) +(define-public emacs-link-hint + ;; Last release was in 2015. + (let ((commit "d74a483652486260c052941fedeadddb1ea71f88") + (revision "1")) + (package + (name "emacs-link-hint") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/noctuid/link-hint.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0dghxd165fbds6czy9bfwpid3i4irgp3q08n9mg57sfifi0cmij0")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-avy" ,emacs-avy))) + (home-page "https://github.com/noctuid/link-hint.el") + (synopsis "Vimperator-style link-hinting in Emacs") + (description "This package provides commands for visiting and acting on +links.") + (license license:gpl3+)))) + (define-public emacs-ag (package (name "emacs-ag") (version "0.47") (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/Wilfred/ag.el/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/Wilfred/ag.el.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "1rlmp6wnyhqfg86dbz17r914msp58favn4kd4yrdwyia265a4lar")))) + "15kp99vwyi7hb1jkq3lwvqzw3v62ycixsq6y4pd1x0nn2v5p5m5r")))) (build-system emacs-build-system) (arguments `(#:phases @@ -1262,13 +1311,14 @@ (define-public emacs-autothemer (version "0.2.2") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/sebastiansturm/autothemer/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/sebastiansturm/autothemer.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "0rd28r9wfrbll212am4ih9hrvypx785aff76va2cbfxdwm9kixsa")))) + "0cd2pqh6k32sjidkcd8682y4l6mx52xw4a05f38kk8nsrk28m74k")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash))) @@ -1322,14 +1372,14 @@ (define-public emacs-calfw (version "1.6") (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/kiwanami/emacs-calfw/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/kiwanami/emacs-calfw.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "1zr91xr0f1xfcv78yxka8vs5ximmq2ixmqf2pkb57kwwnxlypq4i")))) + "0r42cagvmvvib76kd15nd9ix55ys6i549vxnls4z16s864695zpa")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-howm" ,emacs-howm))) @@ -1346,14 +1396,14 @@ (define-public emacs-direnv (version "1.2.0") (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/wbolster/emacs-direnv/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/wbolster/emacs-direnv.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "0m9nxawklhiiysyibzzhh2zkxgq1fskqvaqb06f7r8dnhabfy9fr")))) + "172jyl8v4zy9bbha8nndq63x8svn9xqkafkj3q17z289na8iaylh")))) (build-system emacs-build-system) (propagated-inputs `(("dash" ,emacs-dash) @@ -1461,13 +1511,14 @@ (define-public emacs-google-maps (name "emacs-google-maps") (version "1.0.0") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/jd/google-maps.el/" - "archive/" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/jd/google-maps.el.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "014bxapm4d8vjxbzrfjdpsavxyfx981mlcb10aq5rmigr6il8ybs")))) + "183igr5lp20zcqi7rc01fk76sfxdhksd74i11v16gdsifdkjimd0")))) (build-system emacs-build-system) (home-page "https://github.com/jd/google-maps.el") (synopsis "Access Google Maps from Emacs") @@ -1527,24 +1578,18 @@ (define-public emacs-graphviz-dot-mode (define-public emacs-mmm-mode (package (name "emacs-mmm-mode") - (version "0.5.5") + (version "0.5.7") (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/purcell/mmm-mode/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/purcell/mmm-mode.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "0c5ing3hcr74k78hqhrfwiv6m3n8hqfrw89j2x34vf60f4iyqzqc")))) + "0lxd55yhz0ag7v1ydff55bg4h8snq5lbk8cjwxqpyq6gh4v7md1h")))) (build-system gnu-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'autogen - (lambda _ - (invoke "sh" "autogen.sh")))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) @@ -1562,14 +1607,14 @@ (define-public emacs-tablist (name "emacs-tablist") (version "0.70") (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/politza/tablist/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/politza/tablist.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "177d6s7ym1mwz1nhnl09r14z3n093g9a2szm97xsaig0c204xz9c")))) + "0gy9hxm7bca0l1hfy2pzn86avpifrz3bs8xzpicj4kxw5wi4ygns")))) (build-system emacs-build-system) (home-page "https://github.com/politza/tablist") (synopsis "Extension for @code{tabulated-list-mode}") @@ -2622,14 +2667,14 @@ (define-public emacs-ob-ipython (define-public emacs-debbugs (package (name "emacs-debbugs") - (version "0.16") + (version "0.17") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/debbugs-" version ".tar")) (sha256 (base32 - "0y3bq803c7820h15g66d1648skxfhlfa2v6vincj6xk5ssp44s9p")))) + "0zclh2nxj5p10n214sxyxy3ca07l5s9p5spk0xp1smr6nzn0w7gb")))) (build-system emacs-build-system) (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$"))) (propagated-inputs @@ -2959,6 +3004,34 @@ (define-public emacs-typo on context.") (license license:gpl3+))) +(define-public emacs-company-lsp + (package + (name "emacs-company-lsp") + (version "2.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tigersoldier/company-lsp.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1hy1x2w0yp5brm7714d1hziz3rpkywb5jp3yj78ibmi9ifny9vri")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-lsp-mode" ,emacs-lsp-mode) + ("emacs-company" ,emacs-company) + ("emacs-s" ,emacs-s) + ("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/tigersoldier/company-lsp") + (synopsis "Completion for @code{lsp-mode}") + (description + "This package provides completion features that are not possible with +@code{lsp-mode} and @code{company-capf} alone, including support for trigger +characters and asynchronous fetching of completion candidates.") + (license license:gpl3+))) + (define-public emacs-scheme-complete (let ((commit "9b5cf224bf2a5994bc6d5b152ff487517f1a9bb5")) (package @@ -3037,6 +3110,33 @@ (define-public emacs-scel SuperCollider is a platform for audio synthesis and algorithmic composition.") (license license:gpl2+)))) +(define-public emacs-company-auctex + (let ((commit "48c42c58ce2f0e693301b0cb2d085055410c1b25") + (revision "1")) + (package + (name "emacs-company-auctex") + (version (git-version "0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alexeyr/company-auctex") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "10qn7frn5wcmrlci3v6iliqzj7r9dls87h9zp3xkgrgn4bqprfp8")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-yasnippet" ,emacs-yasnippet) + ("emacs-auctex" ,emacs-auctex) + ("emacs-company" ,emacs-company))) + (home-page "https://github.com/alexeyr/company-auctex/") + (synopsis "Completion for @code{AUCTeX}") + (description + "This package provides a group of backends permitting auto-completion +for @code{AUCTeX}.") + (license license:gpl3+)))) + (define-public emacs-mit-scheme-doc (package (name "emacs-mit-scheme-doc") @@ -3208,6 +3308,78 @@ (define-public emacs-popup and popup menus.") (license license:gpl3+))) +(define-public emacs-python-environment + (package + (name "emacs-python-environment") + (version "0.0.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tkf/emacs-python-environment/") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0q6bib9nr6xiq6npzbngyfcjk87yyvwzq1zirr3z1h5wadm34lsk")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-deferred" ,emacs-deferred))) + (home-page "https://github.com/tkf/emacs-python-environment") + (synopsis "Provides a @code{virtualenv} API in Emacs Lisp") + (description + "This package permits automated installation of tools written in Python.") + (license license:gpl3+))) + +(define-public emacs-jedi + (package + (name "emacs-jedi") + (version "0.2.7") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tkf/emacs-jedi/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0xbp9fcxgbf298w05hvf52z41kk7r52975ailgdn8sg60xc98fa7")))) + (build-system emacs-build-system) + (native-inputs + `(("emacs-mocker" ,emacs-mocker))) + (propagated-inputs + `(("emacs-auto-complete" ,emacs-auto-complete) + ("emacs-python-environment" ,emacs-python-environment) + ("emacs-epc" ,emacs-epc))) + (home-page "https://github.com/tkf/emacs-jedi") + (synopsis "Provides Python completion in Emacs") + (description + "This package provides completion in Python buffers and also helps find +the locations of docstrings, arguments, and functions.") + (license license:gpl3+))) + +(define-public emacs-company-jedi + (package + (name "emacs-company-jedi") + (version "0.04") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/syohex/emacs-company-jedi") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ihqapp4dv92794rsgyq0rmhwika60cmradqd4bn9b72ss6plxs1")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-jedi" ,emacs-jedi) + ("emacs-company" ,emacs-company))) + (home-page "https://github.com/syohex/emacs-company-jedi") + (synopsis "Provides Python completion in @code{company-mode}") + (description + "This package provides a Company backend for Python.") + (license license:gpl3+))) + (define-public emacs-puppet-mode (let ((commit "b3ed5057166a4f49dfa9be638523a348b55a2fd2") (revision "1")) @@ -3283,6 +3455,32 @@ (define-public emacs-jinja2-mode sgml/html integration, and indentation (working with sgml).") (license license:gpl3+))) +(define-public emacs-company-cabal + ;; The latest version is 0.3.0, but no release has been provided after 0.2.1. + (let ((commit "62112a7259e24bd6c08885629a185afe512b7d3d") + (revision "1")) + (package + (name "emacs-company-cabal") + (version (git-version "0.3.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/iquiw/company-cabal/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1gf45xwjzdm8i4q6c6khk4dbg1mmp2r0awz2sjr4dcr2dbd1n7mg")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-company" ,emacs-company))) + (home-page "https://github.com/iquiw/company-cabal/") + (synopsis "Company completion for Haskell Cabal files") + (description + "This package allows for completion of field names, section names, +field values, and more within @code{haskell-cabal-mode}.") + (license license:gpl3+)))) + (define-public emacs-rfcview (package (name "emacs-rfcview") @@ -3409,6 +3607,31 @@ (define-public emacs-org-trello organizer.") (license license:gpl3+))) +(define-public emacs-company-flow + (let ((commit "76ef585c70d2a3206c2eadf24ba61e59124c3a16") + (revision "1")) + (package + (name "emacs-company-flow") + (version (git-version "0.1.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/aaronjensen/company-flow/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0zs9cblnbkxa0dxw4lyllmybqizxcdx96gv8jlhx20nrjpi78piw")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-company" ,emacs-company) + ("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/aaronjensen/company-flow/") + (synopsis "Flow backend for @code{company-mode}") + (description + "This package provides completion for JavaScript files utilizing Flow.") + (license license:gpl3+)))) + (define-public emacs-atom-one-dark-theme (let ((commit "1f1185bf667a38d3d0d180ce85fd4c131818aae2") (revision "0")) @@ -3535,6 +3758,31 @@ (define-public emacs-base16-theme single theme but a set of guidelines with numerous implementations.") (license license:expat))) +(define-public emacs-prescient + (package + (name "emacs-prescient") + (version "2.2.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/raxod502/prescient.el/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ncplx5p3cffyzg9ygzqqxj0vpvwrz9rp2n4z6c375a78fyydrk0")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-company" ,emacs-company) + ("emacs-ivy" ,emacs-ivy))) + (home-page "https://github.com/raxod502/prescient.el/") + (synopsis "Library that sorts and filters lists of candidates") + (description + "This package provides a library for sorting and filtering, as well as +extensions for @code{ivy-mode} and @code{company-mode} that make use of the +library.") + (license license:gpl3+))) + (define-public emacs-smartparens (package (name "emacs-smartparens") @@ -4158,6 +4406,30 @@ (define-public emacs-epl @code{package.el} into a sane API.") (license license:gpl3+))) +(define-public emacs-counsel-projectile + (package + (name "emacs-counsel-projectile") + (version "0.3.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ericdanan/counsel-projectile") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1inc4ndl0ysfwvxk4avbgpj4qi9rc93da6476a5c81xmwpsv8wmq")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ivy" ,emacs-ivy) + ("emacs-projectile" ,emacs-projectile))) + (home-page "https://github.com/ericdanan/counsel-projectile") + (synopsis "Enhance Projectile with Ivy") + (description + "This package uses Ivy to provide additional actions for Projectile +commands and replacements for existing functions.") + (license license:gpl3+))) + (define-public emacs-queue (package (name "emacs-queue") @@ -5750,6 +6022,35 @@ (define-public emacs-alert customizable by the user.") (license license:gpl2+))) +(define-public emacs-zones + (let ((commit "353fc38a6544eb59887bee045e373406f1d038a5") + (revision "1")) + (package + (name "emacs-zones") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacsmirror/zones.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0gwnw2giii2a14nlh62xp45f47cw6ikqphhzpmcw6c7mn9x5z2ar")) + (patches + (search-patches + "emacs-zones-called-interactively.patch")))) + (build-system emacs-build-system) + (home-page "https://www.emacswiki.org/emacs/Zones") + (synopsis "Define and act on multiple zones of buffer text") + (description "Library @file{zones.el} lets you easily define and +subsequently act on multiple zones of buffer text. You can think of this as +enlarging the notion of region. In effect, it can remove the requirement of +target text being a contiguous sequence of characters. A set of buffer zones +is, in effect, a (typically) noncontiguous set of text.") + (license license:gpl3+)))) + (define-public emacs-mu4e-alert (package (name "emacs-mu4e-alert") @@ -7212,7 +7513,7 @@ (define-public emacs-eimp (license license:gpl2+)))) (define-public emacs-dired-hacks - (let ((commit "eda68006ce73bbf6b9b995bfd70d08bec8cade36") + (let ((commit "2c1234592aee91dcd9401bcd67213e6a4a464fd9") (revision "1")) (package (name "emacs-dired-hacks") @@ -7226,7 +7527,7 @@ (define-public emacs-dired-hacks (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1w7ssl9zssn5rcha6apf4h8drkd02k4xgvs203bdbqyqp9wz9brx")))) + "1g7mky41cahpryzj6frdgzdymknpqq7pidzfjj9304887kijmhj3")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash) @@ -8481,13 +8782,14 @@ (define-public emacs-emmet-mode (name "emacs-emmet-mode") (version "1.0.8") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/smihica/emmet-mode" - "/archive/" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0g3p22yabfcp98cfv9dgl9il2m2pd53isq2q11vb3s7qyn31f7zj")))) + (method git-fetch) + (uri (git-reference + (url "https://github.com/smihica/emmet-mode.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1dsa85bk33j90h1ypaz1ylqh9yp2xvlga237h3kwa5y3sb0d5ydi")))) (build-system emacs-build-system) (home-page "https://github.com/smihica/emmet-mode") (synopsis "Unofficial Emmet's support for Emacs") @@ -13852,3 +14154,26 @@ (define-public emacs-helm-wikipedia "This package provides an Emacs Helm interface for search suggestions and article extracts for Wikipedia.") (license license:gpl3+)))) + +(define-public emacs-webfeeder + (package + (name "emacs-webfeeder") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://elpa.gnu.org/packages/webfeeder-" + version + ".tar")) + (sha256 + (base32 + "06y5vxw9m6pmbrzb8v2i3w9dnhgqxz06vyx1knmgi9cczlrj4a64")))) + (build-system emacs-build-system) + (home-page "https://gitlab.com/Ambrevar/emacs-webfeeder") + (synopsis "Build RSS and Atom webfeeds from HTML files") + (description + "Webfeeder is an Emacs library to generate RSS and Atom feeds from HTML +files. The various elements of the HTML input are parsed with customizable +functions (e.g. @code{webfeeder-title-function}).") + (license license:gpl3+))) diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 4ac76e35b0..a90ceab0d2 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -85,6 +85,7 @@ (define-module (gnu packages engineering) #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) #:use-module (gnu packages tex) + #:use-module (gnu packages version-control) #:use-module (gnu packages wxwidgets) #:use-module (gnu packages xorg)) @@ -554,43 +555,65 @@ (define-public fasthenry (define-public fritzing (package (name "fritzing") - (version "0.9.2b") + (version "0.9.3b") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/fritzing/" - "fritzing-app/archive/" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/fritzing/fritzing-app.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "15rwjp4xdj9w1z9f709rz9p0k2mi9k9idma9hvzkj5j8p04mg7yd")))) + "0hpyc550xfhr6gmnc85nq60w00rm0ljm0y744dp0z88ikl04f4s3")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) - (and (zero? (system* "tar" - "-xvf" (assoc-ref inputs "fritzing-parts-db") - "-C" "parts")) - (zero? (system* "qmake" - (string-append "PREFIX=" - (assoc-ref outputs "out")) - "phoenix.pro")))))))) + (copy-recursively (assoc-ref inputs "fritzing-parts-db") + "parts") + ;; Make compatible with libgit2 > 0.24 + (substitute* "src/version/partschecker.cpp" + (("error = git_remote_connect\\(remote, GIT_DIRECTION_FETCH, &callbacks\\)") + "error = git_remote_connect(remote, GIT_DIRECTION_FETCH, &callbacks, NULL, NULL)")) + + ;; Use system libgit2 and boost. + (substitute* "phoenix.pro" + (("^LIBGIT2INCLUDE =.*") + (string-append "LIBGIT2INCLUDE=" + (assoc-ref inputs "libgit2") "/include\n")) + (("^ LIBGIT2LIB =.*") + (string-append " LIBGIT2LIB=" + (assoc-ref inputs "libgit2") "/lib\n"))) + ;; This file checks for old versions of Boost, insisting on + ;; having us download the boost sources and placing them in the + ;; build directory. + (substitute* "pri/utils.pri" + (("error\\(") "message(")) + + (let ((out (assoc-ref outputs "out"))) + (invoke "qmake" + (string-append "QMAKE_LFLAGS_RPATH=-Wl,-rpath," out "/lib") + (string-append "PREFIX=" out) + "phoenix.pro"))))))) (inputs `(("qtbase" ,qtbase) ("qtserialport" ,qtserialport) ("qtsvg" ,qtsvg) + ("libgit2" ,libgit2) ("boost" ,boost) ("zlib" ,zlib) ("fritzing-parts-db" ,(origin - (method url-fetch) - (uri (string-append "https://github.com/fritzing/" - "fritzing-parts/archive/" version ".tar.gz")) - (file-name (string-append "fritzing-parts-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/fritzing/fritzing-parts.git") + (commit version))) + (file-name (git-file-name "fritzing-parts" version)) (sha256 (base32 - "0jqr8yjg7177f3pk1fcns584r0qavwpr280nggsi2ff3pwk5wpsz")))))) + "1d2v8k7p176j0lczx4vx9n9gbg3vw09n2c4b6w0wj5wqmifywhc1")))))) (home-page "http://fritzing.org") (synopsis "Electronic circuit design") (description diff --git a/gnu/packages/file.scm b/gnu/packages/file.scm index 4518c8d3dc..d04357023d 100644 --- a/gnu/packages/file.scm +++ b/gnu/packages/file.scm @@ -43,7 +43,9 @@ (define-public file ;; When cross-compiling, this package depends upon a native install of ;; itself. - (self-native-input? #t) + (native-inputs (if (%current-target-system) + `(("self" ,this-package)) + '())) (synopsis "File type guesser") (description diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 6988443e94..569a7f807e 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -384,14 +384,14 @@ (define-public font-adobe-source-han-sans (name "font-adobe-source-han-sans") (version "1.004") (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/adobe-fonts/source-han-sans/archive/" - version "R.tar.gz")) - (file-name (string-append "source-han-sans-" version "R.tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/adobe-fonts/source-han-sans.git") + (commit (string-append version "R")))) + (file-name (git-file-name name version)) (sha256 (base32 - "1ssx0fw90sy6mj8fv8fv4dgzszpqwbmwpjnlx16g4pvaqzdmybbz")))) + "0zm884d8fp5gvirq324050kqv7am9khyqhs9kk4r4rr3jzn61jpk")))) (outputs '("out" ; OpenType/CFF Collection (OTC), 121 MiB. "cn" "jp" "kr" "tw")) ; Region-specific Subset OpenType/CFF. (build-system trivial-build-system) @@ -400,20 +400,12 @@ (define-public font-adobe-source-han-sans #:builder (begin (use-modules (guix build utils)) - (let ((tar (string-append (assoc-ref %build-inputs - "tar") - "/bin/tar")) - (PATH (string-append (assoc-ref %build-inputs - "gzip") - "/bin")) - (install-opentype-fonts + (let ((install-opentype-fonts (lambda (fonts-dir out) (copy-recursively fonts-dir (string-append (assoc-ref %outputs out) "/share/fonts/opentype"))))) - (setenv "PATH" PATH) - (invoke tar "xvf" (assoc-ref %build-inputs "source")) - (chdir (string-append "source-han-sans-" ,version "R")) + (chdir (assoc-ref %build-inputs "source")) (install-opentype-fonts "OTC" "out") (install-opentype-fonts "SubsetOTF/CN" "cn") (install-opentype-fonts "SubsetOTF/JP" "jp") @@ -421,9 +413,6 @@ (define-public font-adobe-source-han-sans (install-opentype-fonts "SubsetOTF/TW" "tw") (for-each delete-file (find-files %output "\\.zip$")) #t)))) - (native-inputs - `(("gzip" ,gzip) - ("tar" ,tar))) (home-page "https://github.com/adobe-fonts/source-han-sans") (synopsis "Pan-CJK fonts") (description @@ -933,13 +922,14 @@ (define-public font-fira-sans (name "font-fira-sans") (version "4.202") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/mozilla/Fira/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/mozilla/Fira.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "1r6zdnqqp4bgq5nmgqbj0vvj7x1h9w912851ggbl9wc7fdjnjqnq")))) + "116j26gdj5g1r124b4669372f7490vfjqw7apiwp2ggl0am5xd0w")))) (build-system font-build-system) (home-page "https://mozilla.github.io/Fira/") (synopsis "Mozilla's Fira Sans Font") @@ -997,13 +987,14 @@ (define-public font-tamzen (version "1.11.4") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/sunaku/tamzen-font/archive/" - "Tamzen-" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/sunaku/tamzen-font.git") + (commit (string-append "Tamzen-" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "1ryd7gp6qiwaqw73jqbmh4kwlriyd8xykh4j7z90z8xp9fm7lrys")))) + "17kgmvg6q32mqhx9g44hjvzv0si0mnpprga4z7na930g2zdd8846")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -1011,30 +1002,19 @@ (define-public font-tamzen (begin (use-modules (guix build utils)) - (let ((tar (string-append (assoc-ref %build-inputs "tar") - "/bin/tar")) - (PATH (string-append (assoc-ref %build-inputs "gzip") - "/bin")) - (font-dir (string-append %output "/share/fonts/misc")) - (psf-dir (string-append %output "/share/kbd/consolefonts")) - (src-pcf-dir (string-append "tamzen-font-Tamzen-" - ,version "/pcf"))) - (setenv "PATH" PATH) - (invoke tar "xvf" (assoc-ref %build-inputs "source")) + (let* ((out (assoc-ref %outputs "out")) + (font-dir (string-append out "/share/fonts/misc")) + (psf-dir (string-append out "/share/kbd/consolefonts"))) + (chdir (assoc-ref %build-inputs "source")) (mkdir-p font-dir) (mkdir-p psf-dir) - (chdir src-pcf-dir) (for-each (lambda (pcf) (install-file pcf font-dir)) - (find-files "." "\\.pcf$")) - (chdir "../psf") + (find-files "pcf" "\\.pcf$")) (for-each (lambda (psf) (install-file psf psf-dir)) - (find-files "." "\\.psf$")) + (find-files "psf" "\\.psf$")) #t)))) - (native-inputs - `(("tar" ,tar) - ("gzip" ,gzip))) (home-page "https://github.com/sunaku/tamzen-font") (synopsis "Monospaced bitmap font for console and X11") (description @@ -1106,15 +1086,15 @@ (define-public font-comic-neue (define-public font-iosevka (package (name "font-iosevka") - (version "1.12.5") - (source (origin - (method url-fetch/zipbomb) - (uri (string-append - "https://github.com/be5invis/Iosevka/releases/download/v" - version "/iosevka-pack-" version ".zip")) - (sha256 - (base32 - "0s3g6mk0ngwsrw9h9dqinb50cd9i8zhqdcmmh93fhyf4d87yfwyi")))) + (version "2.2.0") + (source + (origin + (method url-fetch/zipbomb) + (uri (string-append "https://github.com/be5invis/Iosevka" + "/releases/download/v" version + "/ttc-iosevka-" version ".zip")) + (sha256 + (base32 "14jfv6pkh1w44m89z2fn44kgmmqaf0057lk71advwfbm3q313y0x")))) (build-system font-build-system) (home-page "https://be5invis.github.io/Iosevka/") (synopsis "Coders' typeface, built from code") @@ -1125,6 +1105,20 @@ (define-public font-iosevka (license (list license:silofl1.1 ; build artifacts (i.e. the fonts) license:bsd-3)))) ; supporting code +(define-public font-iosevka-slab + (package + (inherit font-iosevka) + (name "font-iosevka-slab") + (version (package-version font-iosevka)) + (source + (origin + (method url-fetch/zipbomb) + (uri (string-append "https://github.com/be5invis/Iosevka" + "/releases/download/v" version + "/ttc-iosevka-slab-" version ".zip")) + (sha256 + (base32 "186d0pl13znysll3hvzm1ixn7ad616g6dhla55sbh6ki2j04b8ml")))))) + (define-public font-go (let ((commit "f03a046406d4d7fbfd4ed29f554da8f6114049fc") (revision "1")) @@ -1162,14 +1156,14 @@ (define-public font-google-material-design-icons (name "font-google-material-design-icons") (version "3.0.1") (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/google/material-design-icons/archive/" - version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/google/material-design-icons.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "018i3za9r6kf6svci33z09lc5pr5yz4164m8gzzwjzzqcrng0p5j")) - (file-name (string-append name "-" version ".tar.gz")))) + "17q5brcqyyc8gbjdgpv38p89s60cwxjlwy2ljnrvas5cj0s62np0")))) (build-system font-build-system) (home-page "http://google.github.io/material-design-icons") (synopsis "Icon font of Google Material Design icons") @@ -1188,13 +1182,14 @@ (define-public font-open-dyslexic (version "20160623") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/antijingoist/open-dyslexic/" - "archive/" version "-Stable.tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/antijingoist/open-dyslexic.git") + (commit (string-append version "-Stable")))) + (file-name (git-file-name name version)) (sha256 (base32 - "0al0j9kb32kfavcpq1kigsd36yzvf5yhzqhds0jkh7ngbxyxwkx4")))) + "0nr7s92nk1kbr459154idnib977ixc70z6g9mbra3lp73nyrmyvz")))) (build-system font-build-system) (home-page "https://opendyslexic.org") (synopsis "Font for dyslexics and high readability") diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 0c27cd69a4..00d519b306 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -230,7 +230,7 @@ (define-public libxdg-basedir (define-public elogind (package (name "elogind") - (version "241.1") + (version "241.2") (source (origin (method git-fetch) (uri (git-reference @@ -239,7 +239,7 @@ (define-public elogind (file-name (git-file-name name version)) (sha256 (base32 - "0a4irq4ycps3xcizjjr0gz3j46dyqvcwa4ncinpqpqlasi8l18nk")))) + "1ragysp4kh1vj3zpz1aprh5h4k3hmp3i5q55pimpabdpkdfbv2fc")))) (build-system meson-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm index 3651b92e5d..96953d6fd5 100644 --- a/gnu/packages/ftp.scm +++ b/gnu/packages/ftp.scm @@ -134,9 +134,9 @@ (define-public ncftp (synopsis "Command-line File Transfer Protocol (FTP) client") (description "NcFTP Client (or just NcFTP) is a set of command-line programs to access -File Transfer Protocol (FTP) servers. This includes 'ncftp', an interactive -FTP browser, as well as non-interactive commands such as 'ncftpput' and -'ncftpget'.") +File Transfer Protocol (FTP) servers. This includes @code{ncftp}, an interactive +FTP browser, as well as non-interactive commands such as @code{ncftpput} and +@code{ncftpget}.") (license clarified-artistic))) @@ -209,14 +209,14 @@ (define-public libfilezilla (define-public filezilla (package (name "filezilla") - (version "3.41.1") + (version "3.41.2") (source (origin (method url-fetch) (uri (string-append "https://download.filezilla-project.org/client/" "FileZilla_" version "_src.tar.bz2")) (sha256 - (base32 "0mlv21054fk11rspbnig0q4gph1iqsqm4rpya3wl5is50p33vg5w")))) + (base32 "05zhvzvzkbns0cdxmlswvasfa6031y22dhfj9y5p85gi654f4fy2")))) (build-system gnu-build-system) (arguments ;; Don't let filezilla phone home to check for updates. diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 25935aafcc..adcad53a11 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -14,6 +14,7 @@ ;;; Copyright © 2017 Arun Isaac ;;; Copyright © 2017 Rutger Helling ;;; Copyright © 2018 Marius Bakke +;;; Copyright © 2019 Pierre Neidhardt ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,6 +36,7 @@ (define-module (gnu packages game-development) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix svn-download) #:use-module (guix utils) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) @@ -431,7 +433,7 @@ (define-public python2-xsge (define-public tiled (package (name "tiled") - (version "1.2.2") + (version "1.2.3") (source (origin (method git-fetch) (uri (git-reference @@ -440,7 +442,7 @@ (define-public tiled (file-name (git-file-name name version)) (sha256 (base32 - "0ay4x1b6h5xfax1cqry2fklcmqi6a16klgmci4gkhga7as66lnnn")))) + "1nfyigfkl10n9r82p1qxhpr09jn2kwalh9n5r209bcaj8dxspph8")))) (build-system gnu-build-system) (inputs `(("qtbase" ,qtbase) @@ -567,7 +569,7 @@ (define-public sfxr (define-public physfs (package (name "physfs") - (version "3.0.1") + (version "3.0.2") (source (origin (method url-fetch) (uri (string-append @@ -576,7 +578,7 @@ (define-public physfs (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1wgj2zqpnfbnyyi1i7bq5pshcc9n5cvwlpzp8im67nb8662ryyxp")))) + "0qzqz4r88gvd8m7sh2z5hvqcr0jfr4wb2f77c19xycyn0rigfk9h")))) (build-system cmake-build-system) (arguments '(#:tests? #f ; no check target @@ -1078,7 +1080,7 @@ (define-public openmw (method url-fetch) (uri (string-append "https://github.com/OpenMW/openmw/archive/" - name "-" version ".tar.gz")) + "openmw-" version ".tar.gz")) (sha256 (base32 "03fgm2f2r7y0aqlgp038pdlnllgvm3jimrp968p4nhz1sffvjzcy")))) @@ -1329,3 +1331,76 @@ (define-public guile-chickadee @item REPL-driven development model @end enumerate\n") (license license:gpl3+))) + +(define-public bennu-game-development + (package + (name "bennu-game-development") + (version "348") + (source (origin + (method svn-fetch) + (uri (svn-reference + (url "http://svn.code.sf.net/p/bennugd/code") + (revision (string->number version)))) + (file-name (string-append name "-" version)) + (sha256 + (base32 + "0wpzsbh4zi3931493dnyl5ffmh1b7fj2sx3mzrq304z9zs4d6lqq")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "3rdparty") #t)))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-configure-to-use-openssl + (lambda* (#:key outputs #:allow-other-keys) + (chdir "core") + (delete-file "configure") + (substitute* "configure.in" + (("i\\*86\\)") + "*) + COMMON_CFLAGS=\"$COMMON_CFLAGS -DUSE_OPENSSL\" + COMMON_LDFLAGS=\"$COMMON_LDFLAGS\" + LIBSSL=\"crypto\" + USE_OPENSSL=yes + ;; + + i*86)")) + #t))))) + (inputs `(("openssl" ,openssl) + ("zlib" ,zlib))) + (native-inputs `(("pkg-config" ,pkg-config) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) + (synopsis "Programming language to create games") + (description "Bennu Game Development, also known as bennudg, is a +programming language tailored at game development. It is the successor of +Fenix.") + (home-page "https://sourceforge.net/projects/bennugd/") + (license license:zlib))) + +(define-public bennu-game-development-modules + (package + (inherit bennu-game-development) + (name "bennu-game-development-modules") + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-conflicting-definitions + (lambda _ + (with-fluids ((%default-port-encoding #f)) + (substitute* "core/include/fmath.h" + (("extern fixed fmul\\( int x, int y \\);") "") + (("extern fixed fdiv\\( int x, int y \\);") ""))) + (chdir "modules")))))) + (inputs `(("zlib" ,zlib) + ("libpng" ,libpng) + ("openssl" ,openssl) + ("sdl-mixer" ,sdl-mixer) + ("bennu-game-development" ,bennu-game-development))) + (synopsis "Modules for the Bennu Game Developement programming language") + (description "This package contains a collection of modules for the Bennu +Game Developement programming language, from CD handling through SDL to +joystick support."))) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index e750d0657e..8207b92dc9 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Eric Bavier ;;; Copyright © 2014 Cyrill Schenkel ;;; Copyright © 2014 Sylvain Beucler -;;; Copyright © 2014, 2015, 2018 Ludovic Courtès +;;; Copyright © 2014, 2015, 2018, 2019 Ludovic Courtès ;;; Copyright © 2014, 2015, 2016 Sou Bunnbu ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015, 2016 Andreas Enge @@ -17,7 +17,7 @@ ;;; Copyright © 2016, 2017 Rodger Fox ;;; Copyright © 2016, 2017, 2018 ng0 ;;; Copyright © 2016 Albin Söderqvist -;;; Copyright © 2016, 2017, 2018 Kei Kebreau +;;; Copyright © 2016, 2017, 2018, 2019 Kei Kebreau ;;; Copyright © 2016 Alex Griffin ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner ;;; Copyright © 2016 Jan Nieuwenhuizen @@ -165,14 +165,88 @@ (define-module (gnu packages games) #:use-module ((srfi srfi-1) #:hide (zip)) #:use-module (srfi srfi-26)) -(define-public armagetronad +;; Data package for adanaxisgpl. +(define adanaxis-mush + (let ((version "1.1.0")) + (origin + (method url-fetch) + (uri (string-append "http://www.mushware.com/files/adanaxis-mush-" + version ".tar.gz")) + (sha256 + (base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03"))))) + +(define-public adanaxisgpl (package - (name "armagetronad") + (name "adanaxisgpl") + (version "1.2.5") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.mushware.com/files/adanaxisgpl-" + version ".tar.gz")) + (sha256 + (base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Necessary for building with gcc >=4.7. + (substitute* "src/Mushcore/MushcoreSingleton.h" + (("SingletonPtrSet\\(new SingletonType\\);") + "MushcoreSingleton::SingletonPtrSet(new SingletonType);")) + ;; Avoid an "invalid conversion from const char* to char*" error. + (substitute* "src/Platform/X11/PlatformMiscUtils.cpp" + (("char \\*end, \\*result;") + (string-append "const char *end;" + "\n" + "char *result;"))) + #t)))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (add-after 'install 'install-data + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((data (assoc-ref inputs "adanaxis-mush")) + (share (string-append (assoc-ref outputs "out") + "/share/" ,name "-" ,version))) + (mkdir-p share) + (invoke "tar" "xvf" data "-C" share))))))) + (native-inputs + `(("adanaxis-mush" ,adanaxis-mush))) ; game data + (inputs + `(("expat" ,expat) + ("freeglut" ,freeglut) + ("glu" ,glu) + ("libjpeg" ,libjpeg) + ("libogg" ,libogg) + ("libtiff" ,libtiff) + ("libvorbis" ,libvorbis) + ("libx11" ,libx11) + ("libxext" ,libxext) + ("pcre" ,pcre) + ("sdl" ,sdl) + ("sdl-mixer" ,sdl-mixer))) + (home-page "https://www.mushware.com") + (synopsis "Action game in four spatial dimensions") + (description + "Adanaxis is a fast-moving first person shooter set in deep space, where +the fundamentals of space itself are changed. By adding another dimension to +space this game provides an environment with movement in four directions and +six planes of rotation. Initially the game explains the 4D control system via +a graphical sequence, before moving on to 30 levels of gameplay with numerous +enemy, ally, weapon and mission types. Features include simulated 4D texturing, +mouse and joystick control, and original music.") + (license license:gpl2))) + +(define-public armagetron-advanced + (package + (name "armagetron-advanced") (version "0.2.8.3.4") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/" name "/stable/" - version "/" name "-" version ".src.tar.gz")) + (uri (string-append "mirror://sourceforge/armagetronad/stable/" + version "/armagetronad-" version ".src.tar.gz")) (sha256 (base32 "1pgy0r80z702qdv94aw3ywdn4ynnr4cdi86ml558pljfc5ygasj4")))) @@ -186,14 +260,17 @@ (define-public armagetronad ("libjpeg-turbo" ,libjpeg-turbo))) (home-page "http://www.armagetronad.org") (synopsis "Tron clone in 3D") - (description "Armagetron is a multiplayer game in 3d that attempts to -emulate and expand on the lightcycle sequence from the movie Tron. It's -an old school arcade game slung into the 21st century. Highlights include -a customizable playing arena, HUD, unique graphics, and AI bots. For the -more advanced player there are new game modes and a wide variety of physics -settings to tweak as well.") + (description "Armagetron Advanced is a multiplayer game in 3d that +attempts to emulate and expand on the lightcycle sequence from the movie Tron. +It's an old school arcade game slung into the 21st century. Highlights +include a customizable playing arena, HUD, unique graphics, and AI bots. For +the more advanced player there are new game modes and a wide variety of +physics settings to tweak as well.") (license license:gpl2+))) +(define-public armagetronad + (deprecated-package "armagetronad" armagetron-advanced)) + (define-public bastet (package (name "bastet") @@ -258,7 +335,7 @@ (define-public bastet canyons and wait for the long I-shaped block to clear four rows at a time.") (license license:gpl3+))) -(define-public cataclysm-dda +(define-public cataclysm-dark-days-ahead (let ((commit "9c732a5de48928691ab863d3ab275ca7b0e522fc")) (package (name "cataclysm-dda") @@ -313,15 +390,19 @@ (define-public cataclysm-dda (home-page "http://en.cataclysmdda.com/") (synopsis "Survival horror roguelike video game") (description - "Cataclysm: Dark Days Ahead is a roguelike set in a post-apocalyptic -world. Struggle to survive in a harsh, persistent, procedurally generated -world. Scavenge the remnants of a dead civilization for food, equipment, or, -if you are lucky, a vehicle with a full tank of gas to get you out of Dodge. -Fight to defeat or escape from a wide variety of powerful monstrosities, from -zombies to giant insects to killer robots and things far stranger and deadlier, -and against the others like yourself, that want what you have.") + "Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set +in a post-apocalyptic world. Struggle to survive in a harsh, persistent, +procedurally generated world. Scavenge the remnants of a dead civilization +for food, equipment, or, if you are lucky, a vehicle with a full tank of gas +to get you out of Dodge. Fight to defeat or escape from a wide variety of +powerful monstrosities, from zombies to giant insects to killer robots and +things far stranger and deadlier, and against the others like yourself, that +want what you have.") (license license:cc-by-sa3.0)))) +(define-public cataclysm-dda + (deprecated-package "cataclysm-dda" cataclysm-dark-days-ahead)) + (define-public cowsay (package (name "cowsay") @@ -330,7 +411,7 @@ (define-public cowsay (method url-fetch) (uri (string-append "https://github.com/tnalpgge/" "rank-amateur-cowsay/archive/" - name "-" version ".tar.gz")) + "cowsay-" version ".tar.gz")) (sha256 (base32 "12w7apbf6a9qffk92r32b16w22na2fjcqbl32rn0n7zw5hrp3f6q")))) @@ -363,80 +444,82 @@ (define-public cowsay (define-public freedoom (package - (name "freedoom") - (version "0.11.3") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/" name "/" name - "/archive/v" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1bjijdfqhpazyifx1qda7scj7dry1azhjrnl8h8zn2vqfgdmlh0q")))) - (build-system gnu-build-system) - (arguments - '(#:make-flags `(,(string-append "prefix=" (assoc-ref %outputs "out"))) - #:parallel-build? #f - #:tests? #f ; no check target - #:phases - (modify-phases %standard-phases - (delete 'bootstrap) - (replace 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((dejavu (assoc-ref inputs "font-dejavu")) - (freedoom (assoc-ref outputs "out")) - (wad-dir (string-append freedoom "/share/games/doom"))) - ;; Replace the font-searching function in a shell - ;; script with a direct path to the required font. - ;; This is necessary because ImageMagick can only find the - ;; most basic fonts while in the build environment. - (substitute* "graphics/titlepic/create_caption" - (("font=\\$\\(find_font.*$") - (string-append - "font=" dejavu - "/share/fonts/truetype/DejaVuSansCondensed-Bold.ttf\n"))) - ;; Make icon creation reproducible. - (substitute* "dist/Makefile" - (("freedm.png") - "-define png:exclude-chunks=date freedm.png") - (("freedoom1.png") - "-define png:exclude-chunks=date freedoom1.png") - (("freedoom2.png") - "-define png:exclude-chunks=date freedoom2.png")) - ;; Make sure that the install scripts know where to find - ;; the appropriate WAD files. - (substitute* "dist/freedoom" - (("IWAD=freedm.wad") - (string-append "IWAD=" wad-dir "/freedm.wad")) - (("IWAD=freedoom1.wad") - (string-append "IWAD=" wad-dir "/freedoom1.wad")) - (("IWAD=freedoom2.wad") - (string-append "IWAD=" wad-dir "/freedoom2.wad"))) - #t)))))) - (native-inputs - `(("asciidoc" ,asciidoc) - ("deutex" ,deutex) - ("font-dejavu" ,font-dejavu) - ("imagemagick" ,imagemagick) - ("python" ,python-2))) - (inputs - `(("prboom-plus" ,prboom-plus))) - (home-page "https://freedoom.github.io/") - (synopsis "Free content game based on the Doom engine") - (native-search-paths - (list (search-path-specification - (variable "DOOMWADDIR") - (files '("share/games/doom"))) - (search-path-specification - (variable "DOOMWADPATH") - (files '("share/games/doom"))))) - (description - "The Freedoom project aims to create a complete free content first person + (name "freedoom") + (version "0.11.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/freedoom/freedoom.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0k4dlgr82qk6i7dchp3nybq6awlfag2ivy3zzl1v6vhcrnbvssgl")))) + (build-system gnu-build-system) + (arguments + '(#:make-flags + (list (string-append "prefix=" (assoc-ref %outputs "out"))) + #:parallel-build? #f + #:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (delete 'bootstrap) + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((dejavu (assoc-ref inputs "font-dejavu")) + (freedoom (assoc-ref outputs "out")) + (wad-dir (string-append freedoom "/share/games/doom"))) + ;; Replace the font-searching function in a shell + ;; script with a direct path to the required font. + ;; This is necessary because ImageMagick can only find the + ;; most basic fonts while in the build environment. + (substitute* "graphics/titlepic/create_caption" + (("font=\\$\\(find_font.*$") + (string-append + "font=" dejavu + "/share/fonts/truetype/DejaVuSansCondensed-Bold.ttf\n"))) + ;; Make icon creation reproducible. + (substitute* "dist/Makefile" + (("freedm.png") + "-define png:exclude-chunks=date freedm.png") + (("freedoom1.png") + "-define png:exclude-chunks=date freedoom1.png") + (("freedoom2.png") + "-define png:exclude-chunks=date freedoom2.png")) + ;; Make sure that the install scripts know where to find + ;; the appropriate WAD files. + (substitute* "dist/freedoom" + (("IWAD=freedm.wad") + (string-append "IWAD=" wad-dir "/freedm.wad")) + (("IWAD=freedoom1.wad") + (string-append "IWAD=" wad-dir "/freedoom1.wad")) + (("IWAD=freedoom2.wad") + (string-append "IWAD=" wad-dir "/freedoom2.wad"))) + #t)))))) + (native-inputs + `(("asciidoc" ,asciidoc) + ("deutex" ,deutex) + ("font-dejavu" ,font-dejavu) + ("imagemagick" ,imagemagick) + ("python" ,python-2))) + (inputs + `(("prboom-plus" ,prboom-plus))) + (home-page "https://freedoom.github.io/") + (synopsis "Free content game based on the Doom engine") + (native-search-paths + (list (search-path-specification + (variable "DOOMWADDIR") + (files '("share/games/doom"))) + (search-path-specification + (variable "DOOMWADPATH") + (files '("share/games/doom"))))) + (description + "The Freedoom project aims to create a complete free content first person shooter game. Freedoom by itself is just the raw material for a game: it must be paired with a compatible game engine (such as @code{prboom-plus}) to be played. Freedoom complements the Doom engine with free levels, artwork, sound effects and music to make a completely free game.") - (license license:bsd-3))) + (license license:bsd-3))) (define-public freedroidrpg (package @@ -680,13 +763,16 @@ (define-public gnubg ("pkg-config" ,pkg-config))) (home-page "http://gnubg.org") (synopsis "Backgammon game") - (description "The GNU backgammon application can be used for playing, -analyzing and teaching the game. It has an advanced evaluation engine based on -artificial neural networks suitable for both beginners and advanced players. In -addition to a command-line interface, it also features an attractive, 3D -representation of the playing board.") + (description "The GNU backgammon application (also known as \"gnubg\") can +be used for playing, analyzing and teaching the game. It has an advanced +evaluation engine based on artificial neural networks suitable for both +beginners and advanced players. In addition to a command-line interface, it +also features an attractive, 3D representation of the playing board.") (license license:gpl3+))) +(define-public gnubackgammon + (deprecated-package "gnubackgammon" gnubg)) + (define-public gnubik (package (name "gnubik") @@ -746,7 +832,7 @@ (define-public ltris (origin (method url-fetch) (uri (string-append "http://prdownloads.sourceforge.net/lgames/" - name "-" version ".tar.gz")) + "ltris-" version ".tar.gz")) (sha256 (base32 "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg")))) @@ -786,8 +872,9 @@ (define-public nethack (source (origin (method url-fetch) - (uri (string-append "https://www.nethack.org/download/" - version "/" name "-361-src.tgz")) + (uri + (string-append "https://www.nethack.org/download/" version "/nethack-" + (string-join (string-split version #\.) "") "-src.tgz")) (sha256 (base32 "1dha0ijvxhx7c9hr0452h93x81iiqsll8bc9msdnp7xdqcfbz32b")))) (inputs @@ -912,10 +999,9 @@ (define-public pipewalker (origin (method url-fetch) (uri (string-append "http://downloads.sourceforge.net/pipewalker/" - name "-" version ".tar.gz")) + "pipewalker-" version ".tar.gz")) (sha256 - (base32 - "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn")))) + (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -950,11 +1036,10 @@ (define-public prboom-plus (version "2.5.1.4") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/" name "/" name "/" - version "/" name "-" version ".tar.gz")) + (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/" + version "/prboom-plus-" version ".tar.gz")) (sha256 - (base32 - "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0")) + (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0")) (modules '((guix build utils))) (snippet '(begin @@ -1178,19 +1263,19 @@ (define-public xshogi ;; state "GNU General Public Licence" without specifying a version. (license license:gpl1+))) -(define-public abbaye +(define-public l-abbaye-des-morts (package - (name "abbaye") + (name "l-abbaye-des-morts") (version "2.0.1") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/nevat/abbayedesmorts-gpl/" - "archive/v" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/nevat/abbayedesmorts-gpl.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "1a67b0hq6271dd7pvwndjq29cwn2n8gawwz17xafa3k1hrhf8vw3")) + (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb")) (modules '((guix build utils))) (snippet ;; Unbundle fonts. @@ -1232,6 +1317,9 @@ (define-public abbaye that beneath its ruins lay buried an ancient evil.") (license license:gpl3))) +(define-public abbaye + (deprecated-package "abbaye" l-abbaye-des-morts)) + (define-public angband (package (name "angband") @@ -1667,7 +1755,7 @@ (define-public mars (uri (git-reference (url "https://github.com/thelaui/M.A.R.S..git") (commit commit))) - (file-name (string-append name "-" version)) + (file-name (git-file-name name version)) (sha256 (base32 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh")) @@ -1892,7 +1980,7 @@ (define-public fizmo (source (origin (method url-fetch) (uri (string-append "https://fizmo.spellbreaker.org/source/" - name "-" version ".tar.gz")) + "fizmo-" version ".tar.gz")) (sha256 (base32 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w")))) @@ -2095,9 +2183,9 @@ (define-public gnujump falling, themeable graphics and sounds, and replays.") (license license:gpl3+))) -(define-public wesnoth +(define-public the-battle-for-wesnoth (package - (name "wesnoth") + (name "the-battle-for-wesnoth") (version "1.14.6") (source (origin (method url-fetch) @@ -2135,10 +2223,13 @@ (define-public wesnoth next campaign.") (license license:gpl2+))) -(define-public wesnoth-server +(define-public wesnoth + (deprecated-package "wesnoth" the-battle-for-wesnoth)) + +(define-public the-battle-for-wesnoth-server (package - (inherit wesnoth) - (name "wesnoth-server") + (inherit the-battle-for-wesnoth) + (name "the-battle-for-wesnoth-server") (inputs `(("boost" ,boost) ("icu4c" ,icu4c) @@ -2151,6 +2242,9 @@ (define-public wesnoth-server (description "This package contains a dedicated server for @emph{The Battle for Wesnoth}."))) +(define-public wesnoth-server + (deprecated-package "wesnoth-server" the-battle-for-wesnoth-server)) + (define-public gamine (package (name "gamine") @@ -2599,12 +2693,13 @@ (define-public openrct2 (version "0.2.2") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/OpenRCT2/OpenRCT2/archive/v" - version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/OpenRCT2/OpenRCT2.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 "0yxaphgfq85piaacnnfy6lrvmnqmfj1891rxlkl5ndngq0zh0ysb")) - (file-name (string-append name "-" version ".tar.gz")))) + (base32 "1bfqmb6cbmsjcvj77vppy5lw1m4lkvxd1w3f218ah4788xnkysq2")))) (build-system cmake-build-system) (arguments `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF" @@ -2785,7 +2880,6 @@ (define-public powwow (uri (string-append "https://www.hoopajoo.net/static/projects/powwow-" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 "1gf0jc1vfv05lxij51n3c1dqn3aiiy2kj1v6q14an3wm7yl7cllp")))) @@ -2805,58 +2899,59 @@ (define-public red-eclipse (let ((release "1.6.0") (revision 0) (data-sources - '(("acerspyro" "07mzgdahnr3w3w7kf8nmy20r199rimfx9ryqxjdr793sw0vawqd3") - ("actors" "1hkgscfhg0kmwgym0mw56fhcckzbb2hh3nsvd45v4mdfyk0xnrm7") - ("appleflap" "1q4xs3x904mrrbxzv6lpr3lywm8p6i8339ijzy9j091s2wdl51ka") - ("blendbrush" "004md2haysr9w8fj6l7bj9wcfjqrq9wx1rrjf9dv16k5sbrkqza9") - ("caustics" "1qmmv8ds70j1ixy4rvli309vbcyjq1l5j1wri6nbnjay10f9fcgq") - ("crosshairs" "0q1vadg5cai9i6igl6y08774fd05gav0kinbgb2757n47ig50bns") - ("dziq" "1s9248ky2qqy24z9c2vgpisz500dvsaj249pv1fkrxgsypjm1z6v") - ("elyvisions" "15synpms05996v4c4kdl0h899spl4z7si9kl8c4m7rvc2yvin1ga") - ("fonts" "1l4727ai8mphi7n3wcjp2lh3p47nh6w82s5dpqbbjpqr9gilb69j") - ("freezurbern" "0hcdbzs02mvpsfhmahhqjv6pd8lbsag1bm6rpy61ns5qwmhg96ys") - ("john" "1whyvlx87mb83kfb7jhhnwz9s7lry4li8l3xar61vmlqgmsnz33d") - ("jojo" "02wxa93f5al4rlnsdjpd0hlnca0ympnj8481lgdxx70hny8zi3qi") - ("jwin" "1gb4l7lbhr150hml1y0wbyx7266q5nslh6n494wwrrsvp11s2qk8") - ("luckystrike" "0wy2spvhx5k233fsl283250ym5bqvkk8i6i19sw3zvzyxp2p4yq9") - ("maps" "1dmvp9mskval606z5srjd909jpm6qz4fdcpaszkkhfr5ajbj30vq") - ("mayhem" "0hkzzx0rxda70ixw9lfh9v1dpsbn2dj86jrr3zxjgasbgaxw37ax") - ("mikeplus64" "144fxhp4qjqjw3gvhf7ym6rnfxvxc0zvd3f54jg1jgnccc1hfyah") - ("misc" "0bpvibyc6vjhbzsf67xxn85yq2h97xs96icbskwzs2wsd860kq8c") - ("nieb" "0d72wsibk9sg9nhin3fwzz9zljiccyln0fn42y2q2xbd4my23b1k") - ("nobiax" "19lr36ys98cmpp739svjar1j942fbxz6r062gi7ygh89zh9yrgfy") - ("particles" "02pnq8ksl7f6kqxss3aza98jssdq2s41rhkhki71ynavp2a5akar") - ("philipk" "1xkrb7wa1pyhbs4xxx7vnnzsxrqzswk7gjbdac7i7rj0lwnfaij2") - ("projectiles" "1hra0f1ifiddh16fv4pqcr2amf046lf445v0653zkyri43zgrj5f") - ("props" "0ff6a8pz62f4nsk4c9cr50kirw108a661y5j6fvlsjickw3xjmyv") - ("skyboxes" "1lq58dhrdiivq7llkiyqwpi3bwa89r8hbi98p7zjhw7wdn34i6n2") - ("snipergoth" "0d5qf01bxd4dlffgxf8i91zq6mbyjmfd00dpyligpfj6fdbz87gc") - ("sounds" "0z6jmxsr3w735hrdnxypdb0gi399pwkaycv9grjpiqy43j3ic7gj") - ("textures" "0k5a47g2z99xn17vw7bqbp0w726gxmk33g5gwmqvfhxxxzzwimvi") - ("torley" "12x23l8xcv9ard5v76lb210lvp66whsns2p3k3xkd1sabp5ixbd5") - ("trak" "03kmwj47yb3dqzb6k9kilna9ja8c6jcnblvbs72x15767fl496pb") - ("ulukai" "0vvd016a7x981ixif6dnlg45s0ak7i89pgyrgwy2fpd94nl2am15") - ("unnamed" "18sxvdha41njp6g8wn56mjy6w9x778c793gh8fr0h9cnysb5gfmi") - ("vanities" "1p38mc2566bmb4vdyr9n9s6fkwmynp2xlpdq2a97gzgi4nmm0232") - ("vegetation" "0pf3qvqzabdcri5za61z6m89b5hq7sd3q0idkazmx88a62mcclkb") - ("weapons" "1jr05y9qhhx53plvir35srvv3cmn6wa065p3bskx6h1x6dcbx3c6") - ("wicked" "14b9f92h8hccp7a015z6rqgbs8236sdyxnwsq991ylnap7cbwvam")))) + '(("acerspyro" "12b0bngl7hlxw4iwdbn99jp081yl6z1ic0s788nm349drbr2pck8") + ("actors" "0x7qqx67679q6ark9zz02skwhzgabid69kwi6zmhfpfgicn4927r") + ("appleflap" "08xslwqfqz3j4m03pv5ry2gdzj5k2ns51z8n6sln3sa94i9x8qkm") + ("blendbrush" "18zf5i2ax4p14x4c9nhk9fq6l1xgbxw62gm72vx59vbfdpjrw3cg") + ("caustics" "172fxwx7kbz5nmbjq98kr52ips505wb99fibgnpg8cj02syrya8k") + ("crosshairs" "14w8ysqzdsx9bzpfbl700jzngbh14rdghhjdf6zd6jlkvrl6754r") + ("dziq" "056imqszvp90j7cgz52ly0f31px64gsrmvm9k2c78ldbx87jnhc3") + ("elyvisions" "1bsgr0gr7njydj8fqclh0a27lrsyic3xfd5a4vwggw7g54azpgk2") + ("fonts" "00ibisza1qci0ghf2rynyf28l6r3nqhfzjf80k6gg76q4v7p1myx") + ("freezurbern" "07l9ldk9b82f12c13wcg5xxdf15bw0yjxk3vvk8v3ygrl2mwksyr") + ("john" "1jdmwkrdi5b9pivkm22rxhmkk1db9dx6l54wzcc23cvdz04ij93k") + ("jojo" "0f7kjy43fbk9kw8fip6bbw4gn3pryh0fndlahjfkaysrx98krdj3") + ("jwin" "0nc8dndnpqk2ad6316a8k6kgzsrkpwvk8s4gyh7aqfi4axfclril") + ("luckystrike" "04jiipqahphmvz5cd74dygr62dlvv6l4iglb8hzh4pp8frhls8bq") + ("maps" "0an46ipjvw4h0nxvb6qvnzp1cdkzlkiinqz4zh9lmxy1ds0gclim") + ("mayhem" "15k10imm2wr6c6fq35n4r99k7kz7n9zdnjlw6dmdq6fba67i6sbc") + ("mikeplus64" "0v4wiiivm3829j4phlavy22n4c6k6ib9ixxpdz7r6ysg5cdkaw33") + ("misc" "13rfgwrlfhflz6inbkg3fypyf8im0m49sw112b17qrw2zgp8i1rz") + ("nieb" "0z0h9jdn2gkkjil3vsvwidb1p2k09pi5n3wjxza12hhvqmcs7q8f") + ("nobiax" "08bfp4q6gbfis18bp1h4d0hqssk79jc4fhyjxnv21dbam4v4mnkn") + ("particles" "1vsx3fgg19xggxfhz3vlrh6nqhmw7kl9kmxrvb2j84blp00vd6z2") + ("philipk" "14irscg80607i5k5l2ci0n9nwibvda2f3xsykgv96d0vldrp5n5a") + ("projectiles" "09bnfsrywirwgjm6d7ff5nicx6w6b7w9568x9pb5q0ncaps3l85s") + ("props" "1dlabbprlkif8af3daf9nbgcwgxiymvj0yiphqhlri8ylfy2vpz4") + ("skyboxes" "14bi3md5y47cvb9ybipdvksz40gqsqw2r0lh3zzqb4acq367w18y") + ("snipergoth" "0m8rvvy5n8n9pm0b5cqvzsxsw51mqk8m7s1h3qc849b38isliwq2") + ("sounds" "0ivf3w5bphz5pzzx6kwcb67vbly1l19cgv3s0cyp8n87afiqj5rd") + ("textures" "0qdmgx7zbcqnb9rrga2izr93p5inirczhddfxs504rsnv0v8vyxm") + ("torley" "05ppyhghq859cbbxzj3dnl9fcx3ghy04ds1pylypwg2hsxzbjwcd") + ("trak" "0g3vq86q91a3syli38lwc8ca4ychfwsmmqf85kqzfzyd627ybclm") + ("ulukai" "0asa5fz400impklcg6dy2f7jiaqfc1sn1c36fpg8jd01gw66lw93") + ("unnamed" "0rz5683j7sfwkcycfypbv4b0ihp0qwn9rzskfsabwc1s5g324917") + ("vanities" "13f18783rc8cjf22p61zr8m5g1migzlx05fzl8xnbjdkqq4cdyix") + ("vegetation" "1y5d97nfmvax7y4fr0y5v0c8zb1ajkqwx76kjd4qc9n4spdsi5sc") + ("weapons" "103g1dhxv5ffz4ddg2xcbshbgv9606chsbas3pzk6h9ybqsyjrqh") + ("wicked" "1884rk34a2dj83gz82rc4zh3ch0dyj5221hvsr0a5h60578i7yj6")))) (package (name "red-eclipse") (version (if (zero? revision) release (string-append release "-" (number->string revision)))) - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/red-eclipse/base" - "/archive/v" release ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1vs9k6f5fgsiy1n72imlqm8khjwm8cryc08zwd4gr7yxlxv45bs0")) - (patches - (search-patches "red-eclipse-remove-gamma-name-hack.patch")))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/red-eclipse/base.git") + (commit (string-append "v" release)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qy9kmq21wc4bdhwifasxc5dv1y5c53sn7dfmyc5y3zyz8wjyij4")) + (patches + (search-patches "red-eclipse-remove-gamma-name-hack.patch")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no check target @@ -2871,15 +2966,10 @@ (define-public red-eclipse (lambda* (#:key inputs #:allow-other-keys) (delete-file-recursively "data") (mkdir "data") - (for-each (lambda (name) - (invoke "tar" "-xvf" - (assoc-ref inputs name) - "-Cdata" - "--transform" - (string-append "s/" - name "-" ,release "/" - name "/"))) - (list ,@(map car data-sources))) + (with-directory-excursion "data" + (for-each (lambda (name) + (copy-recursively (assoc-ref inputs name) name)) + (list ,@(map car data-sources)))) #t)) (add-after 'unpack-data 'add-store-data-package-path-as-default (lambda* (#:key outputs #:allow-other-keys) @@ -2951,7 +3041,8 @@ (define-public red-eclipse (chmod "redeclipse_linux" #o555) (chmod "redeclipse_server_linux" #o555))) #t))))) - (native-inputs `(("pkg-config" ,pkg-config))) + (native-inputs + `(("pkg-config" ,pkg-config))) (inputs `(("curl" ,curl) ("glu" ,glu) @@ -2963,13 +3054,14 @@ (define-public red-eclipse ((name hash) (list name (origin - (method url-fetch) - (uri (string-append - "https://github.com/red-eclipse/" - name "/archive/v" release ".tar.gz")) + (method git-fetch) + (uri + (git-reference + (url (string-append "https://github.com/" + "red-eclipse/" name ".git")) + (commit (string-append "v" release)))) (sha256 (base32 hash)) - (file-name (string-append name "-" version - ".tar.gz")))))) + (file-name (git-file-name name version)))))) data-sources))) (home-page "http://redeclipse.net/") (synopsis "Arena shooter derived from the Cube 2 engine") @@ -2991,7 +3083,7 @@ (define-public grue-hunter (version "1.0") (source (origin (method url-fetch) - (uri (string-append "https://jxself.org/" name ".tar.gz")) + (uri (string-append "https://jxself.org/grue-hunter.tar.gz")) (sha256 (base32 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3")))) @@ -3108,14 +3200,15 @@ (define-public warzone2100 (package (name "warzone2100") (version "3.2.3") - (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/" name - "/releases/" version "/" name "-" version - ".tar.xz")) - (sha256 - (base32 - "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw")))) + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/warzone2100/archives/" + "unsupported/Warzone2100-" + (version-major+minor version) "/" version + "/warzone2100-" version ".tar.xz")) + (sha256 + (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-distributor=Guix") @@ -3167,16 +3260,16 @@ (define-public warzone2100 license:gpl2+ license:lgpl2.1+)))) -(define-public starfighter +(define-public project-starfighter (package - (name "starfighter") + (name "project-starfighter") (version "1.7") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/starfighter/" (version-major+minor version) "/" - name "-" version "-src.tar.gz")) + "starfighter-" version "-src.tar.gz")) (sha256 (base32 "1646hpjq8bz2fkfkja1dah511hn7zd2r7da4w9c9blhad3p5732v")))) @@ -3202,15 +3295,18 @@ (define-public starfighter license:cc0 license:public-domain)))) +(define-public starfighter + (deprecated-package "starfighter" project-starfighter)) + (define-public chromium-bsu (package (name "chromium-bsu") (version "0.9.16.1") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/" name + (uri (string-append "mirror://sourceforge/chromium-bsu" "/Chromium B.S.U. source code/" - name "-" version ".tar.gz")) + "chromium-bsu-" version ".tar.gz")) (sha256 (base32 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1")))) @@ -3481,7 +3577,7 @@ (define-public laby (origin (method url-fetch) (uri (string-append "https://github.com/sgimenez/laby/archive/" - name "-" version ".tar.gz")) + "laby-" version ".tar.gz")) (sha256 (base32 "0gyrfa95l1qka7gbjf7l6mk7mbfvph00l0c995ia272qdw7rjhyf")) @@ -3564,7 +3660,7 @@ (define-public mrrescue (method url-fetch) (uri (string-append "https://github.com/SimonLarsen/mrrescue/releases/" - "download/" version "/" name version ".love")) + "download/" version "/mrrescue" version ".love")) (file-name (string-append name "-" version ".love")) (sha256 (base32 @@ -3633,8 +3729,8 @@ (define-public hyperrogue (source (origin (method url-fetch) (uri (string-append - "https://www.roguetemple.com/z/hyper/" - name (string-join (string-split version #\.) "") + "https://www.roguetemple.com/z/hyper/hyperrogue" + (string-join (string-split version #\.) "") "-src.tgz")) (sha256 (base32 @@ -3710,7 +3806,7 @@ (define-public hyperrogue (method url-fetch) (uri (string-append - "https://www.roguetemple.com/z/hyper/" name + "https://www.roguetemple.com/z/hyper/hyperrogue" (string-join (string-split version #\.) "") "-win.zip")) (sha256 @@ -3818,13 +3914,13 @@ (define-public no-more-secrets (version "0.3.3") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/bartobri/no-more-secrets/" - "archive/v" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/bartobri/no-more-secrets.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "1kpx1rirc3i7fb4lymp0hx5rqr0s2ay4za261rw3bcy6d23l1kyg")))) + (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h")))) (build-system gnu-build-system) (arguments `(#:tests? #f @@ -4023,9 +4119,9 @@ (define-public cdogs-sdl license:cc-by3.0 license:cc-by-sa3.0)))) -(define-public kiki +(define-public kiki-the-nano-bot (package - (name "kiki") + (name "kiki-the-nano-bot") (version "1.0.2") (source (origin (method url-fetch) @@ -4119,6 +4215,9 @@ (define-public kiki ;; for a statement from the author. (license license:public-domain))) +(define-public kiki + (deprecated-package "kiki" kiki-the-nano-bot)) + (define-public teeworlds (package (name "teeworlds") @@ -4339,9 +4438,9 @@ (define-public chroma becoming difficult enough to tax even the brightest of minds.") (license license:gpl2+))) -(define-public fillets-ng +(define-public fish-fillets-ng (package - (name "fillets-ng") + (name "fish-fillets-ng") (version "1.0.1") (source (origin (method url-fetch) @@ -4408,9 +4507,12 @@ (define-public fillets-ng fish. The whole game is accompanied by quiet, comforting music.") (license license:gpl2+))) -(define-public crawl +(define-public fillets-ng + (deprecated-package "fillets-ng" fish-fillets-ng)) + +(define-public dungeon-crawl-stone-soup (package - (name "crawl") + (name "dungeon-crawl-stone-soup") (version "0.23.1") (source (origin @@ -4476,9 +4578,9 @@ (define-public crawl ;; Force command line build for test cases. (append make-flags '("GAME=crawl" "TILES=")))))))) (synopsis "Roguelike dungeon crawler game") - (description "Dungeon Crawl Stone Soup is a roguelike adventure through -dungeons filled with dangerous monsters in a quest to find the mystifyingly -fabulous Orb of Zot.") + (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS +for short) is a roguelike adventure through dungeons filled with dangerous +monsters in a quest to find the mystifyingly fabulous Orb of Zot.") (home-page "https://crawl.develz.org") (license (list license:gpl2+ license:bsd-2 @@ -4488,13 +4590,16 @@ (define-public crawl license:zlib license:asl2.0)))) +(define-public crawl + (deprecated-package "crawl" dungeon-crawl-stone-soup)) + ;; The linter here claims that patch file names should start with the package ;; name. But, in this case, the patches are inherited from crawl with the ;; "crawl-" prefix instead of "crawl-tiles-". -(define-public crawl-tiles +(define-public dungeon-crawl-stone-soup-tiles (package - (inherit crawl) - (name "crawl-tiles") + (inherit dungeon-crawl-stone-soup) + (name "dungeon-crawl-stone-soup-tiles") (arguments (substitute-keyword-arguments (package-arguments crawl) @@ -4524,6 +4629,9 @@ (define-public crawl-tiles ("which" ,which))) (synopsis "Graphical roguelike dungeon crawler game"))) +(define-public crawl-tiles + (deprecated-package "crawl-tiles" dungeon-crawl-stone-soup-tiles)) + (define-public lugaru (package (name "lugaru") @@ -4531,7 +4639,7 @@ (define-public lugaru (source (origin (method url-fetch) (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/" - name "-" version ".tar.xz")) + "lugaru-" version ".tar.xz")) (sha256 (base32 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk")))) @@ -4682,11 +4790,11 @@ (define-public 0ad (setenv "JOBS" (string-append "-j" jobs)) (setenv "CC" "gcc") (with-directory-excursion "build/workspaces" - (zero? (system* "./update-workspaces.sh" - (string-append "--libdir=" lib) - (string-append "--datadir=" data) - ;; TODO: "--with-system-nvtt" - "--with-system-mozjs38")))))) + (invoke "./update-workspaces.sh" + (string-append "--libdir=" lib) + (string-append "--datadir=" data) + ;; TODO: "--with-system-nvtt" + "--with-system-mozjs38"))))) (delete 'check) (replace 'install (lambda* (#:key inputs outputs #:allow-other-keys) @@ -4720,7 +4828,7 @@ (define-public 0ad (add-after 'install 'check (lambda _ (with-directory-excursion "system" - (zero? (system* "./test")))))))) + (invoke "./test"))))))) (home-page "https://play0ad.com") (synopsis "3D real-time strategy game of ancient warfare") (description "0 A.D. is a real-time strategy (RTS) game of ancient @@ -4782,7 +4890,7 @@ (define-public open-adventure (substitute* "Makefile" ((".adoc.6:" line) (string-append line " advent.adoc"))) - (zero? (system* "make" ".adoc.6")))) + (invoke "make" ".adoc.6"))) ;; There is no install target (replace 'install (lambda* (#:key outputs #:allow-other-keys) @@ -4806,9 +4914,9 @@ (define-public open-adventure \"adventure 2.5\" and \"430-point adventure\".") (license license:bsd-2)))) -(define-public tome4 +(define-public tales-of-maj-eyal (package - (name "tome4") + (name "tales-of-maj-eyal") (version "1.5.10") (synopsis "Single-player, RPG roguelike game set in the world of Eyal") (source @@ -4929,6 +5037,9 @@ (define-public tome4 Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.") (license license:gpl3+))) +(define-public tome4 + (deprecated-package "tome4" tales-of-maj-eyal)) + (define-public quakespasm (package (name "quakespasm") @@ -5311,22 +5422,22 @@ (define-public colobot (define-public gzdoom (package (name "gzdoom") - (version "3.3.0") + (version "3.7.2") (source (origin (method url-fetch) (uri - (string-append "https://zdoom.org/files/gzdoom/src/gzdoom-g" + (string-append "https://zdoom.org/files/gzdoom/src/gzdoom-src-g" version ".zip")) (sha256 (base32 - "09a4kx3ry8pc9r578m7yprwa7zsdqxjpn10lyc92r5g9sx4l1m1a")) + "0182f160m8d0c3nywjw3dxvnz93xjs4cn8akx7137cha4s05wdq7")) (patches (search-patches "gzdoom-search-in-installed-share.patch")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "bzip2") (delete-file-recursively "game-music-emu") - (delete-file-recursively "jpeg-6b") + (delete-file-recursively "jpeg") (delete-file-recursively "zlib") #t)))) (arguments @@ -5390,6 +5501,8 @@ (define-public gzdoom and the new ZScript language. In addition to Doom, it supports Heretic, Hexen, Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.") (home-page "https://zdoom.org/index") + ;; The source uses x86 assembly + (supported-systems '("x86_64-linux" "i686-linux")) (license (list license:gpl3+ ; gzdoom game license:lgpl3+ ; gzdoom renderer license:expat ; gdtoa @@ -5397,6 +5510,34 @@ (define-public gzdoom "file://dumb/licence.txt" "Dumb license, explicitly GPL compatible."))))) +(define-public odamex + (package + (name "odamex") + (version "0.8.0") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/odamex/Odamex/" version "/" + "odamex-src-" version ".tar.gz")) + (sha256 + (base32 + "1sh6lqj7vsdmnqz17hw0b6vy7xx6dp41k2sdw99ympsfa2xd1d2j")))) + (build-system cmake-build-system) + (arguments `(#:tests? #f)) ; no tests. + (inputs + `(("sdl" ,sdl) + ("sdl-mixer" ,sdl-mixer) + ("zlib" ,zlib) + ("libpng" ,libpng) + ("alsa-lib" ,alsa-lib))) + (home-page "https://odamex.net/") + (synopsis "Multiplayer Doom port") + (description "Odamex is a modification of the Doom engine that +allows players to easily join servers dedicated to playing Doom +online.") + (license license:gpl2+))) + (define-public fortune-mod (package (name "fortune-mod") @@ -5406,7 +5547,7 @@ (define-public fortune-mod (method git-fetch) (uri (git-reference (url "https://github.com/shlomif/fortune-mod") - (commit (string-append name "-" version)))) + (commit (string-append "fortune-mod-" version)))) (file-name (git-file-name name version)) (sha256 (base32 @@ -5715,10 +5856,10 @@ (define-public frotz (method url-fetch) (uri (list (string-append "http://www.ifarchive.org/if-archive/infocom/interpreters/" - name "/" name "-" version ".tar.gz") + "frotz/frotz-" version ".tar.gz") (string-append "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/" - name "/" name "-" version ".tar.gz"))) + "frotz/frotz-" version ".tar.gz"))) (sha256 (base32 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k")))) @@ -5764,10 +5905,10 @@ (define-public frotz-dumb-terminal (method url-fetch) (uri (list (string-append "http://www.ifarchive.org/if-archive/infocom/interpreters/" - "frotz" "/" "frotz" "-" version ".tar.gz") + "frotz/frotz-" version ".tar.gz") (string-append "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/" - "frotz" "/" "frotz" "-" version ".tar.gz"))) + "frotz/frotz-" version ".tar.gz"))) (sha256 (base32 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k")))) @@ -5869,9 +6010,9 @@ (define-public libmanette (version "0.2.2") (source (origin (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" + (uri (string-append "mirror://gnome/sources/libmanette/" (version-major+minor version) "/" - name "-" version ".tar.xz")) + "libmanette-" version ".tar.xz")) (sha256 (base32 "1lpprk2qz1lsqf9xj6kj2ciyc1zmjhj5lwd584qkh7jgz2x9y6wb")))) @@ -5898,9 +6039,9 @@ (define-public quadrapassel (version "3.31.3") (source (origin (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" + (uri (string-append "mirror://gnome/sources/quadrapassel/" (version-major+minor version) "/" - name "-" version ".tar.xz")) + "quadrapassel-" version ".tar.xz")) (sha256 (base32 "08i01nsgfb502xzzrrcxxbs7awb0j1h4c08vmj0j18ipa1sz8vb8")))) @@ -6041,6 +6182,22 @@ (define-public stepmania "/lib/glib-2.0/include")) #:phases (modify-phases %standard-phases + (add-after 'unpack 'ensure-application-files-can-be-found + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp" + (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"") + (string-append "\"" out + "/share/stepmania/GtkModule.so\""))) + (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp" + (("Root = sDirOfExecutable") + (string-append "Root = \"" out "/share/stepmania/\"")) + (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir) + (string-append "\"" out "/share/stepmania/" dir "\""))) + (substitute* "src/RageFileManager.cpp" + (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"") + (string-append "\"" out "/share/stepmania/\"")))) + #t)) (add-after 'unpack 'fix-install-subdir ;; Installation would be done in "%out/stepmania-X.Y", but we ;; prefer the more common layout "%out/share/stepmania". @@ -6120,9 +6277,9 @@ (define-public stepmania (home-page "https://www.stepmania.com") (license license:expat))) -(define-public btanks +(define-public battle-tanks (package - (name "btanks") + (name "battle-tanks") (version "0.9.8083") (source (origin @@ -6196,15 +6353,19 @@ (define-public btanks ("zip" ,zip))) (home-page "http://btanks.sourceforge.net") (synopsis "Multiplayer tank battle game") - (description "Battle Tanks is a funny battle game, where you can choose -one of three vehicles and eliminate your enemy using the whole arsenal of -weapons. It has original cartoon-like graphics and cool music, it’s fun and -dynamic, it has several network modes for deathmatch and cooperative.") + (description "Battle Tanks (also known as \"btanks\") is a funny battle +game, where you can choose one of three vehicles and eliminate your enemy +using the whole arsenal of weapons. It has original cartoon-like graphics and +cool music, it’s fun and dynamic, it has several network modes for deathmatch +and cooperative.") ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is ;; released under GPLv2 or later. It comes with extra exceptions for the ;; developers. (license (list license:gpl2+ license:lgpl2.1+)))) +(define-public btanks + (deprecated-package "btanks" battle-tanks)) + (define-public slingshot (package (name "slingshot") @@ -6359,9 +6520,9 @@ (define-public arx-libertatis the desired spell.") (license license:gpl3+))) -(define-public edgar +(define-public the-legend-of-edgar (package - (name "edgar") + (name "the-legend-of-edgar") (version "1.30") (source (origin @@ -6405,3 +6566,186 @@ (define-public edgar a fortress beyond the forbidden swamp.") (home-page "https://www.parallelrealities.co.uk/games/edgar/") (license license:gpl2+))) + +(define-public edgar + (deprecated-package "edgar" the-legend-of-edgar)) + +(define-public openclonk + (package + (name "openclonk") + (version "8.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://www.openclonk.org/builds/release/" version "/" + "openclonk-" version "-src.tar.bz2")) + (sha256 + (base32 + "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags '("-DAudio_TK=OpenAL") + #:test-target "tests" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'prepare-gmock + (lambda* (#:key inputs #:allow-other-keys) + (mkdir "gmock") + (copy-recursively (assoc-ref inputs "googlemock") "gmock") + (substitute* "tests/CMakeLists.txt" + (("/usr/src/gmock") + (string-append (getcwd) "/gmock/googlemock")) + (("/usr/src/gtest") + (string-append (getcwd) "/gmock/googletest")) + (("PATH_SUFFIXES \"src\" \"gtest\"") + "PATH_SUFFIXES \"src\"")) + #t)) + (add-after 'unpack 'add-libiberty + ;; Build fails upon linking executables without this. + (lambda _ + (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake" + (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries) + (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)"))) + #t)) + (add-after 'add-libiberty 'lax-freealut-requirement + ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects + ;; it as 1.0.1. Force minimal version. + (lambda _ + (substitute* "cmake/FindAudio.cmake" + (("freealut>=1.1.0") "freealut>=1.0.1")) + #t)) + (add-after 'lax-freealut-requirement 'fix-directories + ;; Prefer "$out/share/openclonk" over + ;; "$out/share/games/openclonk". Also install "openclonk" + ;; binary in "bin/", not "games/". + (lambda _ + (substitute* "CMakeLists.txt" + (("share/games/openclonk") "share/openclonk") + (("TARGETS openclonk DESTINATION games") + "TARGETS openclonk DESTINATION bin")) + #t))))) + (native-inputs + `(("googlemock" ,(package-source googletest)) + ("googletest" ,googletest) + ("pkg-config" ,pkg-config))) + (inputs + `(("freealut" ,freealut) + ("freetype" ,freetype) + ("glew" ,glew) + ("libiberty" ,libiberty) + ("libjpeg" ,libjpeg-turbo) + ("libogg" ,libogg) + ("libpng" ,libpng) + ("libvorbis" ,libvorbis) + ("libxrandr" ,libxrandr) + ("mesa" ,mesa) + ("miniupnpc" ,miniupnpc) + ("openal" ,openal) + ("qtbase" ,qtbase) + ("readline" ,readline) + ("sdl" ,sdl2) + ("tinyxml" ,tinyxml) + ("zlib" ,zlib))) + (home-page "https://www.openclonk.org/") + (synopsis + "Multiplayer action game where you control small and nimble humanoids") + (description "OpenClonk is a multiplayer action/tactics/skill game. It is +often referred to as a mixture of The Settlers and Worms. In a simple 2D +antfarm-style landscape, the player controls his crew of Clonks, small but +robust humanoid beings. The game encourages free play but the normal goal is +to either exploit valuable resources from the earth by building a mine or +fight each other on an arena-like map.") + ;; Software as a whole is licensed under ISC, artwork under CC-BY. + (license (list license:isc license:cc-by3.0)))) + +(define-public flare-engine + (package + (name "flare-engine") + (version "1.09.01") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/flareteam/flare-engine.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1117nxir0zwz4pipx7sxj64p68ig6gbz94lkkjbgrk44lhs0hz8p")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ;no test + #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare"))) + (inputs + `(("hicolor-icon-theme" ,hicolor-icon-theme) + ("python" ,python-wrapper) + ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf))))) + (home-page "http://www.flarerpg.org/") + (synopsis "Action Roleplaying Engine") + (description "Flare (Free Libre Action Roleplaying Engine) is a simple +game engine built to handle a very specific kind of game: single-player 2D +action RPGs.") + (license license:gpl3+))) + +(define-public flare-game + (package + (name "flare-game") + (version "1.09.01") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/flareteam/flare-game.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1hn2cchqsbvvgzqc6zvblnl3qrr6sp5rqxpsrcvdmbjm7b37x37b")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ;no test + #:configure-flags '("-DDATADIR=share/flare") + #:phases + (modify-phases %standard-phases + ;; Flare expects the mods to be located in the same folder. + ;; Yet, "default" mod is in the engine, whereas the others + ;; are in the current package. Merge everything here with + ;; a symlink. + (add-after 'install 'add-default-mod + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (mods (string-append out "/share/flare/mods"))) + (with-directory-excursion mods + (symlink (string-append (assoc-ref inputs "flare-engine") + "/share/flare/mods/default") + "default"))) + #t)) + (add-after 'install 'install-executable + ;; The package only provides assets for the game, the + ;; executable coming from "flare-engine". Since more than + ;; one game may use the engine, we create a new executable, + ;; "flare-game", which launches the engine with appropriate + ;; parameters. + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (string-append (assoc-ref inputs "bash") + "/bin/bash")) + (flare (string-append (assoc-ref inputs "flare-engine") + "/bin/flare")) + (script (string-append out "/bin/flare-game"))) + (mkdir-p (dirname script)) + (call-with-output-file script + (lambda (port) + (format port + "#!~a +exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%" + bash + flare + out))) + (chmod script #o755)) + #t))))) + (inputs + `(("flare-engine" ,flare-engine))) + (home-page "http://www.flarerpg.org/") + (synopsis "Fantasy action RPG using the FLARE engine") + (description "Flare is a single-player 2D action RPG with +fast-paced action and a dark fantasy style.") + (license license:cc-by-sa3.0))) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index 7ee267c9e2..7b4ce685f7 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -120,7 +120,7 @@ (define-public freeglut "Freeglut is a completely Free/OpenSourced alternative to the OpenGL Utility Toolkit (GLUT) library. GLUT was originally written by Mark Kilgard to support the sample programs in the -second edition OpenGL 'RedBook'. Since then, GLUT has been used +second edition OpenGL @code{RedBook}. Since then, GLUT has been used in a wide variety of practical applications because it is simple, widely available and highly portable. diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index cd31dbb5a8..0fa8141fdd 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -392,7 +392,7 @@ (define-public libgdata ("libsoup" ,libsoup))) (propagated-inputs `(("gcr" ,gcr) - ("gnome-online-accounts" ,gnome-online-accounts) + ("gnome-online-accounts:lib" ,gnome-online-accounts "lib") ("liboauth" ,liboauth) ("libxml2" ,libxml2))) (home-page "https://wiki.gnome.org/Projects/libgdata") @@ -5064,7 +5064,23 @@ (define-public gnome-online-accounts (sha256 (base32 "035lmm21imr7ddpzffqabv53g3ggjscmqvlzy3j1qkv00zrlxg47")))) + (outputs '("out" "lib")) (build-system glib-or-gtk-build-system) + (arguments + `(#:configure-flags + (list (string-append "--libdir=" (assoc-ref %outputs "out") "/lib")) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-libgoa-output + (lambda* (#:key outputs #:allow-other-keys) + (let ((lib (assoc-ref outputs "lib"))) + (substitute* '("src/goa/Makefile.in" "src/goa/goa-1.0.pc.in") + (("@prefix@") lib) + (("@exec_prefix@") lib) + (("@libdir@") (string-append lib "/lib")) + (("@includedir@") (string-append lib "/include")) + (("@datadir@") (string-append lib "/share"))) + #t)))))) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. ("gobject-introspection" ,gobject-introspection) @@ -5101,6 +5117,7 @@ (define-public evolution-data-server (sha256 (base32 "11sq795115vrcgxl9svscm6wg8isjj784c3d84qzb6z47zq92zj3")))) + (outputs '("out" "libedataserverui")) (build-system cmake-build-system) (arguments '(;; XXX FIXME: 11/85 tests are failing. @@ -5141,7 +5158,40 @@ (define-public evolution-data-server ;; CMakeLists.txt hard-codes runpath to just the libdir. ;; Remove it so the configure flag is respected. (("SET\\(CMAKE_INSTALL_RPATH .*") "")) - #t))))) + #t)) + (add-before 'configure 'factor-webkit + (lambda _ + (substitute* "CMakeLists.txt" + (("webkit2gtk-4\\.0>=\\$[{]webkit2gtk_minimum_version[}]") "") + (("if[(]ENABLE_OAUTH2[)]") + (string-append + "if(ENABLE_OAUTH2)\n" + "\tpkg_check_modules(OAUTH2_UI REQUIRED " + "webkit2gtk-4.0>=${webkit2gtk_minimum_version})"))) + (substitute* "src/libedataserverui/CMakeLists.txt" + (("\\$[{]OAUTH2_([A-Z_]+)[}]" all part) + (string-append all " ${OAUTH2_UI_" part "}"))))) + (add-after 'install 'split + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (libedsui (assoc-ref outputs "libedataserverui"))) + (for-each (lambda (file) + (mkdir-p (dirname (string-append libedsui file))) + (rename-file (string-append out file) + (string-append libedsui file))) + '("/lib/pkgconfig/libedataserverui-1.2.pc" + "/lib/libedataserverui-1.2.so" + "/lib/libedataserverui-1.2.so.2" + "/lib/libedataserverui-1.2.so.2.0.0" + "/lib/girepository-1.0/EDataServerUI-1.2.typelib" + "/include/evolution-data-server/libedataserverui" + "/share/gir-1.0/EDataServerUI-1.2.gir" + "/share/vala/vapi/libedataserverui-1.2.vapi" + "/share/vala/vapi/libedataserverui-1.2.deps")) + (substitute* (string-append libedsui "/lib/pkgconfig/" + "libedataserverui-1.2.pc") + ((out) libedsui)) + #t)))))) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc. ("gobject-introspection" ,gobject-introspection) @@ -5161,7 +5211,7 @@ (define-public evolution-data-server (inputs `(("bdb" ,bdb) ("gcr" ,gcr) - ("gnome-online-accounts" ,gnome-online-accounts) + ("gnome-online-accounts:lib" ,gnome-online-accounts "lib") ("json-glib" ,json-glib) ("libgweather" ,libgweather) ("mit-krb5" ,mit-krb5) @@ -5777,6 +5827,7 @@ (define-public gnome-control-center ("gnome-bluetooth" ,gnome-bluetooth) ("gnome-desktop" ,gnome-desktop) ("gnome-online-accounts" ,gnome-online-accounts) + ("gnome-online-accounts:lib" ,gnome-online-accounts "lib") ("gnome-settings-daemon" ,gnome-settings-daemon) ("grilo" ,grilo) ("ibus" ,ibus) @@ -5920,7 +5971,6 @@ (define-public gnome-shell ("gdm" ,gdm) ("gjs" ,gjs) ("gnome-bluetooth" ,gnome-bluetooth) - ("gnome-control-center" ,gnome-control-center) ("gnome-desktop" ,gnome-desktop) ("gnome-settings-daemon" ,gnome-settings-daemon) ("gst-plugins-base" ,gst-plugins-base) @@ -6487,7 +6537,7 @@ (define-public libzapojit ("intltool" ,intltool) ("pkg-config" ,pkg-config))) (inputs - `(("gnome-online-accounts" ,gnome-online-accounts) + `(("gnome-online-accounts:lib" ,gnome-online-accounts "lib") ("json-glib" ,json-glib) ("rest" ,rest))) (home-page "https://wiki.gnome.org/Projects/Zapojit") @@ -6560,9 +6610,10 @@ (define-public gnome-calendar ("pkg-config" ,pkg-config))) (inputs `(("evolution-data-server" ,evolution-data-server) - ("gnome-online-accounts" ,gnome-online-accounts) + ("gnome-online-accounts:lib" ,gnome-online-accounts "lib") ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) ("libdazzle" ,libdazzle) + ("libedataserverui" ,evolution-data-server "libedataserverui") ("libgweather" ,libgweather) ("geoclue" ,geoclue))) (home-page "https://wiki.gnome.org/Apps/Calendar") @@ -6610,11 +6661,12 @@ (define-public gnome-todo (inputs `(("rest" ,rest) ; For Todoist plugin ("json-glib" ,json-glib) ; For Todoist plugin + ("libedataserverui" ,evolution-data-server "libedataserverui") ("libical" ,libical) ("libpeas" ,libpeas) ("python-pygobject" ,python-pygobject) ("evolution-data-server" ,evolution-data-server) - ("gnome-online-accounts" ,gnome-online-accounts) + ("gnome-online-accounts:lib" ,gnome-online-accounts "lib") ("gsettings-desktop-schemas" ,gsettings-desktop-schemas))) (home-page "https://wiki.gnome.org/Apps/Todo") (synopsis "GNOME's ToDo Application") @@ -6943,7 +6995,7 @@ (define-public gfbgraph ("gobject-introspection" ,gobject-introspection))) (inputs `(("json-glib" ,json-glib) - ("gnome-online-accounts" ,gnome-online-accounts) + ("gnome-online-accounts:lib" ,gnome-online-accounts "lib") ("rest" ,rest))) (synopsis "GLib/GObject wrapper for the Facebook API") (description "This library allows you to use the Facebook API from @@ -7825,6 +7877,7 @@ (define-public evolution ("gtkspell3" ,gtkspell3) ("highlight" ,highlight) ("libcanberra" ,libcanberra) + ("libedataserverui" ,evolution-data-server "libedataserverui") ("libgweather" ,libgweather) ("libnotify" ,libnotify) ("libsoup" ,libsoup) diff --git a/gnu/packages/gnucash.scm b/gnu/packages/gnucash.scm index 2207dd3fae..5b4da97e5d 100644 --- a/gnu/packages/gnucash.scm +++ b/gnu/packages/gnucash.scm @@ -104,8 +104,7 @@ (define-public gnucash (add-after 'unpack 'unpack-gmock (lambda* (#:key inputs #:allow-other-keys) (mkdir "gmock") - (invoke "tar" "xf" (assoc-ref inputs "googlemock") - "-C" "gmock" "--strip-components=1") + (copy-recursively (assoc-ref inputs "googlemock") "gmock") (setenv "GMOCK_ROOT" (string-append (getcwd) "/gmock/googlemock")) #t)) (add-after 'unpack 'set-env-vars @@ -165,14 +164,14 @@ (define-public gnucash ,@(transitive-input-references 'inputs (map (lambda (l) - (assoc l (inputs))) + (assoc l (package-inputs this-package))) '("perl-finance-quote" "perl-date-manip")))) (list ,@(transitive-input-references 'inputs (map (lambda (l) - (assoc l (inputs))) + (assoc l (package-inputs this-package))) '("perl-finance-quote"))))))))) '("gnucash" "gnc-fq-check" diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 22ae435a83..0795be3619 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -224,14 +224,14 @@ (define-public npth (define-public gnupg (package (name "gnupg") - (version "2.2.14") + (version "2.2.15") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) (sha256 (base32 - "0yzqrg24j9fc4f8ss5pclyvg70a9z53sv89vl77xii8yvi3fvy8v")))) + "0m6lyphbb20i84isdxzfhcbzyc682hdrdv4aqkzmhrdksycf536b")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 4260dfc15d..c68809652b 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -578,7 +578,7 @@ (define* (computed-origin-method gexp-promise hash-algo hash #:system system #:guile-for-build guile))) -(define %icecat-version "60.6.0-guix1") +(define %icecat-version "60.6.1-guix1") ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat' @@ -600,7 +600,7 @@ (define icecat-source "firefox-" upstream-firefox-version ".source.tar.xz")) (sha256 (base32 - "1mc57dhwyjr6qjm3q617wvj306wi72548wjx7lz1dxkz6hndi03w")))) + "1x8419a1yg6igsq5ij3ymf1zmnb2wpm9dqcdfkv5wy43xgf7y0wl")))) (upstream-icecat-base-version "60.3.0") ; maybe older than base-version (upstream-icecat-gnu-version "1") diff --git a/gnu/packages/gpodder.scm b/gnu/packages/gpodder.scm index 5b872908a5..badb7f867f 100644 --- a/gnu/packages/gpodder.scm +++ b/gnu/packages/gpodder.scm @@ -18,15 +18,90 @@ (define-module (gnu packages gpodder) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix packages) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system cmake) #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages check) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages glib) + #:use-module (gnu packages gtk) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python-web) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt)) +(define-public gpodder + (package + (name "gpodder") + (version "3.10.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gpodder/gpodder.git") + (commit version))) + (sha256 + (base32 + "0sx9rj6dpvd2xz7lak2yi0zlgr3lp2ng1fw23s39la9ly4g1835j")) + (file-name (git-file-name name version)))) + (build-system python-build-system) + (native-inputs + `(("intltool" ,intltool))) + (inputs + `(("gtk+" ,gtk+) + ("python-pygobject" ,python-pygobject) + ("python-pycairo" ,python-pycairo) + ("python-dbus" ,python-dbus) + ("python-html5lib" ,python-html5lib) + ("python-mygpoclient" ,python-mygpoclient) + ("python-podcastparser" ,python-podcastparser) + ("xdg-utils" ,xdg-utils))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; Avoid needing xdg-utils as a propagated input. + (add-after 'unpack 'patch-xdg-open + (lambda* (#:key inputs #:allow-other-keys) + (let ((xdg-utils (assoc-ref inputs "xdg-utils"))) + (substitute* "src/gpodder/util.py" + (("xdg-open") (string-append xdg-utils "/bin/xdg-open"))) + #t))) + ;; 'msgmerge' introduces non-determinism by resetting the + ;; POT-Creation-Date in .po files. + (add-before 'install 'do-not-run-msgmerge + (lambda _ + (substitute* "makefile" + (("msgmerge") "true")) + #t)) + (add-before 'install 'make-po-files-writable + (lambda _ + (for-each + (lambda (f) + (chmod f #o664)) + (find-files "po")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (setenv "PREFIX" (assoc-ref outputs "out")) + (invoke "make" "install") + #t)) + (add-after 'install 'wrap-gpodder + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (gi-typelib-path (getenv "GI_TYPELIB_PATH"))) + (wrap-program (string-append out "/bin/gpodder") + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))) + #t)))))) + (home-page "https://gpodder.github.io") + (synopsis "Simple podcast client") + (description "gPodder is a podcatcher, i.e. an application that allows +podcast feeds (RSS, Atom, Youtube, Soundcloud, Vimeo and XSPF) to be +subscribed to, checks for new episodes and allows the podcast to be saved +locally for later listening.") + (license license:gpl3+))) + (define-public libmygpo-qt (package (name "libmygpo-qt") @@ -57,6 +132,36 @@ (define-public libmygpo-qt and track podcasts.") (license license:lgpl2.1+))) +(define-public python-mygpoclient + (package + (name "python-mygpoclient") + (version "1.8") + (source + (origin + (method url-fetch) + (uri (pypi-uri "mygpoclient" version)) + (sha256 + (base32 + "1fi5x6k1mngr0iviw2s4n1f3y2x7pwqy5ivkcrjdprzvwr37f0mh")))) + (build-system python-build-system) + (native-inputs + `(("python-coverage" ,python-coverage) + ("python-minimock" ,python-minimock) + ("python-nose" ,python-nose))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "make" "test")))))) + (home-page "https://mygpoclient.readthedocs.io") + (synopsis "Python library for the gPodder web service") + (description "@code{mygpoclient} provides an easy and structured way to +access the @url{https://gpodder.net} web services. In addition to +subscription list synchronization and storage, the API supports uploading and +downloading episode status changes.") + (license license:gpl3+))) + (define-public python-podcastparser (package (name "python-podcastparser") diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm index 7ed13d37c7..9dca2be98e 100644 --- a/gnu/packages/graph.scm +++ b/gnu/packages/graph.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2018 Joshua Sierles, Nextjournal ;;; Copyright © 2018 Tobias Geerinckx-Rice +;;; Copyright © 2019 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +23,8 @@ (define-module (gnu packages graph) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system python) #:use-module (guix build-system r) @@ -30,6 +33,7 @@ (define-module (gnu packages graph) #:use-module (gnu packages gcc) #:use-module (gnu packages bioconductor) #:use-module (gnu packages bioinformatics) + #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages cran) #:use-module (gnu packages graphviz) @@ -40,6 +44,7 @@ (define-module (gnu packages graph) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages statistics) + #:use-module (gnu packages swig) #:use-module (gnu packages time) #:use-module (gnu packages xml)) @@ -239,3 +244,140 @@ (define-public python-plotly (define-public python2-plotly (package-with-python2 python-plotly)) + +(define-public faiss + (package + (name "faiss") + (version "1.5.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/facebookresearch/faiss.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0pk15jfa775cy2pqmzq62nhd6zfjxmpvz5h731197c28aq3zw39w")) + (modules '((guix build utils))) + (snippet + '(begin + (substitute* "utils.cpp" + (("#include ") + "#ifdef __SSE__\n#include \n#endif")) + #t)))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list "-DBUILD_WITH_GPU=OFF" ; thanks, but no thanks, CUDA. + "-DBUILD_TUTORIAL=OFF") ; we don't need those + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'prepare-build + (lambda _ + (let ((features (list ,@(let ((system (or (%current-target-system) + (%current-system)))) + (cond + ((string-prefix? "x86_64" system) + '("-mavx" "-msse2" "-mpopcnt")) + ((string-prefix? "i686" system) + '("-msse2" "-mpopcnt")) + (else + '())))))) + (substitute* "CMakeLists.txt" + (("-m64") "") + (("-mpopcnt") "") ; only some architectures + (("-msse4") + (string-append + (string-join features) + " -I" (getcwd))) + ;; Build also the shared library + (("ARCHIVE DESTINATION lib") + "LIBRARY DESTINATION lib") + (("add_library.*" m) + "\ +add_library(objlib OBJECT ${faiss_cpu_headers} ${faiss_cpu_cpp}) +set_property(TARGET objlib PROPERTY POSITION_INDEPENDENT_CODE 1) +add_library(${faiss_lib}_static STATIC $) +add_library(${faiss_lib} SHARED $) +install(TARGETS ${faiss_lib}_static ARCHIVE DESTINATION lib) +\n"))) + + ;; See https://github.com/facebookresearch/faiss/issues/520 + (substitute* "IndexScalarQuantizer.cpp" + (("#define USE_AVX") "")) + + ;; Make header files available for compiling tests. + (mkdir-p "faiss") + (for-each (lambda (file) + (mkdir-p (string-append "faiss/" (dirname file))) + (copy-file file (string-append "faiss/" file))) + (find-files "." "\\.h$")) + #t)) + (replace 'check + (lambda _ + (invoke "make" "-C" "tests" + (format #f "-j~a" (parallel-job-count))))) + (add-after 'install 'remove-tests + (lambda* (#:key outputs #:allow-other-keys) + (delete-file-recursively + (string-append (assoc-ref outputs "out") + "/test")) + #t))))) + (inputs + `(("openblas" ,openblas))) + (native-inputs + `(("googletest" ,googletest))) + (home-page "https://github.com/facebookresearch/faiss") + (synopsis "Efficient similarity search and clustering of dense vectors") + (description "Faiss is a library for efficient similarity search and +clustering of dense vectors. It contains algorithms that search in sets of +vectors of any size, up to ones that possibly do not fit in RAM. It also +contains supporting code for evaluation and parameter tuning.") + (license license:bsd-3))) + +(define-public python-faiss + (package (inherit faiss) + (name "python-faiss") + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ (chdir "python") #t)) + (add-after 'chdir 'build-swig + (lambda* (#:key inputs #:allow-other-keys) + (with-output-to-file "../makefile.inc" + (lambda () + (let ((python-version ,(version-major+minor (package-version python)))) + (format #t "\ +PYTHONCFLAGS =-I~a/include/python~am/ -I~a/lib/python~a/site-packages/numpy/core/include +LIBS = -lpython~am -lfaiss +SHAREDFLAGS = -shared -fopenmp +CXXFLAGS = -fpermissive -std=c++11 -fopenmp -fPIC +CPUFLAGS = ~{~a ~}~%" + (assoc-ref inputs "python*") python-version + (assoc-ref inputs "python-numpy") python-version + python-version + (list ,@(let ((system (or (%current-target-system) + (%current-system)))) + (cond + ((string-prefix? "x86_64" system) + '("-mavx" "-msse2" "-mpopcnt")) + ((string-prefix? "i686" system) + '("-msse2" "-mpopcnt")) + (else + '())))))))) + (substitute* "Makefile" + (("../libfaiss.a") "")) + (invoke "make" "cpu")))))) + (inputs + `(("faiss" ,faiss) + ("openblas" ,openblas) + ("python*" ,python) + ("swig" ,swig))) + (propagated-inputs + `(("python-matplotlib" ,python-matplotlib) + ("python-numpy" ,python-numpy))) + (description "Faiss is a library for efficient similarity search and +clustering of dense vectors. This package provides Python bindings to the +Faiss library."))) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 11158bdfd1..25c9e0b476 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -354,33 +354,23 @@ (define-public ogre (version "1.10.11") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/OGRECave/" name - "/archive/v" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/OGRECave/ogre.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "13bdh9v4026qf8w8rbfln2rmwf0rby1a8fz55zpdvpy105i6cbpz")) - (file-name (string-append name "-" version ".tar.gz")))) + "072rzw9mxymbiypgkrbkk9h10rgly6gczik4dlmssk6xkpqckaqr")))) (build-system cmake-build-system) (arguments '(#:phases (modify-phases %standard-phases (add-before 'configure 'pre-configure - (lambda _ - ;; It expects googletest source to be downloaded and - ;; be in a specific place. - (substitute* "Tests/CMakeLists.txt" - (("URL(.*)$" _ suffix) - (string-append "URL " suffix - "\t\tURL_HASH " - "MD5=16877098823401d1bf2ed7891d7dce36\n"))) - #t)) - (add-before 'build 'pre-build (lambda* (#:key inputs #:allow-other-keys) - (copy-file (assoc-ref inputs "googletest-source") - (string-append (getcwd) - "/Tests/googletest-prefix/src/" - "release-1.8.0.tar.gz")) + (substitute* "Tests/CMakeLists.txt" + (("URL(.*)$") + (string-append "URL " (assoc-ref inputs "googletest-source")))) #t))) #:configure-flags (list "-DOGRE_BUILD_TESTS=TRUE" diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 1d1bcd2204..7527abbbac 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès -;;; Copyright © 2014, 2015, 2017, 2018 Mark H Weaver +;;; Copyright © 2014, 2015, 2017, 2018, 2019 Mark H Weaver ;;; Copyright © 2014 Eric Bavier ;;; Copyright © 2015 Federico Beffa ;;; Copyright © 2015 Paul van der Walt @@ -822,6 +822,18 @@ (define-public gtk+ (variable "GUIX_GTK3_PATH") (files '("lib/gtk-3.0"))))))) +;; Fixes a bug in Gtk that causes crashes in IceCat and Emacs. +;; See , , +;; and . +(define gtk+/fixed + (package + (inherit gtk+) + (source (origin + (inherit (package-source gtk+)) + (patches + (cons (search-patch "gtk3-fix-deprecation-macro-use.patch") + (origin-patches (package-source gtk+)))))))) + ;;; ;;; Guile bindings. ;;; diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index daeadca610..d4dd10ba11 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -103,6 +103,12 @@ (define-public guile-1.8 (substitute* "ice-9/popen.scm" (("/bin/sh") (which "sh"))) #t))))) + + ;; When cross-compiling, a native version of Guile itself is needed. + (native-inputs (if (%current-target-system) + `(("self" ,this-package)) + '())) + (inputs `(("gawk" ,gawk) ("readline" ,readline))) @@ -111,9 +117,6 @@ (define-public guile-1.8 (propagated-inputs `(("gmp" ,gmp) ("libltdl" ,libltdl))) - ;; When cross-compiling, a native version of Guile itself is needed. - (self-native-input? #t) - (native-search-paths (list (search-path-specification (variable "GUILE_LOAD_PATH") @@ -141,7 +144,12 @@ (define-public guile-2.0 (base32 "10lxc6l5alf3lzbs3ihnbfy6dfcrsyf8667wa57f26vf4mk2ai78")))) (build-system gnu-build-system) - (native-inputs `(("pkgconfig" ,pkg-config))) + + ;; When cross-compiling, a native version of Guile itself is needed. + (native-inputs `(,@(if (%current-target-system) + `(("self" ,this-package)) + '()) + ("pkgconfig" ,pkg-config))) (inputs `(("libffi" ,libffi) ,@(libiconv-if-needed) @@ -165,8 +173,6 @@ (define-public guile-2.0 ("bdw-gc" ,libgc) ("gmp" ,gmp))) - (self-native-input? #t) - (outputs '("out" "debug")) (arguments @@ -207,20 +213,6 @@ (define-public guile-2.0 (home-page "https://www.gnu.org/software/guile/") (license license:lgpl3+))) -(define-public guile-2.0.13 - ;; For testing a "minimal" Guix - (hidden-package - (package (inherit guile-2.0) - (name "guile") - (version "2.0.13") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/guile/guile-" version - ".tar.xz")) - (sha256 - (base32 - "12yqkr974y91ylgw6jnmci2v90i90s7h9vxa4zk0sai8vjnz4i1p"))))))) - (define-public guile-2.2 (package (inherit guile-2.0) (name "guile") diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm index 006a61c086..a735ecb011 100644 --- a/gnu/packages/hardware.scm +++ b/gnu/packages/hardware.scm @@ -38,14 +38,14 @@ (define-module (gnu packages hardware) (define-public ddcutil (package (name "ddcutil") - (version "0.9.4") + (version "0.9.5") (source (origin (method url-fetch) (uri (string-append "https://www.ddcutil.com/tarballs/" "ddcutil-" version ".tar.gz")) (sha256 - (base32 "1jqfip43sx3dnx86znmpy8dj4ikkfpgf8npgq66s7hqwwa99i7zc")))) + (base32 "18brwj54dkjylvpx7c6ksf7fzhdjffi60avyg7qbs8vw9awnsxqz")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm index 19eb40eaa4..fa2bd0d652 100644 --- a/gnu/packages/haskell-check.scm +++ b/gnu/packages/haskell-check.scm @@ -148,9 +148,9 @@ (define-public ghc-tasty-golden "https://github.com/feuerbach/tasty-golden") (synopsis "Golden tests support for tasty") (description - "This package provides support for 'golden testing'. A @dfn{golden test} -is an IO action that writes its result to a file. To pass the test, this -output file should be identical to the corresponding 'golden' file, which + "This package provides support for @code{golden testing}. A @dfn{golden +test} is an IO action that writes its result to a file. To pass the test, this +output file should be identical to the corresponding @code{golden} file, which contains the correct result for the test.") (license license:expat))) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 2a5ba2a706..a23dfe9ae6 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -1157,7 +1157,7 @@ (define-public ghc-haskell-src (synopsis "Support for manipulating Haskell source code") (description - "The 'haskell-src' package provides support for manipulating Haskell + "The @code{haskell-src} package provides support for manipulating Haskell source code. The package provides a lexer, parser and pretty-printer, and a definition of a Haskell abstract syntax tree (AST). Common uses of this package are to parse or generate Haskell 98 code.") @@ -2360,11 +2360,11 @@ (define-public ghc-zlib "Compression and decompression in the gzip and zlib formats") (description "This package provides a pure interface for compressing and decompressing -streams of data represented as lazy 'ByteString's. It uses the zlib C library -so it has high performance. It supports the 'zlib', 'gzip' and 'raw' -compression formats. It provides a convenient high level API suitable for -most tasks and for the few cases where more control is needed it provides -access to the full zlib feature set.") +streams of data represented as lazy @code{ByteString}s. It uses the zlib C +library so it has high performance. It supports the @code{zlib}, @code{gzip} +and @code{raw} compression formats. It provides a convenient high level API +suitable for most tasks and for the few cases where more control is needed it +provides access to the full zlib feature set.") (license license:bsd-3))) (define-public ghc-stm @@ -2467,7 +2467,7 @@ (define-public ghc-text "An efficient packed, immutable Unicode text type (both strict and lazy), with a powerful loop fusion optimization framework. -The 'Text' type represents Unicode character strings, in a time and +The @code{Text} type represents Unicode character strings, in a time and space-efficient manner. This package provides text processing capabilities that are optimized for performance critical use, both in terms of large data quantities and high speed.") @@ -3800,10 +3800,10 @@ (define-public ghc-case-insensitive "https://github.com/basvandijk/case-insensitive") (synopsis "Case insensitive string comparison") (description - "The module 'Data.CaseInsensitive' provides the 'CI' type constructor -which can be parameterised by a string-like type like: 'String', 'ByteString', -'Text', etc.. Comparisons of values of the resulting type will be insensitive -to cases.") + "The module @code{Data.CaseInsensitive} provides the @code{CI} type +constructor which can be parameterised by a string-like type like: +@code{String}, @code{ByteString}, @code{Text}, etc. Comparisons of values of +the resulting type will be insensitive to cases.") (license license:bsd-3))) (define-public ghc-syb @@ -3830,7 +3830,7 @@ (define-public ghc-syb (description "This package contains the generics system described in the /Scrap Your Boilerplate/ papers (see @uref{http://www.cs.uu.nl/wiki/GenericProgramming/SYB, the website}). It -defines the 'Data' class of types permitting folding and unfolding of +defines the @code{Data} class of types permitting folding and unfolding of constructor applications, instances of this class for primitive types, and a variety of traversals.") (license license:bsd-3))) @@ -4323,8 +4323,8 @@ (define-public ghc-network-uri "https://github.com/haskell/network-uri") (synopsis "Library for URI manipulation") (description "This package provides an URI manipulation interface. In -'network-2.6' the 'Network.URI' module was split off from the 'network' -package into this package.") +@code{network-2.6} the @code{Network.URI} module was split off from the +@code{network} package into this package.") (license license:bsd-3))) (define-public ghc-ansi-terminal @@ -5724,7 +5724,7 @@ (define-public ghc-deepseq-generics (description "This package provides a @code{GHC.Generics}-based @code{Control.DeepSeq.Generics.genericRnf} function which can be used for -providing an 'rnf' implementation.") +providing an @code{rnf} implementation.") (license license:bsd-3))) (define-public ghc-string-qq @@ -9430,7 +9430,7 @@ (define-public ghc-rerebase `(("ghc-rebase" ,ghc-rebase))) (home-page "https://github.com/nikita-volkov/rerebase") (synopsis "Reexports from ``base'' with many other standard libraries") - (description "A rich drop-in replacement for ``base''. For details and + (description "A rich drop-in replacement for @code{base}. For details and documentation please visit @uref{https://github.com/nikita-volkov/rerebase, the project's home page}.") (license license:expat))) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index b52b6025ae..9fc29ec284 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -198,29 +198,6 @@ (define-public libpng-1.2 (base32 "1izw9ybm27llk8531w6h4jp4rk2rxy2s9vil16nwik5dp0amyqxl")))))) -(define-public r-png - (package - (name "r-png") - (version "0.1-7") - (source (origin - (method url-fetch) - (uri (cran-uri "png" version)) - (sha256 - (base32 - "0g2mcp55lvvpx4kd3mn225mpbxqcq73wy5qx8b4lyf04iybgysg2")))) - (build-system r-build-system) - (inputs - `(("libpng" ,libpng) - ("zlib" ,zlib))) - (home-page "http://www.rforge.net/png/") - (synopsis "Read and write PNG images") - (description - "This package provides an easy and simple way to read, write and display -bitmap images stored in the PNG format. It can read and write both files and -in-memory raw vectors.") - ;; Any of these GPL versions. - (license (list license:gpl2 license:gpl3)))) - (define-public pngcrush (package (name "pngcrush") @@ -568,7 +545,7 @@ (define-public jbig2dec (arguments '(#:configure-flags '("--disable-static"))) (synopsis "Decoder of the JBIG2 image compression format") (description - "JBIG2 is designed for lossy or lossless encoding of 'bilevel' (1-bit + "JBIG2 is designed for lossy or lossless encoding of @code{bilevel} (1-bit monochrome) images at moderately high resolution, and in particular scanned paper documents. In this domain it is very efficient, offering compression ratios on the order of 100:1. diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm index 10a1dfe0d1..ec735d8903 100644 --- a/gnu/packages/kde-frameworks.scm +++ b/gnu/packages/kde-frameworks.scm @@ -418,7 +418,7 @@ (define-public karchive (home-page "https://community.kde.org/Frameworks") (synopsis "Qt 5 addon providing access to numerous types of archives") (description "KArchive provides classes for easy reading, creation and -manipulation of 'archive' formats like ZIP and TAR. +manipulation of @code{archive} formats like ZIP and TAR. It also provides transparent compression and decompression of data, like the GZip format, via a subclass of QIODevice.") @@ -2585,8 +2585,9 @@ (define-public kinit (synopsis "Library to speed up start of applications on KDE workspaces") (description "Kdeinit is a process launcher similar to init used for booting UNIX. It launches processes by forking and then loading a dynamic library which -contains a 'kdemain(...)' function. Using kdeinit to launch KDE applications -makes starting KDE applications faster and reduces memory consumption.") +contains a @code{kdemain(@dots{})} function. Using kdeinit to launch KDE +applications makes starting KDE applications faster and reduces memory +consumption.") ;; dual licensed (license (list license:lgpl2.0+ license:lgpl2.1+)))) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 2140d5c6a5..4642514dd4 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -415,8 +415,8 @@ (define* (make-linux-libre version hash supported-systems It has been modified to remove all non-free binary blobs.") (license license:gpl2))) -(define %linux-libre-version "5.0.3") -(define %linux-libre-hash "1ivdqr3y8r2hmv3a1g0a641cr2ckl3x4arapw0j6nwd0sbcyncam") +(define %linux-libre-version "5.0.5") +(define %linux-libre-hash "1yivxqprxfzhzid4qv9hpnb5i38kijrj2g2pyzz7niliya1c58li") (define %linux-libre-5.0-patches (list %boot-logo-patch @@ -429,8 +429,8 @@ (define-public linux-libre #:patches %linux-libre-5.0-patches #:configuration-file kernel-config)) -(define %linux-libre-4.19-version "4.19.30") -(define %linux-libre-4.19-hash "1i15cs7zb53hagllgga8jaz0j1p9b22j93iczwc2w587zzhzlvng") +(define %linux-libre-4.19-version "4.19.32") +(define %linux-libre-4.19-hash "19bryl8nmnnnrfh91pc8q9yiayh5ca2nb6b32qyx6riahc5dy0i9") (define %linux-libre-4.19-patches (list %boot-logo-patch @@ -443,8 +443,8 @@ (define-public linux-libre-4.19 #:patches %linux-libre-4.19-patches #:configuration-file kernel-config)) -(define %linux-libre-4.14-version "4.14.107") -(define %linux-libre-4.14-hash "19i17b8sjjvi99vya1vncjalysdy027hp35rrla68gjs28dyas7r") +(define %linux-libre-4.14-version "4.14.109") +(define %linux-libre-4.14-hash "05xnnyfiypg4sdcnh42wvg7h72ar8xx98dik12sgwysnfldi0gk9") (define-public linux-libre-4.14 (make-linux-libre %linux-libre-4.14-version @@ -453,14 +453,14 @@ (define-public linux-libre-4.14 #:configuration-file kernel-config)) (define-public linux-libre-4.9 - (make-linux-libre "4.9.164" - "06bbynvijqlk92bpppmnjijyfwr0sk01krqdw4hpgbrvlg3wdlbk" + (make-linux-libre "4.9.166" + "1gijzvhky3x0nl0dm9ksg113z7jc1mc1n30qbr6r1dd78lfd050p" '("x86_64-linux" "i686-linux") #:configuration-file kernel-config)) (define-public linux-libre-4.4 - (make-linux-libre "4.4.176" - "0c300zqmsadahs2fpzxh6cn7q3h7jxq69msd17rh8v3wnvql8vzx" + (make-linux-libre "4.4.177" + "0vvppw7j6jwn3cd5hhzgj5xfqkmz682zy36iyr6ynd0rbh1j7bhm" '("x86_64-linux" "i686-linux") #:configuration-file kernel-config)) @@ -2003,9 +2003,46 @@ (define-public kbd (description "This package contains keytable files and keyboard utilities compatible for systems using the Linux kernel. This includes commands such as -'loadkeys', 'setfont', 'kbdinfo', and 'chvt'.") +@code{loadkeys}, @code{setfont}, @code{kbdinfo}, and @code{chvt}.") (license license:gpl2+))) +(define-public loadkeys-static + (package + (inherit kbd) + (name "loadkeys-static") + (arguments + (substitute-keyword-arguments (package-arguments kbd) + ((#:configure-flags flags ''()) + `(append '("LDFLAGS=-static" "--disable-shared" "--disable-nls" + "--disable-vlock" ;so we don't need libpam + "--disable-libkeymap") + ,flags)) + ((#:make-flags flags ''()) + `(cons "LDFLAGS=-all-static" ,flags)) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; The binary keeps references to gzip, among other things, + ;; which we don't need in the initrd, so strip references. + (remove-store-references "src/loadkeys") + + (install-file "src/loadkeys" + (string-append out "/bin")) + #t))) + (delete 'post-install))) + ((#:strip-flags _ '()) + ''("--strip-all")) + ((#:allowed-references _ '()) + '()))) + + (synopsis "Statically-linked @command{loadkeys} program") + + ;; This package is meant to be used internally in the initrd so don't + ;; expose it. + (properties '((hidden? . #t))))) + (define-public inotify-tools (package (name "inotify-tools") @@ -2272,7 +2309,7 @@ (define-public wireless-tools #:tests? #f)) (synopsis "Tools for manipulating Linux Wireless Extensions") (description "Wireless Tools are used to manipulate the now-deprecated -Linux Wireless Extensions; consider using 'iw' instead. The Wireless +Linux Wireless Extensions; consider using @code{iw} instead. The Wireless Extension was an interface allowing you to set Wireless LAN specific parameters and get the specific stats. It is deprecated in favor the nl80211 interface.") @@ -2630,7 +2667,7 @@ (define-public perf with support in the Linux kernel. perf can instrument CPU performance counters, tracepoints, kprobes, and uprobes (dynamic tracing). It is capable of lightweight profiling. This package contains the user-land tools and in -particular the 'perf' command.") +particular the @code{perf} command.") (license (package-license linux-libre)))) (define-public pflask @@ -3986,8 +4023,8 @@ (define-public module-init-tools (home-page "https://www.kernel.org/pub/linux/utils/kernel/module-init-tools/") (synopsis "Tools for loading and managing Linux kernel modules") (description - "Tools for loading and managing Linux kernel modules, such as `modprobe', -`insmod', `lsmod', and more.") + "Tools for loading and managing Linux kernel modules, such as +@code{modprobe}, @code{insmod}, @code{lsmod}, and more.") (license license:gpl2+))) (define-public mcelog @@ -4274,6 +4311,45 @@ (define-public light Light is the successor of lightscript.") (license license:gpl3+))) +(define-public brightnessctl + (let ((commit "6a791e7694aeeb5d027f71c6098e5182cf03371c")) + (package + (name "brightnessctl") + (version (git-version "0.4" "0" commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Hummer12007/brightnessctl/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1n1gb8ldgqv3vs565yhk1w4jfvrviczp94r8wqlkv5q6ab43c8w9")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no tests + #:make-flags (list "CC=gcc" + (string-append "PREFIX=" %output) + (string-append "UDEVDIR=" %output "/lib/udev/rules.d/")) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'adjust-udev-rules + (lambda _ + (substitute* "90-brightnessctl.rules" + (("/bin/") "/run/current-system/profile/bin/")) + #t))))) + (home-page "https://github.com/Hummer12007/brightnessctl") + (synopsis "Backlight and LED brightness control") + (description + "This program allows you read and control device brightness. Devices +include backlight and LEDs. It can also preserve current brightness before +applying the operation, such as on lid close. + +The appropriate permissions must be set on the backlight or LED control +interface in sysfs, which can be accomplished with the included udev rules.") + (license license:expat)))) + (define-public tlp (package (name "tlp") diff --git a/gnu/packages/lirc.scm b/gnu/packages/lirc.scm index 627c79f979..5e77f1ddc2 100644 --- a/gnu/packages/lirc.scm +++ b/gnu/packages/lirc.scm @@ -96,10 +96,10 @@ (define-public lirc (synopsis "Linux Infrared Remote Control") (description "LIRC allows computers to send and receive IR signals of many commonly -used remote controls. The most important part of LIRC is the 'lircd' daemon -that decodes IR signals received by the device drivers. The second daemon -program 'lircmd' allows to translate IR signals to mouse movements. The -user space applications allow you to control your computer with a remote +used remote controls. The most important part of LIRC is the @code{lircd} +daemon that decodes IR signals received by the device drivers. The second +daemon program @code{lircmd} allows to translate IR signals to mouse movements. +The user space applications allow you to control your computer with a remote control: you can send X events to applications, start programs and much more on just one button press.") (license license:gpl2+))) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 87dcf36372..d92d69985b 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -1467,7 +1467,7 @@ (define-public sbcl-cl-uglify-js @item reduce variable names (usually to single letters) @item join consecutive @code{var} statements @item resolve simple binary expressions -@item group most consecutive statements using the ``sequence'' operator (comma) +@item group most consecutive statements using the @code{sequence} operator (comma) @item remove unnecessary blocks @item convert @code{IF} expressions in various ways that result in smaller code @item remove some unreachable code diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 28bb44a3ca..62b3507b67 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -626,28 +626,6 @@ (define-public r-adaptivesparsity geometric models.") (license license:lgpl3+))) -(define-public r-kernlab - (package - (name "r-kernlab") - (version "0.9-27") - (source - (origin - (method url-fetch) - (uri (cran-uri "kernlab" version)) - (sha256 - (base32 - "1m0xqf6gyvwayz7w3c83y32ayvnlz0jicj8ijk808zq9sh7dbbgn")))) - (build-system r-build-system) - (home-page "https://cran.r-project.org/web/packages/kernlab") - (synopsis "Kernel-based machine learning tools") - (description - "This package provides kernel-based machine learning methods for -classification, regression, clustering, novelty detection, quantile regression -and dimensionality reduction. Among other methods @code{kernlab} includes -Support Vector Machines, Spectral Clustering, Kernel PCA, Gaussian Processes -and a QP solver.") - (license license:gpl2))) - (define-public dlib (package (name "dlib") diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 9d09cade29..a2971a5e67 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -1287,7 +1287,7 @@ (define-public exim (define-public dovecot (package (name "dovecot") - (version "2.3.5") + (version "2.3.5.1") (source (origin (method url-fetch) @@ -1295,7 +1295,8 @@ (define-public dovecot (version-major+minor version) "/" "dovecot-" version ".tar.gz")) (sha256 - (base32 "1zxa9banams9nmk99sf1rqahr11cdqxhwi7hyz3ddxqidpn15qdz")))) + (base32 + "0gy3qzwbp6zsyn44pcfq8iiv9iy9q7z6py30h60alb1vkr3rv3yp")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm index 16e9148506..f02bb41cda 100644 --- a/gnu/packages/mate.scm +++ b/gnu/packages/mate.scm @@ -1148,7 +1148,7 @@ (define-public mate-netbook @item Allows you to set basic rules for a window type, such as maximise|undecorate @item Allows exceptions to the rules, based on string matching for window name and window class. -@item Allows 'reversing' of rules when the user manually changes something: +@item Allows @code{reversing} of rules when the user manually changes something: Re-decorates windows on un-maximise. @end enumerate\n") (license license:gpl3+))) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 5671b83c00..7370db5883 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -887,121 +887,130 @@ (define-public hdf5-1.10 (define-public hdf-java (package - (name "hdf-java") - (version "3.3.2") - (source - (origin - (method url-fetch) - (uri (string-append - "http://www.hdfgroup.org/ftp/HDF5/releases/HDF-JAVA/hdfjni-" - version "/src/CMake-hdfjava-" version ".tar.gz")) - (sha256 - (base32 "0m1gp2aspcblqzmpqbdpfp6giskws85ds6p5gz8sx7asyp7wznpr")) - (modules '((guix build utils))) - (snippet ; Make sure we don't use the bundled sources and binaries. - `(begin - (for-each delete-file - (list "SZip.tar.gz" "ZLib.tar.gz" "JPEG8d.tar.gz" - "HDF4.tar.gz" "HDF5.tar.gz")) - (delete-file-recursively ,(string-append "hdfjava-" version "/lib")) - #t)))) - (build-system gnu-build-system) - (native-inputs - `(("jdk" ,icedtea "jdk") - ("automake" ,automake) ; For up to date 'config.guess' and 'config.sub'. - ;; For tests: - ("hamcrest-core" ,java-hamcrest-core) - ("junit" ,java-junit) - ("slf4j-simple" ,java-slf4j-simple))) - (inputs - `(("hdf4" ,hdf4) - ("hdf5" ,hdf5) - ("zlib" ,zlib) - ("libjpeg" ,libjpeg) - ("slf4j-api" ,java-slf4j-api))) - (arguments - `(#:configure-flags - (list (string-append "--target=" ,(or (%current-target-system) (%current-system))) - (string-append "--with-jdk=" (assoc-ref %build-inputs "jdk") "/include," - (assoc-ref %build-inputs "jdk") "/lib" ) - (string-append "--with-hdf4=" (assoc-ref %build-inputs "hdf4") "/lib") - (string-append "--with-hdf5=" (assoc-ref %build-inputs "hdf5") "/lib")) + (name "hdf-java") + (version "3.3.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://www.hdfgroup.org/ftp/HDF5/releases/HDF-JAVA/hdfjni-" + version "/src/CMake-hdfjava-" version ".tar.gz")) + (sha256 + (base32 "0m1gp2aspcblqzmpqbdpfp6giskws85ds6p5gz8sx7asyp7wznpr")) + (modules '((guix build utils))) + (snippet ; Make sure we don't use the bundled sources and binaries. + `(begin + (for-each delete-file + (list "SZip.tar.gz" "ZLib.tar.gz" "JPEG8d.tar.gz" + "HDF4.tar.gz" "HDF5.tar.gz")) + (delete-file-recursively ,(string-append "hdfjava-" version "/lib")) + #t)))) + (build-system gnu-build-system) + (native-inputs + `(("jdk" ,icedtea "jdk") + ("automake" ,automake) ; For up to date 'config.guess' and 'config.sub'. + ;; For tests: + ("hamcrest-core" ,java-hamcrest-core) + ("junit" ,java-junit) + ("slf4j-simple" ,java-slf4j-simple))) + (inputs + `(("hdf4" ,hdf4) + ("hdf5" ,hdf5) + ("zlib" ,zlib) + ("libjpeg" ,libjpeg) + ("slf4j-api" ,java-slf4j-api))) + (arguments + `(#:configure-flags + (list (string-append "--target=" ,(or (%current-target-system) (%current-system))) + (string-append "--with-jdk=" (assoc-ref %build-inputs "jdk") "/include," + (assoc-ref %build-inputs "jdk") "/lib" ) + (string-append "--with-hdf4=" (assoc-ref %build-inputs "hdf4") "/lib") + (string-append "--with-hdf5=" (assoc-ref %build-inputs "hdf5") "/lib")) - #:make-flags - (list (string-append "HDFLIB=" (assoc-ref %build-inputs "hdf4") "/lib") - (string-append "HDF5LIB=" (assoc-ref %build-inputs "hdf5") "/lib") - (string-append "ZLIB=" (assoc-ref %build-inputs "zlib") "/lib/libz.so") - (string-append "JPEGLIB=" - (assoc-ref %build-inputs "libjpeg") "/lib/libjpeg.so") - "LLEXT=so") + #:make-flags + (list (string-append "HDFLIB=" (assoc-ref %build-inputs "hdf4") "/lib") + (string-append "HDF5LIB=" (assoc-ref %build-inputs "hdf5") "/lib") + (string-append "ZLIB=" (assoc-ref %build-inputs "zlib") "/lib/libz.so") + (string-append "JPEGLIB=" + (assoc-ref %build-inputs "libjpeg") "/lib/libjpeg.so") + "LLEXT=so") - #:phases - (modify-phases %standard-phases - (add-before 'configure 'chdir-to-source - (lambda _ (chdir ,(string-append "hdfjava-" version)))) - (add-before 'configure 'patch-build - (lambda* (#:key inputs outputs #:allow-other-keys) - (substitute* "configure" - (("COPT=\"") "COPT=\"-O2 ") ; CFLAGS is ignored in Makefiles - (("/bin/cat") (which "cat"))) - ;; Set classpath for compilation - (substitute* '("hdf/hdf5lib/Makefile.in" - "hdf/hdf5lib/exceptions/Makefile.in" - "hdf/hdflib/Makefile.in") - (("\\$\\(TOP\\)/lib/slf4j-api-1\\.7\\.5\\.jar") - (string-append (assoc-ref inputs "slf4j-api") - "/share/java/slf4j-api.jar"))) - ;; Replace outdated config.sub and config.guess: - (with-directory-excursion "config" - (for-each (lambda (file) - (copy-file - (string-append (assoc-ref inputs "automake") - "/share/automake-1.15/" file) file)) - '("config.sub" "config.guess"))) - (mkdir-p (string-append (assoc-ref outputs "out"))) - ;; Set classpath for tests - (let* ((build-dir (getcwd)) - (lib (string-append build-dir "/lib")) - (jhdf (string-append lib "/jhdf.jar")) - (jhdf5 (string-append lib "/jhdf5.jar")) - (testjars - (map (lambda (i) - (string-append (assoc-ref inputs i) - "/share/java/" i ".jar")) - '("junit" "hamcrest-core" "slf4j-api" "slf4j-simple"))) - (class-path - (string-join `("." ,build-dir ,jhdf ,jhdf5 ,@testjars) ":"))) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'chdir-to-source + (lambda _ (chdir ,(string-append "hdfjava-" version)) #t)) + (add-before 'configure 'patch-build + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "configure" + (("COPT=\"") "COPT=\"-O2 ") ; CFLAGS is ignored in Makefiles + (("/bin/cat") (which "cat"))) + ;; Set classpath for compilation + (substitute* '("hdf/hdf5lib/Makefile.in" + "hdf/hdf5lib/exceptions/Makefile.in" + "hdf/hdflib/Makefile.in") + (("\\$\\(TOP\\)/lib/slf4j-api-1\\.7\\.5\\.jar") + (string-append (assoc-ref inputs "slf4j-api") + "/share/java/slf4j-api.jar"))) + ;; Replace outdated config.sub and config.guess: + (with-directory-excursion "config" + (for-each (lambda (file) + (install-file + (string-append (assoc-ref inputs "automake") + "/share/automake-" + ,(version-major+minor (package-version automake)) + "/" file) ".")) + '("config.sub" "config.guess"))) - (substitute* '("test/hdf5lib/Makefile.in" - "test/hdf5lib/junit.sh.in" - "examples/runExample.sh.in") - (("/usr/bin/test") - (string-append (assoc-ref inputs "coreutils") - "/bin/test")) - (("/usr/bin/uname") - (string-append (assoc-ref inputs "coreutils") - "/bin/uname")) - (("CLASSPATH=[^\n]*") - (string-append "CLASSPATH=" class-path))) - (setenv "CLASSPATH" class-path)) - #t)) - (add-before 'check 'build-examples - (lambda _ - (zero? (apply system* `("javac" - ,@(find-files "examples" ".*\\.java"))))))) + ;; Fix embedded version number + (let ((hdf5version (list ,@(string-split (package-version hdf5) #\.)))) + (substitute* "hdf/hdf5lib/H5.java" + (("1, 8, 19") + (string-join hdf5version ", ")))) - #:parallel-build? #f + (mkdir-p (string-append (assoc-ref outputs "out"))) + ;; Set classpath for tests + (let* ((build-dir (getcwd)) + (lib (string-append build-dir "/lib")) + (jhdf (string-append lib "/jhdf.jar")) + (jhdf5 (string-append lib "/jhdf5.jar")) + (testjars + (map (lambda (i) + (string-append (assoc-ref inputs i) + "/share/java/" i ".jar")) + '("junit" "hamcrest-core" "slf4j-api" "slf4j-simple"))) + (class-path + (string-join `("." ,build-dir ,jhdf ,jhdf5 ,@testjars) ":"))) - #:parallel-tests? #f )) - (home-page "https://support.hdfgroup.org/products/java") - (synopsis "Java interface for the HDF4 and HDF5 libraries") - (description "Java HDF Interface (JHI) and Java HDF5 Interface (JHI5) use + (substitute* '("test/hdf5lib/Makefile.in" + "test/hdf5lib/junit.sh.in" + "examples/runExample.sh.in") + (("/usr/bin/test") + (string-append (assoc-ref inputs "coreutils") + "/bin/test")) + (("/usr/bin/uname") + (string-append (assoc-ref inputs "coreutils") + "/bin/uname")) + (("CLASSPATH=[^\n]*") + (string-append "CLASSPATH=" class-path))) + (setenv "CLASSPATH" class-path)) + #t)) + (add-before 'check 'build-examples + (lambda _ + (apply invoke `("javac" + ,@(find-files "examples" ".*\\.java")))))) + + #:parallel-build? #f + + #:parallel-tests? #f )) + (home-page "https://support.hdfgroup.org/products/java") + (synopsis "Java interface for the HDF4 and HDF5 libraries") + (description "Java HDF Interface (JHI) and Java HDF5 Interface (JHI5) use the Java Native Interface to wrap the HDF4 and HDF5 libraries, which are implemented in C.") - ;; BSD-style license: - (license (license:x11-style - "https://support.hdfgroup.org/ftp/HDF5/hdf-java\ + ;; BSD-style license: + (license (license:x11-style + "https://support.hdfgroup.org/ftp/HDF5/hdf-java\ /current/src/unpacked/COPYING")))) (define-public hdf-eos2 diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 2a910c4bc6..32868d1a1f 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -492,14 +492,14 @@ (define-public pidgin-otr (define-public znc (package (name "znc") - (version "1.7.2") + (version "1.7.3") (source (origin (method url-fetch) (uri (string-append "http://znc.in/releases/archive/znc-" version ".tar.gz")) (sha256 (base32 - "1ac2csl5jr56vahnxdynlvrhwlvcc1gqxvyifckc6cn5aj7ygd30")))) + "0g8i5hsl4kinpz1wp0a2zniidv3w2sd6awq8676fds516wcc6k0y")))) ;; TODO: autotools support has been deprecated, and new features like i18n ;; are only supported when building with cmake. (build-system gnu-build-system) diff --git a/gnu/packages/microcom.scm b/gnu/packages/microcom.scm index 67fd5fe355..3a1ec1d3cb 100644 --- a/gnu/packages/microcom.scm +++ b/gnu/packages/microcom.scm @@ -46,6 +46,6 @@ (define-public microcom (synopsis "Minimalistic serial line terminal program") (description "Microcom is a minimalistic terminal program for accessing devices via a serial connection. It features connection via RS232 serial -interfaces (including setting of transfer rates) as well as in `telnetmode' +interfaces (including setting of transfer rates) as well as in @code{telnetmode} as specified in rfc2217 and a (Linux specific) CAN mode.") (license gpl2+))) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 5a2358f19a..1707dfa944 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -1630,7 +1630,7 @@ (define-public bristol (home-page "http://bristol.sourceforge.net/") (synopsis "Synthesizer emulator") (description - "Bristol is an emulation package for a number of different 'classic' + "Bristol is an emulation package for a number of different @code{classic} synthesizers including additive and subtractive and a few organs. The application consists of the engine, which is called bristol, and its own GUI library called brighton that represents all the emulations. There are @@ -2002,7 +2002,7 @@ (define-public drumstick (define-public zynaddsubfx (package (name "zynaddsubfx") - (version "3.0.3") + (version "3.0.4") (source (origin (method url-fetch) (uri (string-append @@ -2010,7 +2010,7 @@ (define-public zynaddsubfx version "/zynaddsubfx-" version ".tar.bz2")) (sha256 (base32 - "1hfpiqdm337gl4ynkmmp2qss2m5z8mzqzjrbiyg6w1v4js7l9phi")))) + "18m4ax0x06y1hx4g2g3gf02v0bldkrrb5m7fsr5jlfp1kvjd2j1x")))) (build-system cmake-build-system) (arguments `(#:phases diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm index 057e8c3bd9..04877f33ba 100644 --- a/gnu/packages/nano.scm +++ b/gnu/packages/nano.scm @@ -30,7 +30,7 @@ (define-module (gnu packages nano) (define-public nano (package (name "nano") - (version "3.2") + (version "4.0") (source (origin (method url-fetch) @@ -38,7 +38,7 @@ (define-public nano version ".tar.xz")) (sha256 (base32 - "0jb3zq0v84xb0chyynkcp2jhs9660wmpkic294p4p6c96npp69yi")))) + "1hxsx6qi7897d8bwkbnijlwvnn1dfy5pd1b7v2kj8ikq6pmcybqy")))) (build-system gnu-build-system) (inputs `(("gettext" ,gettext-minimal) diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm index 9b5498688b..a35ff9b400 100644 --- a/gnu/packages/ncurses.scm +++ b/gnu/packages/ncurses.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018, 2019 Ludovic Courtès ;;; Copyright © 2014, 2016 Mark H Weaver ;;; Copyright © 2015, 2017 Leo Famulari ;;; Copyright © 2016 ng0 @@ -196,9 +196,11 @@ (define package.pc ,patch-makefile-phase) (add-after 'unpack 'remove-unneeded-shebang ,remove-shebang-phase))))) - (self-native-input? #t) ; for `tic' (native-inputs - `(("pkg-config" ,pkg-config))) + `(,@(if (%current-target-system) + `(("self" ,this-package)) ;for `tic' + '()) + ("pkg-config" ,pkg-config))) (native-search-paths (list (search-path-specification (variable "TERMINFO_DIRS") diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 493c59148a..9af3d97d95 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -547,7 +547,7 @@ (define-public iodine (define-public whois (package (name "whois") - (version "5.4.1") + (version "5.4.2") (source (origin (method url-fetch) @@ -555,7 +555,7 @@ (define-public whois name "_" version ".tar.xz")) (sha256 (base32 - "0l7chmlvsl22r5cfm6fpm999z2n3sjrnx3ha8f8kf42cn4gmkriy")))) + "0mqzs0g2qxd29ihammisg9qf4503sr7d4zas26zjz4an78xkmqzf")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no test suite @@ -1108,8 +1108,8 @@ (define-public perl-geo-ip (home-page "https://metacpan.org/release/Geo-IP") (synopsis "Look up location and network information by IP Address in Perl") - (description "The Perl module 'Geo::IP'. It looks up location and network -information by IP Address.") + (description "The Perl module @code{Geo::IP}. It looks up location and +network information by IP Address.") (license license:perl-license))) (define-public perl-io-socket-inet6 diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 801611beb1..7bebf3921b 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -1254,7 +1254,9 @@ (define-public dune (build-system ocaml-build-system) (arguments `(#:tests? #f; require odoc - #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")) + (string-append "LIBDIR=" (assoc-ref %outputs "out") + "/lib/ocaml/site-lib")) #:phases (modify-phases %standard-phases (replace 'configure @@ -1724,28 +1726,26 @@ (define-public ocaml4.02-astring (define-public ocaml-alcotest (package (name "ocaml-alcotest") - (version "0.7.2") + (version "0.8.5") (source (origin (method url-fetch) (uri (string-append "https://github.com/mirage/alcotest/releases/" "download/" version "/alcotest-" version ".tbz")) (sha256 (base32 - "0g5lzk0gpfx4q8hyhr460gr4lab5wakfxsmhfwvb3yinxwzs95gc")))) - (build-system ocaml-build-system) + "0szwjxvaahgynsx0apj81jxj3ki6yz4is9mh2wkcbx66qy7n6fvb")))) + (build-system dune-build-system) (arguments - `(#:tests? #f - #:build-flags (list "build") - #:phases - (modify-phases %standard-phases - (delete 'configure)))) + `(#:package "alcotest" + #:test-target ".")) (native-inputs - `(("ocamlbuild" ,ocamlbuild) - ("opam" ,opam) - ("topkg" ,ocaml-topkg))) + `(("ocamlbuild" ,ocamlbuild))) (propagated-inputs - `(("fmt" ,ocaml-fmt) - ("astring" ,ocaml-astring))) + `(("ocaml-astring" ,ocaml-astring) + ("ocaml-cmdliner" ,ocaml-cmdliner) + ("ocaml-fmt" ,ocaml-fmt) + ("ocaml-result" ,ocaml-result) + ("ocaml-uuidm" ,ocaml-uuidm))) (home-page "https://github.com/mirage/alcotest") (synopsis "Lightweight OCaml test framework") (description "Alcotest exposes simple interface to perform unit tests. It @@ -1797,21 +1797,22 @@ (define-public ocaml4.02-ppx-tools (define-public ocaml-react (package (name "ocaml-react") - (version "1.2.0") + (version "1.2.1") (source (origin (method url-fetch) (uri (string-append "http://erratique.ch/software/react/releases/react-" version ".tbz")) (sha256 (base32 - "0knhgbngphv5sp1yskfd97crf169qhpc0igr6w7vqw0q36lswyl8")))) + "1aj8w79gdd9xnrbz7s5p8glcb4pmimi8jp9f439dqnf6ih3mqb3v")))) (build-system ocaml-build-system) (native-inputs `(("ocamlbuild" ,ocamlbuild) - ("opam" ,opam))) + ("opam" ,opam) + ("ocaml-topkg" ,ocaml-topkg))) (arguments `(#:tests? #f - #:build-flags (list "native=true" "native-dynlink=true") + #:build-flags (list "build") #:phases (modify-phases %standard-phases (delete 'configure)))) @@ -2015,14 +2016,14 @@ (define-public ocaml4.02-fpath (define-public ocaml-bos (package (name "ocaml-bos") - (version "0.1.4") + (version "0.2.0") (source (origin (method url-fetch) (uri (string-append "http://erratique.ch/software/bos/releases/" "bos-" version ".tbz")) (sha256 (base32 - "1ly66lysk4w6mdy4k1n3ynlpfpq7lw4wshcpzgx58v6x613w5s7q")))) + "1s10iqx8rgnxr5n93lf4blwirjf8nlm272yg5sipr7lsr35v49wc")))) (build-system ocaml-build-system) (arguments `(#:tests? #f @@ -4790,7 +4791,7 @@ (define-public ocaml-merlin (define-public ocaml-gsl (package (name "ocaml-gsl") - (version "1.22.0") + (version "1.24.0") (source (origin (method url-fetch) @@ -4800,10 +4801,22 @@ (define-public ocaml-gsl version "/gsl-" version ".tbz")) (sha256 (base32 - "17vcswipliq1b2idbzx1z95kskn1a4q4s5v04igilg0f7lnkaarb")))) - (build-system ocaml-build-system) + "1l5zkkkg8sglsihrbf10ivq9s8xzl1y6ag89i4jqpnmi4m43fy34")))) + (build-system dune-build-system) + (arguments + `(#:test-target "." + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-gsl-directory + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/config/discover.ml" + (("/usr") (assoc-ref inputs "gsl"))) + #t))))) (inputs `(("gsl" ,gsl))) + (propagated-inputs + `(("ocaml-base" ,ocaml-base) + ("ocaml-stdio" ,ocaml-stdio))) (home-page "https://mmottl.github.io/gsl-ocaml") (synopsis "Bindings to the GNU Scientific Library") (description diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 86e8fce1dc..07a6c24bc8 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -78,6 +78,7 @@ (define-module (gnu packages package-management) #:use-module (gnu packages web) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) + #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system meson) #:use-module (guix build-system python) @@ -109,8 +110,8 @@ (define-public guix ;; Note: the 'update-guix-package.scm' script expects this definition to ;; start precisely like this. (let ((version "0.16.0") - (commit "2637cfd7a4894ef2a2a7da3bb46d8815c43d7e75") - (revision 10)) + (commit "f970946c1d3dc6d20bd48ec6f42c82a43bb7696f") + (revision 11)) (package (name "guix") @@ -126,7 +127,7 @@ (define-public guix (commit commit))) (sha256 (base32 - "1m734gm45x9czqspsagdfxfgw5wiiinyq1s6zc9gfv7d3b2w472k")) + "0v7qj2i9n52l1di8vk15nqdrlapfc22pcf5jl56fp4mqpq48ddrj")) (file-name (string-append "guix-" version "-checkout")))) (build-system gnu-build-system) (arguments @@ -409,10 +410,10 @@ (define-public current-guix-package (make-parameter #f)) (define-public current-guix - (let* ((repository-root (canonicalize-path - (string-append (current-source-directory) - "/../.."))) - (select? (delay (or (git-predicate repository-root) + (let* ((repository-root (delay (canonicalize-path + (string-append (current-source-directory) + "/../..")))) + (select? (delay (or (git-predicate (force repository-root)) source-file?)))) (lambda () "Return a package representing Guix built from the current source tree. @@ -422,7 +423,7 @@ (define-public current-guix (package (inherit guix) (version (string-append (package-version guix) "+")) - (source (local-file repository-root "guix-current" + (source (local-file (force repository-root) "guix-current" #:recursive? #t #:select? (force select?)))))))) @@ -1018,7 +1019,11 @@ (define-public flatpak (sha256 (base32 "0i0dn3w3545lvmjlzqj3j70lk8yrq64r9frp1rk6a161gwq20ixv")))) - (build-system gnu-build-system) + + ;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to + ;; find the TLS backend in glib-networking. + (build-system glib-or-gtk-build-system) + (arguments '(#:tests? #f ;; Tests fail due to trying to create files where it can't. #:configure-flags (list diff --git a/gnu/packages/patches/docker-use-fewer-modprobes.patch b/gnu/packages/patches/docker-use-fewer-modprobes.patch new file mode 100644 index 0000000000..2779e1be5d --- /dev/null +++ b/gnu/packages/patches/docker-use-fewer-modprobes.patch @@ -0,0 +1,119 @@ +This patch makes docker find out whether a filesystem type is supported +by trying to mount a filesystem of that type rather than invoking "modprobe". + +See . + +--- docker-18.09.0-checkout/daemon/graphdriver/overlay/overlay.go.orig 1970-01-01 01:00:00.000000000 +0100 ++++ docker-18.09.0-checkout/daemon/graphdriver/overlay/overlay.go 2019-03-19 09:16:03.487087490 +0100 +@@ -8,7 +8,6 @@ + "io" + "io/ioutil" + "os" +- "os/exec" + "path" + "path/filepath" + "strconv" +@@ -201,9 +200,16 @@ + } + + func supportsOverlay() error { +- // We can try to modprobe overlay first before looking at +- // proc/filesystems for when overlay is supported +- exec.Command("modprobe", "overlay").Run() ++ // Access overlay filesystem so that Linux loads it (if possible). ++ mountTarget, err := ioutil.TempDir("", "supportsOverlay") ++ if err != nil { ++ logrus.WithField("storage-driver", "overlay2").Error("Could not create temporary directory, so assuming that 'overlay' is not supported.") ++ return graphdriver.ErrNotSupported ++ } else { ++ /* The mounting will fail--after the module has been loaded.*/ ++ defer os.RemoveAll(mountTarget) ++ unix.Mount("overlay", mountTarget, "overlay", 0, "") ++ } + + f, err := os.Open("/proc/filesystems") + if err != nil { +--- docker-18.09.0-checkout/daemon/graphdriver/overlay2/overlay.go.orig 2019-03-18 23:42:23.728525231 +0100 ++++ docker-18.09.0-checkout/daemon/graphdriver/overlay2/overlay.go 2019-03-19 08:54:31.411906113 +0100 +@@ -10,7 +10,6 @@ + "io" + "io/ioutil" + "os" +- "os/exec" + "path" + "path/filepath" + "strconv" +@@ -261,9 +260,16 @@ + } + + func supportsOverlay() error { +- // We can try to modprobe overlay first before looking at +- // proc/filesystems for when overlay is supported +- exec.Command("modprobe", "overlay").Run() ++ // Access overlay filesystem so that Linux loads it (if possible). ++ mountTarget, err := ioutil.TempDir("", "supportsOverlay2") ++ if err != nil { ++ logrus.WithField("storage-driver", "overlay2").Error("Could not create temporary directory, so assuming that 'overlay' is not supported.") ++ return graphdriver.ErrNotSupported ++ } else { ++ /* The mounting will fail--after the module has been loaded.*/ ++ defer os.RemoveAll(mountTarget) ++ unix.Mount("overlay", mountTarget, "overlay", 0, "") ++ } + + f, err := os.Open("/proc/filesystems") + if err != nil { +--- docker-18.09.0-checkout/daemon/graphdriver/devmapper/deviceset.go.orig 2019-03-19 09:19:16.592844887 +0100 ++++ docker-18.09.0-checkout/daemon/graphdriver/devmapper/deviceset.go 2019-03-19 09:21:18.019361761 +0100 +@@ -540,8 +539,14 @@ + return err // error text is descriptive enough + } + +- // Check if kernel supports xfs filesystem or not. +- exec.Command("modprobe", "xfs").Run() ++ mountTarget, err := ioutil.TempDir("", "supportsXFS") ++ if err != nil { ++ return errors.Wrapf(err, "error checking for xfs support") ++ } else { ++ /* The mounting will fail--after the module has been loaded.*/ ++ defer os.RemoveAll(mountTarget) ++ unix.Mount("none", mountTarget, "xfs", 0, "") ++ } + + f, err := os.Open("/proc/filesystems") + if err != nil { +--- docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/iptables/iptables.go.orig 2019-03-19 09:47:19.430111170 +0100 ++++ docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/iptables/iptables.go 2019-03-19 10:38:01.445136177 +0100 +@@ -72,11 +71,12 @@ + } + + func probe() { +- if out, err := exec.Command("modprobe", "-va", "nf_nat").CombinedOutput(); err != nil { +- logrus.Warnf("Running modprobe nf_nat failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err) ++ path, err := exec.LookPath("iptables") ++ if err != nil { ++ return + } +- if out, err := exec.Command("modprobe", "-va", "xt_conntrack").CombinedOutput(); err != nil { +- logrus.Warnf("Running modprobe xt_conntrack failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err) ++ if out, err := exec.Command(path, "--wait", "-t", "nat", "-L", "-n").CombinedOutput(); err != nil { ++ logrus.Warnf("Running iptables --wait -t nat -L -n failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err) + } + } + +--- docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/ns/init_linux.go.orig 2019-03-19 11:23:20.738316699 +0100 ++++ docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/ns/init_linux.go 2019-03-19 11:27:57.149753073 +0100 +@@ -100,12 +100,7 @@ + } + + func loadXfrmModules() error { +- if out, err := exec.Command("modprobe", "-va", "xfrm_user").CombinedOutput(); err != nil { +- return fmt.Errorf("Running modprobe xfrm_user failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err) +- } +- if out, err := exec.Command("modprobe", "-va", "xfrm_algo").CombinedOutput(); err != nil { +- return fmt.Errorf("Running modprobe xfrm_algo failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err) +- } ++ // Those are automatically loaded when someone opens the socket anyway. + return nil + } + diff --git a/gnu/packages/patches/emacs-zones-called-interactively.patch b/gnu/packages/patches/emacs-zones-called-interactively.patch new file mode 100644 index 0000000000..b60f390a7e --- /dev/null +++ b/gnu/packages/patches/emacs-zones-called-interactively.patch @@ -0,0 +1,43 @@ +From fb56fbb706804215ef9af0cc575db97c373046c6 Mon Sep 17 00:00:00 2001 +From: Brian Leung +Date: Sun, 17 Mar 2019 01:32:04 +0100 +Subject: [PATCH] This patch silences the byte-compiler. + +--- + zones.el | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/zones.el b/zones.el +index 1bf94f0..94fa9a6 100644 +--- a/zones.el ++++ b/zones.el +@@ -1031,7 +1031,7 @@ You can use `C-x n x' to widen to a previous buffer restriction. + + This is a destructive operation. The list structure of the variable + value can be modified." +- (zz-narrow-advice (interactive-p))) ++ (zz-narrow-advice (called-interactively-p))) + + (defadvice narrow-to-defun (after zz-add-zone--defun activate) + "Push the defun limits to the current `zz-izones-var'. +@@ -1039,7 +1039,7 @@ You can use `C-x n x' to widen to a previous buffer restriction. + + This is a destructive operation. The list structure of the variable + value can be modified." +- (zz-narrow-advice (interactive-p))) ++ (zz-narrow-advice (called-interactively-p))) + + ;; Call `zz-add-zone' if interactive or `zz-add-zone-anyway-p'. + ;; +@@ -1049,7 +1049,7 @@ You can use `C-x n x' to widen to a previous buffer restriction. + + This is a destructive operation. The list structure of the variable + value can be modified." +- (zz-narrow-advice (interactive-p))) ++ (zz-narrow-advice (called-interactively-p))) + + ;;(@* "General Commands") + +-- +2.21.0 + diff --git a/gnu/packages/patches/gtk3-fix-deprecation-macro-use.patch b/gnu/packages/patches/gtk3-fix-deprecation-macro-use.patch new file mode 100644 index 0000000000..e933555ffb --- /dev/null +++ b/gnu/packages/patches/gtk3-fix-deprecation-macro-use.patch @@ -0,0 +1,28 @@ +Copied from . +Fixes upstream bugs +and . + +diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c +index 97ada6d73919fba3dfe192dd66929e90bc7677bb..764e39495f7edb0c3efe41cca25b8bee4778887d 100644 +--- a/gdk/x11/gdkwindow-x11.c ++++ b/gdk/x11/gdkwindow-x11.c +@@ -2985,6 +2985,7 @@ gdk_window_x11_set_background (GdkWindow *window, + double r, g, b, a; + cairo_surface_t *surface; + cairo_matrix_t matrix; ++ cairo_pattern_t *parent_relative_pattern; + + if (GDK_WINDOW_DESTROYED (window)) + return; +@@ -2997,8 +2998,10 @@ gdk_window_x11_set_background (GdkWindow *window, + } + + G_GNUC_BEGIN_IGNORE_DEPRECATIONS +- if (pattern == gdk_x11_get_parent_relative_pattern ()) ++ parent_relative_pattern = gdk_x11_get_parent_relative_pattern (); + G_GNUC_END_IGNORE_DEPRECATIONS ++ ++ if (pattern == parent_relative_pattern) + { + GdkWindow *parent; + diff --git a/gnu/packages/patches/reptyr-fix-gcc-7.patch b/gnu/packages/patches/reptyr-fix-gcc-7.patch deleted file mode 100644 index 5e0e581218..0000000000 --- a/gnu/packages/patches/reptyr-fix-gcc-7.patch +++ /dev/null @@ -1,38 +0,0 @@ -This patch allows reptyr to build with gcc 7. It is taken from reptyr mainline patches -fa0d63f and b45fd92. - -https://github.com/nelhage/reptyr/commit/fa0d63ff8c488be15976e5353580b565e85586a1 -https://github.com/nelhage/reptyr/commit/b45fd9238958fcf2d8f3d6fc23e6d491febea2ac - -Patch by Nelson Elhage . - -diff --git a/attach.c b/attach.c -index bd8ef8c..8d9cbf8 100644 ---- a/attach.c -+++ b/attach.c -@@ -389,8 +389,11 @@ int setup_steal_socket(struct steal_pty_state *steal) { - return errno; - - steal->addr_un.sun_family = AF_UNIX; -- snprintf(steal->addr_un.sun_path, sizeof(steal->addr_un.sun_path), -- "%s/reptyr.sock", steal->tmpdir); -+ if (snprintf(steal->addr_un.sun_path, sizeof(steal->addr_un.sun_path), -+ "%s/reptyr.sock", steal->tmpdir) >= sizeof(steal->addr_un.sun_path)) { -+ error("tmpdir path too long!"); -+ return ENAMETOOLONG; -+ } - - if ((steal->sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0) - return errno; -diff --git a/platform/linux/linux.h b/platform/linux/linux.h -index 9e6b78a..3ec5a99 100644 ---- a/platform/linux/linux.h -+++ b/platform/linux/linux.h -@@ -40,6 +40,7 @@ - #include - #include - #include -+#include - #include - #include - #include diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm index 09f5afbb28..ec669e2e23 100644 --- a/gnu/packages/patchutils.scm +++ b/gnu/packages/patchutils.scm @@ -216,7 +216,7 @@ (define-public patches #:python ,python-2)) ;not compatible with Python 3 (synopsis "Patch tracking tool") (description - "'Patches' is a patch-tracking tool initially written for the QEMU + "@code{Patches} is a patch-tracking tool initially written for the QEMU project. It provides commands that build a database of patches from a mailing list, and commands that can search that database. It allows users to track the status of a patch, apply patches, and search for patches---all that from diff --git a/gnu/packages/perl-check.scm b/gnu/packages/perl-check.scm index aae83e5771..a25c43cc32 100644 --- a/gnu/packages/perl-check.scm +++ b/gnu/packages/perl-check.scm @@ -801,9 +801,10 @@ (define-public perl-test-more-utf8 (home-page "https://metacpan.org/release/Test-More-UTF8") (synopsis "Enhance Test::More for UTF8-based projects") (description "@code{Test::More::UTF8} is a simple extension for the widely -used @code{Test::More} module. By default, it will do a @code{binmode ':utf8'} -on all of @code{Test::Builder}'s output handles thus enabling the easy use -flagged strings without warnings like \"Wide character in print @dots{}\"") +used @code{Test::More} module. By default, it will do a @code{binmode +@code{:utf8}} on all of @code{Test::Builder}'s output handles thus enabling the +easy use flagged strings without warnings like \"Wide character in print +@dots{}\"") (license perl-license))) (define-public perl-test-most diff --git a/gnu/packages/perl-web.scm b/gnu/packages/perl-web.scm index c1af1d2caf..6ced2d160e 100644 --- a/gnu/packages/perl-web.scm +++ b/gnu/packages/perl-web.scm @@ -55,7 +55,7 @@ (define-public perl-uri-escape (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/URI-" + (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/URI-" version ".tar.gz")) (sha256 (base32 diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 8c28c94ed9..ff387354e7 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -18,7 +18,7 @@ ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2017 Leo Famulari ;;; Copyright © 2017 Christopher Allan Webber -;;; Copyright © 2018 Oleg Pykhalov +;;; Copyright © 2018, 2019 Oleg Pykhalov ;;; Copyright © 2018, 2019 Pierre Neidhardt ;;; Copyright © 2018 Kei Kebreau ;;; @@ -387,7 +387,7 @@ (define-public perl-base (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/R/RG/RGARCIA/" + (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/" "base-" version ".tar.gz")) (sha256 (base32 "1pjxcbbcpwlgzm0fzsbqd58zn8cj9vwril1wn3xfd7ws550mixa0")))) @@ -733,7 +733,7 @@ (define-public perl-carp (source (origin (method url-fetch) (uri (string-append - "mirror://cpan/authors/id/R/RJ/RJBS/Carp-" + "mirror://cpan/authors/id/X/XS/XSAWYERX/Carp-" version ".tar.gz")) (sha256 (base32 @@ -821,7 +821,7 @@ (define-public perl-carp-clan (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/K/KE/KENTNL/" + (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" "Carp-Clan-" version ".tar.gz")) (sha256 (base32 @@ -911,7 +911,7 @@ (define-public perl-class-accessor-grouped (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/" + (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/" "Class-Accessor-Grouped-" version ".tar.gz")) (sha256 (base32 "1fy48hx56n5kdn1gz66awg465qf34r0n5jam64x7zxh9zhzb1m9m")))) @@ -981,7 +981,7 @@ (define-public perl-class-c3-componentised (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/F/FR/FREW/" + (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/" "Class-C3-Componentised-" version ".tar.gz")) (sha256 (base32 "14wn1g45z3b5apqq7dcai5drk01hfyqydsd2m6hsxzhyvi3b2l9h")))) @@ -1027,7 +1027,7 @@ (define-public perl-class-date (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/S/SZ/SZABGAB/" + (uri (string-append "mirror://cpan/authors/id/Y/YA/YANICK/" "Class-Date-" version ".tar.gz")) (sha256 (base32 "1h7dfjxkpqbfymrf1bn7699i4fx6pbv5wvvi5zszfr8sqqkax1yf")))) @@ -1190,11 +1190,11 @@ (define-public perl-class-method-modifiers ("perl-test-requires" ,perl-test-requires))) (home-page "https://metacpan.org/release/Class-Method-Modifiers") (synopsis "Moose-like method modifiers") - (description "Class::Method::Modifiers provides three modifiers: 'before', -'around', and 'after'. 'before' and 'after' are run just before and after the -method they modify, but can not really affect that original method. 'around' -is run in place of the original method, with a hook to easily call that -original method.") + (description "Class::Method::Modifiers provides three modifiers: +@code{before}, @code{around}, and @code{after}. @code{before} and @code{after} +are run just before and after the method they modify, but can not really affect +that original method. @code{around} is run in place of the original method, +with a hook to easily call that original method.") (license (package-license perl)))) (define-public perl-class-singleton @@ -2216,7 +2216,7 @@ (define-public perl-datetime-calendar-julian (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/P/PI/PIJLL/" + (uri (string-append "mirror://cpan/authors/id/W/WY/WYANT/" "DateTime-Calendar-Julian-" version ".tar.gz")) (sha256 (base32 "0gbw7rh706qk5jlmmz3yzsm0ilzp39kyar28g4j6d57my8cwaipx")))) @@ -2938,7 +2938,7 @@ (define-public perl-digest-sha1 (build-system perl-build-system) (synopsis "Perl implementation of the SHA-1 message digest algorithm") (description - "This package provides 'Digest::SHA1', an implementation of the NIST + "This package provides @code{Digest::SHA1}, an implementation of the NIST SHA-1 message digest algorithm for use by Perl programs.") (home-page "https://metacpan.org/release/Digest-SHA1") (license (package-license perl)))) @@ -3481,7 +3481,7 @@ (define-public perl-file-homedir (home-page "https://metacpan.org/release/File-HomeDir") (synopsis "Find your home and other directories on any platform") (description "File::HomeDir is a module for locating the directories that -are \"owned\" by a user (typically your user) and to solve the various issues +are @code{owned} by a user (typically your user) and to solve the various issues that arise trying to find them consistently across a wide variety of platforms.") (license (package-license perl)))) @@ -3747,7 +3747,7 @@ (define-public perl-file-temp (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/" + (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" "File-Temp-" version ".tar.gz")) (sha256 (base32 "0pr3wrxrk93wy7dz9gsb1sgl77icrs8rh2mah6wms5cdi2ll5ch1")))) @@ -4266,8 +4266,8 @@ (define-public perl-io-tty (home-page "https://metacpan.org/release/IO-Tty") (synopsis "Perl interface to pseudo ttys") (description - "This package provides the 'IO::Pty' and 'IO::Tty' Perl interfaces to -pseudo ttys.") + "This package provides the @code{IO::Pty} and @code{IO::Tty} Perl +interfaces to pseudo ttys.") (license (package-license perl)))) (define-public perl-ipc-cmd @@ -4515,7 +4515,7 @@ (define-public perl-log-any (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/Log-Any-" + (uri (string-append "mirror://cpan/authors/id/P/PR/PREACTION/Log-Any-" version ".tar.gz")) (sha256 (base32 "1wb55ib4gvk8h5pjb6hliqg7li1xjk420q3w5r33f9p1ps60ylbl")))) @@ -4533,7 +4533,7 @@ (define-public perl-log-any @code{Log::Any} has a very tiny footprint and no dependencies beyond Perl itself, which makes it appropriate for even small CPAN modules to use. It -defaults to 'null' logging activity, so a module can safely log without +defaults to @code{null} logging activity, so a module can safely log without worrying about whether the application has chosen (or will ever choose) a logging mechanism.") (license (package-license perl)))) @@ -4606,7 +4606,7 @@ (define-public perl-log-report-optional "This module allows libraries to have a dependency to a small module instead of the full Log-Report distribution. The full power of @code{Log::Report} is only released when the main program uses that module. -In that case, the module using the 'Optional' will also use the full +In that case, the module using the @code{Optional} will also use the full @code{Log::Report}, otherwise the dressed-down @code{Log::Report::Minimal} version.") (license (package-license perl)))) @@ -5274,7 +5274,7 @@ (define-public perl-module-pluggable (home-page "https://metacpan.org/release/Module-Pluggable") (synopsis "Give your Perl module the ability to have plugins") (description "This module provides a simple but extensible way of having -'plugins' for your Perl module.") +@code{plugins} for your Perl module.") (license (package-license perl)))) (define-public perl-module-runtime @@ -5516,7 +5516,7 @@ (define-public perl-moosex-emulate-class-accessor-fast (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/" + (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/" "MooseX-Emulate-Class-Accessor-Fast-" version ".tar.gz")) (sha256 @@ -6226,7 +6226,7 @@ (define-public perl-mouse (source (origin (method url-fetch) (uri (string-append - "mirror://cpan/authors/id/S/SY/SYOHEX/Mouse-v" + "mirror://cpan/authors/id/S/SK/SKAJI/Mouse-v" version ".tar.gz")) (sha256 @@ -6540,7 +6540,7 @@ (define-public perl-object-signature (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/A/AD/ADAMK/" + (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" "Object-Signature-" version ".tar.gz")) (sha256 (base32 "12k90c19ly93ib1p6sm3k7sbnr2h5dbywkdmnff2ngm99p4m68c4")))) @@ -6635,7 +6635,7 @@ (define-public perl-package-stash (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/" + (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" "Package-Stash-" version ".tar.gz")) (sha256 (base32 "0zrs4byhlpq5ybnl0fd3y6pfzair6i2dyvzn7f7a7pgj9n2fi3n5")))) @@ -6663,7 +6663,7 @@ (define-public perl-package-stash-xs (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/" + (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" "Package-Stash-XS-" version ".tar.gz")) (sha256 (base32 "1akqk10qxwk798qppajqbczwmhy4cs9g0lg961m3vq218slnnryk")))) @@ -7130,7 +7130,7 @@ (define-public perl-regexp-common (build-system perl-build-system) (synopsis "Provide commonly requested regular expressions") (description - "This module exports a single hash (`%RE') that stores or generates + "This module exports a single hash (@code{%RE}) that stores or generates commonly needed regular expressions. Patterns currently provided include: balanced parentheses and brackets, delimited text (with escapes), integers and floating-point numbers in any base (up to 36), comments in 44 languages, @@ -7790,7 +7790,7 @@ (define-public perl-svg (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/S/SZ/SZABGAB/SVG-" + (uri (string-append "mirror://cpan/authors/id/M/MA/MANWAR/SVG-" version ".tar.gz")) (sha256 (base32 "1br8dwh2363s6r0qgy7vv30gv5kj456vj5m6x83savx4wzfnsggc")))) @@ -8612,7 +8612,7 @@ (define-public perl-time-hires (source (origin (method url-fetch) (uri (string-append - "mirror://cpan/authors/id/J/JH/JHI/Time-HiRes-" + "mirror://cpan/authors/id/A/AT/ATOOMIC/Time-HiRes-" version ".tar.gz")) (sha256 (base32 diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm index f227786e8d..33c1686088 100644 --- a/gnu/packages/perl6.scm +++ b/gnu/packages/perl6.scm @@ -331,11 +331,12 @@ (define-public perl6-json-class (synopsis "Provide simple serialisation/deserialisation of objects to/from JSON") (description "This is a simple role that provides methods to instantiate a class from a JSON string that (hopefully,) represents it, and to serialise an -object of the class to a JSON string. The JSON created from an instance should -round trip to a new instance with the same values for the @quot{public -attributes}. @quot{Private} attributes (that is ones without accessors,) will -be ignored for both serialisation and de-serialisation. The exact behaviour -depends on that of @code{JSON::Marshal} and @code{JSON::Unmarshal} respectively.") +object of the class to a JSON string. The JSON created from an instance +should round trip to a new instance with the same values for the public +attributes. Private attributes (that is ones without accessors,) will be +ignored for both serialisation and de-serialisation. The exact behaviour +depends on that of @code{JSON::Marshal} and @code{JSON::Unmarshal} +respectively.") (license license:artistic2.0))) (define-public perl6-json-fast @@ -492,13 +493,13 @@ (define-public perl6-meta6 specification - the META file data can be read, created, parsed and written in a manner that is conformant with the specification. -Where they are known about it also makes allowance for @quot{customary} usage in +Where they are known about it also makes allowance for customary usage in existing software (such as installers and so forth.) -The intent of this is allow the generation and testing of META files for module -authors, so it can provide meta-information whether the attributes are mandatory -as per the spec and where known the places that @quot{customary} attributes are -used.") +The intent of this is allow the generation and testing of META files for +module authors, so it can provide meta-information whether the attributes are +mandatory as per the spec and where known the places that customary attributes +are used.") (license license:artistic2.0))) (define-public perl6-mime-base64 diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index f2cabec39a..69ec69548b 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -204,10 +204,13 @@ (define-public gphoto2 ;; Files are typically under LGPLv2+, but 'COPYING' says GPLv2+. (license license:gpl2+))) +;; Note: See for the latest +;; release. The versions at +;; are not meant for production use according to the Changes file. (define-public perl-image-exiftool (package (name "perl-image-exiftool") - (version "11.31") + (version "11.30") (source (origin (method url-fetch) @@ -218,7 +221,7 @@ (define-public perl-image-exiftool (string-append "https://www.sno.phy.queensu.ca/~phil/exiftool/" "Image-ExifTool-" version ".tar.gz"))) (sha256 - (base32 "1kplb7hvhrhqxkr4ddc44q7a3fs0r8svv2jlh325nwkfi7aa5kz5")))) + (base32 "0vkjb2c1a3jdlq8rx1jywx4p3f1bmgjn7rzfwx6dxgij2lx76lrs")))) (build-system perl-build-system) (arguments '(#:phases diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm index 8d96e54c90..ea002f8c59 100644 --- a/gnu/packages/php.scm +++ b/gnu/packages/php.scm @@ -86,7 +86,7 @@ (define-public php #t)))) (build-system gnu-build-system) (arguments - '(#:configure-flags + `(#:configure-flags (let-syntax ((with (syntax-rules () ((_ option input) (string-append option "=" @@ -182,6 +182,18 @@ (define-public php (substitute* "ext/standard/tests/streams/bug60602.phpt" (("'ls'") (string-append "'" (which "ls") "'"))) + ,@(if (string-prefix? "arm" (or (%current-system) + (%current-target-system))) + ;; Drop tests known to fail on armhf. + '((for-each delete-file + (list + "ext/calendar/tests/unixtojd_error1.phpt" + ;; arm can be a lot slower, so a time-related test fails + "ext/fileinfo/tests/cve-2014-3538-nojit.phpt" + "ext/pcre/tests/bug76514.phpt" + "ext/pcre/tests/preg_match_error3.phpt"))) + '()) + ;; Drop tests that are known to fail. (for-each delete-file '("ext/posix/tests/posix_getgrgid.phpt" ; Requires /etc/group. diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm index 34793db58b..346d3660d5 100644 --- a/gnu/packages/pretty-print.scm +++ b/gnu/packages/pretty-print.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2017 Marius Bakke ;;; Copyright © 2017 Ludovic Courtès ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice +;;; Copyright © 2019 Meiyo Peng ;;; ;;; This file is part of GNU Guix. ;;; @@ -162,7 +163,7 @@ (define-public enscript (define-public fmt (package (name "fmt") - (version "4.1.0") + (version "5.3.0") (source (origin (method url-fetch) (uri (string-append @@ -170,14 +171,10 @@ (define-public fmt version "/fmt-" version ".zip")) (sha256 (base32 - "1swyqw3dn2vx5sw2yh5vk0vrvrkp7fv07cj4272yxl5rrq1byjcx")))) + "0p51nhmvjniqlffmmb9djhprnclvm448f2vkdxymvxw307hl21sc")))) (build-system cmake-build-system) (native-inputs `(("unzip" ,unzip))) - (arguments - `(#:configure-flags - (list (string-append "-DCMAKE_INSTALL_LIBDIR=" - (assoc-ref %outputs "out") "/lib")))) (home-page "http://fmtlib.net/") (synopsis "Small and fast C++ formatting library") (description diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 1968c987df..366f8a0af2 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -2765,14 +2765,14 @@ (define-public python-pydocstyle (define-public python-language-server (package (name "python-language-server") - (version "0.25.0") + (version "0.26.1") (source (origin (method url-fetch) (uri (pypi-uri "python-language-server" version)) (sha256 (base32 - "1xabnaqd4n72myrc3mxl2y33vr2p7c9c5a87n77p9k327ckvdx01")))) + "1vs9ckfmm534n1hq3m871916wsjvi5h4gyj6wlzg13ck6506lx0s")))) (build-system python-build-system) (propagated-inputs `(("python-pluggy" ,python-pluggy) @@ -5641,7 +5641,7 @@ (define-public python-backports-abc (synopsis "Backport of additions to the 'collections.abc' module") (description "Python-backports-abc provides a backport of additions to the -'collections.abc' module in Python-3.5.") +@code{collections.abc} module in Python-3.5.") (license license:psfl))) (define-public python2-backports-abc @@ -6072,14 +6072,14 @@ (define-public python2-mistune (define-public python-markdown (package (name "python-markdown") - (version "3.0.1") + (version "3.1") (source (origin (method url-fetch) (uri (pypi-uri "Markdown" version)) (sha256 (base32 - "0z6v8649sr434d5r5zmrhydka7v7f9yas4bwcgkcs0650jdhybnh")))) + "0l62x154r9mgdvfap06gf0nkrmjd7xixlfshsxcdif2nlrlnyjpw")))) (build-system python-build-system) (native-inputs `(("python-nose" ,python-nose) @@ -6872,7 +6872,9 @@ (define-public python-file (string-append "'" file "/lib/libmagic.so'"))) #t)))))) (inputs `(("file" ,file))) - (self-native-input? #f) + (native-inputs (if (%current-target-system) + `(("self" ,this-package)) + '())) (synopsis "Python bindings to the libmagic file type guesser. Note that this module and the python-magic module both provide a \"magic.py\" file; these two modules, which are different and were developed separately, both @@ -10336,12 +10338,12 @@ (define-public python-natsort (description "Natsort lets you apply natural sorting on lists instead of lexicographical. If you use the built-in @code{sorted} method in python -on a list such as @code{['a20', 'a9', 'a1', 'a4', 'a10']}, it would be -returned as @code{['a1', 'a10', 'a20', 'a4', 'a9']}. Natsort provides a -function @code{natsorted} that identifies numbers and sorts them separately -from strings. It can also sort version numbers, real numbers, mixed types -and more, and comes with a shell command @command{natsort} that exposes this -functionality in the command line.") +on a list such as @code{[@code{a20}, @code{a9}, @code{a1}, @code{a4}, +@code{a10}]}, it would be returned as @code{[@code{a1}, @code{a10}, @code{a20}, +@code{a4}, @code{a9}]}. Natsort provides a function @code{natsorted} that +identifies numbers and sorts them separately from strings. It can also sort +version numbers, real numbers, mixed types and more, and comes with a shell +command @command{natsort} that exposes this functionality in the command line.") (license license:expat) (properties `((python2-variant . ,(delay python2-natsort)))))) @@ -10833,16 +10835,17 @@ (define-public python2-argcomplete (define-public python-xopen (package (name "python-xopen") - (version "0.3.3") + (version "0.5.0") (source (origin (method url-fetch) (uri (pypi-uri "xopen" version)) (sha256 (base32 - "1a0wbil552wsmklwd89ssmgz3pjd86qa9i7jh8wqb9wslc8a2qjr")) - (file-name (string-append name "-" version ".tar.gz")))) + "17xbrgi23l87yg6h0qcknssp2q812miiy33qw6v45v5gx0jwv5xh")))) (build-system python-build-system) + (propagated-inputs + `(("python-setuptools-scm" ,python-setuptools-scm))) (home-page "https://github.com/marcelm/xopen/") (synopsis "Open compressed files transparently") (description "This module provides an @code{xopen} function that works like @@ -14591,14 +14594,14 @@ (define-public python-numba (define-public python-anndata (package (name "python-anndata") - (version "0.6.9") + (version "0.6.18") (source (origin (method url-fetch) (uri (pypi-uri "anndata" version)) (sha256 (base32 - "1fh461xyyc7pcrjfgd013bdc2alf53r46ss3gfw3431mbb1gappi")))) + "03x83yjaccbqszj7x4fwwmpil0ai59yx64d1zmf2691za3j03w73")))) (build-system python-build-system) (propagated-inputs `(("python-h5py" ,python-h5py) @@ -15271,3 +15274,26 @@ (define-public python-toolshed (description "This is a collection of well-tested, simple modules and functions that aim to reduce boilerplate when working with data.") (license license:bsd-2))) + +(define-public python-annoy + (package + (name "python-annoy") + (version "1.15.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "annoy" version)) + (sha256 + (base32 + "1rxn6snn0r32r07g45hdjhh8aa1xzx6fjrm8g62d8vzp46z7rzrp")))) + (build-system python-build-system) + (native-inputs + `(("python-nose" ,python-nose))) + (home-page "https://github.com/spotify/annoy/") + (synopsis "Approximate nearest neighbors library") + (description + "Annoy is a C++ library with Python bindings to search for points in +space that are close to a given query point. It also creates large read-only +file-based data structures that are @code{mmap}ped into memory so that many +processes may share the same data.") + (license license:asl2.0))) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 87d92765f4..5b463f510f 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -96,6 +96,18 @@ (define-public grantlee (arguments `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'delete-broken-tests + (lambda _ + ;; TODO: Two date tests (for date01 and date02) fail for unknown + ;; reasons. + ;; Actual (result): "" + ;; Expected (output): "01" + ;; Actual (result): "" + ;; Expected (output): "Jan. 1, 2008" + (delete-file "templates/tests/testfilters.cpp") + (substitute* "templates/tests/CMakeLists.txt" + (("testfilters") "")) + #t)) (add-before 'check 'check-setup (lambda _ ;; make Qt render "offscreen", required for tests diff --git a/gnu/packages/ratpoison.scm b/gnu/packages/ratpoison.scm index fefde982bc..42e17b63d9 100644 --- a/gnu/packages/ratpoison.scm +++ b/gnu/packages/ratpoison.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2019 Ludovic Courtès ;;; Copyright © 2015 Mathieu Lirzin ;;; Copyright © 2017 Mathieu Othacehe ;;; @@ -30,17 +30,6 @@ (define-module (gnu packages ratpoison) #:use-module (gnu packages pkg-config) #:use-module (gnu packages fontutils)) -(define ratpoison.desktop - (origin - (method url-fetch) - (uri (string-append "https://sources.gentoo.org/cgi-bin/viewvc.cgi/" - "gentoo-x86/x11-wm/ratpoison/files/ratpoison.desktop" - "?revision=1.1")) - (file-name "ratpoison.desktop") - (sha256 - (base32 - "1rh3f4c3rhn6q2hmkraam0831xqcqyj3qkqf019ahaxsxaan3553")))) - (define-public ratpoison (package (name "ratpoison") @@ -55,17 +44,28 @@ (define-public ratpoison (patches (search-patches "ratpoison-shell.patch")))) (build-system gnu-build-system) (arguments - '(#:phases + `(#:modules ((ice-9 format) + ,@%gnu-build-system-modules) + #:phases (modify-phases %standard-phases (add-after 'install 'install-xsession - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((rpd "ratpoison.desktop") - (dst (string-append (assoc-ref outputs "out") - "/share/xsessions/"))) - (mkdir-p dst) - (copy-file (assoc-ref inputs rpd) - (string-append dst rpd)) - #t)))))) + (lambda* (#:key outputs #:allow-other-keys) + ;; Add a .desktop file to xsessions. + (let* ((output (assoc-ref outputs "out")) + (xsessions (string-append output "/share/xsessions"))) + (mkdir-p xsessions) + (call-with-output-file (string-append xsessions + "/ratpoison.desktop") + (lambda (port) + (format port + "[Desktop Entry]~@ + Name=ratpoison~@ + Comment=Tiling window manager: say goodbye to the rodent!~@ + Exec=~a/bin/ratpoison~@ + TryExec=~@*~a/bin/ratpoison~@ + Type=Application~%" + output))) + #t)))))) (inputs `(("fontconfig" ,fontconfig) ("freetype" ,freetype) @@ -80,8 +80,7 @@ (define-public ratpoison ("xorgproto" ,xorgproto))) (native-inputs `(("perl" ,perl) - ("pkg-config" ,pkg-config) - ("ratpoison.desktop" ,ratpoison.desktop))) + ("pkg-config" ,pkg-config))) (home-page "https://www.nongnu.org/ratpoison/") (synopsis "Simple mouse-free tiling window manager") (description diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index cb75005a13..7b76858a9f 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -70,7 +70,10 @@ (define* (nix-system->gnu-triplet-for-rust (_ (nix-system->gnu-triplet system)))) -(define* (rust-source version hash #:key (patches '())) +(define* (rust-source-pre-1.32 version hash + #:key + (patches '()) + (patch-flags '("-p1"))) (origin (method url-fetch) (uri (string-append "https://static.rust-lang.org/dist/" @@ -78,16 +81,51 @@ (define* (rust-source version hash #:key (patches '())) (sha256 (base32 hash)) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "src/llvm") #t)) - (patches (map search-patch patches)))) + (patches (map search-patch patches)) + (patch-flags patch-flags))) + +(define* (rust-bootstrapped-package-pre-1.32 base-rust version checksum + #:key + (patches '()) + (patch-flags '("-p1"))) + "Bootstrap rust VERSION with source checksum CHECKSUM patched with PATCHES using BASE-RUST. +Specific to rust versions before 1.32." + (package + (inherit base-rust) + (version version) + (source + (rust-source-pre-1.32 version checksum #:patches patches #:patch-flags patch-flags)) + (native-inputs + (alist-replace "cargo-bootstrap" (list base-rust "cargo") + (alist-replace "rustc-bootstrap" (list base-rust) + (package-native-inputs base-rust)))))) + +(define* (rust-source version hash + #:key + (patches '()) + (patch-flags '("-p1"))) + (origin + (method url-fetch) + (uri (string-append "https://static.rust-lang.org/dist/" + "rustc-" version "-src.tar.gz")) + (sha256 (base32 hash)) + (modules '((guix build utils))) + (snippet '(begin (delete-file-recursively "src/llvm") + (delete-file-recursively "vendor/jemalloc-sys/jemalloc") + #t)) + (patches (map search-patch patches)) + (patch-flags patch-flags))) (define* (rust-bootstrapped-package base-rust version checksum - #:key (patches '())) + #:key + (patches '()) + (patch-flags '("-p1"))) "Bootstrap rust VERSION with source checksum CHECKSUM patched with PATCHES using BASE-RUST." (package (inherit base-rust) (version version) (source - (rust-source version checksum #:patches patches)) + (rust-source version checksum #:patches patches #:patch-flags patch-flags)) (native-inputs (alist-replace "cargo-bootstrap" (list base-rust "cargo") (alist-replace "rustc-bootstrap" (list base-rust) @@ -118,7 +156,7 @@ (define-public mrustc ("flex" ,flex) ;; Required for the libstd sources. ("rustc" - ,(rust-source "1.19.0" "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")))) + ,(rust-source-pre-1.32 "1.19.0" "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")))) (arguments `(#:test-target "local_tests" #:make-flags (list (string-append "LLVM_CONFIG=" @@ -191,7 +229,7 @@ (define rust-1.19 (package (name "rust") (version "1.19.0") - (source (rust-source version "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm" + (source (rust-source-pre-1.32 version "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm" #:patches '("rust-1.19-mrustc.patch"))) (outputs '("out" "cargo")) (properties '((timeout . 72000) ;20 hours @@ -427,7 +465,7 @@ (define rust-1.19 (define-public rust-1.20 (let ((base-rust - (rust-bootstrapped-package rust-1.19 "1.20.0" + (rust-bootstrapped-package-pre-1.32 rust-1.19 "1.20.0" "0542y4rnzlsrricai130mqyxl8r6rd991frb4qsnwb27yigqg91a"))) (package (inherit base-rust) @@ -572,7 +610,7 @@ (define-public rust-1.20 #t)))))))))) (define-public rust-1.21 - (let ((base-rust (rust-bootstrapped-package rust-1.20 "1.21.0" + (let ((base-rust (rust-bootstrapped-package-pre-1.32 rust-1.20 "1.21.0" "1yj8lnxybjrybp00fqhxw8fpr641dh8wcn9mk44xjnsb4i1c21qp"))) (package (inherit base-rust) @@ -588,7 +626,7 @@ (define-public rust-1.21 #t))))))))) (define-public rust-1.22 - (let ((base-rust (rust-bootstrapped-package rust-1.21 "1.22.1" + (let ((base-rust (rust-bootstrapped-package-pre-1.32 rust-1.21 "1.22.1" "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))) (package (inherit base-rust) @@ -604,7 +642,7 @@ (define-public rust-1.22 #t))))))))) (define-public rust-1.23 - (let ((base-rust (rust-bootstrapped-package rust-1.22 "1.23.0" + (let ((base-rust (rust-bootstrapped-package-pre-1.32 rust-1.22 "1.23.0" "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))) (package (inherit base-rust) @@ -623,8 +661,8 @@ (define-public rust-1.23 (define-public rust-1.24 (let ((base-rust - (rust-bootstrapped-package rust-1.23 "1.24.1" - "1vv10x2h9kq7fxh2v01damdq8pvlp5acyh1kzcda9sfjx12kv99y"))) + (rust-bootstrapped-package-pre-1.32 rust-1.23 "1.24.1" + "1vv10x2h9kq7fxh2v01damdq8pvlp5acyh1kzcda9sfjx12kv99y"))) (package (inherit base-rust) (arguments @@ -645,7 +683,7 @@ (define-public rust-1.24 ;;; Keep using llvm 3.9.1 until builds become determenistic (define-public rust-1.25 (let ((base-rust - (rust-bootstrapped-package rust-1.24 "1.25.0" + (rust-bootstrapped-package-pre-1.32 rust-1.24 "1.25.0" "0baxjr99311lvwdq0s38bipbnj72pn6fgbk6lcq7j555xq53mxpf" #:patches '("rust-1.25-accept-more-detailed-gdb-lines.patch")))) (package @@ -676,7 +714,7 @@ (define-public rust-1.25 (define-public rust-1.26 (let ((base-rust - (rust-bootstrapped-package rust-1.25 "1.26.2" + (rust-bootstrapped-package-pre-1.32 rust-1.25 "1.26.2" "0047ais0fvmqvngqkdsxgrzhb0kljg8wy85b01kbbjc88hqcz7pv" #:patches '("rust-coresimd-doctest.patch" "rust-1.25-accept-more-detailed-gdb-lines.patch")))) @@ -731,13 +769,13 @@ (define-public rust-1.26 (define-public rust-1.27 (let ((base-rust - (rust-bootstrapped-package rust-1.26 "1.27.2" - "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs" - #:patches - '("rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch")))) + (rust-bootstrapped-package-pre-1.32 rust-1.26 "1.27.2" + "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs" + #:patches + '("rust-coresimd-doctest.patch" + "rust-bootstrap-stage0-test.patch" + "rust-1.25-accept-more-detailed-gdb-lines.patch" + "rust-reproducible-builds.patch")))) (package (inherit base-rust) (arguments @@ -760,13 +798,13 @@ (define-public rust-1.27 (define-public rust-1.28 (let ((base-rust - (rust-bootstrapped-package rust-1.27 "1.28.0" - "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx" - #:patches - '("rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch")))) + (rust-bootstrapped-package-pre-1.32 rust-1.27 "1.28.0" + "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx" + #:patches + '("rust-coresimd-doctest.patch" + "rust-bootstrap-stage0-test.patch" + "rust-1.25-accept-more-detailed-gdb-lines.patch" + "rust-reproducible-builds.patch")))) (package (inherit base-rust) (inputs @@ -794,22 +832,22 @@ (define-public rust-1.28 (define-public rust-1.29 (let ((base-rust - (rust-bootstrapped-package rust-1.28 "1.29.2" - "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h" - #:patches - '("rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch")))) + (rust-bootstrapped-package-pre-1.32 rust-1.28 "1.29.2" + "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h" + #:patches + '("rust-1.25-accept-more-detailed-gdb-lines.patch" + "rust-reproducible-builds.patch")))) (package (inherit base-rust)))) (define-public rust-1.30 (let ((base-rust - (rust-bootstrapped-package rust-1.29 "1.30.1" - "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn" - #:patches - '("rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-1.30-gdb-llvm.patch" - "rust-reproducible-builds.patch")))) + (rust-bootstrapped-package-pre-1.32 rust-1.29 "1.30.1" + "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn" + #:patches + '("rust-1.25-accept-more-detailed-gdb-lines.patch" + "rust-1.30-gdb-llvm.patch" + "rust-reproducible-builds.patch")))) (package (inherit base-rust) (inputs @@ -842,18 +880,21 @@ (define-public rust-1.30 (("fn include") "#[ignore]\nfn include") (("fn exclude") "#[ignore]\nfn exclude")) #t)) - ;; Appears that this test isn't currently running and has been - ;; moved elsewhere, so the patch doesn't apply. - (delete 'disable-amd64-avx-test)))))))) + ;; The test has been moved elsewhere. + (replace 'disable-amd64-avx-test + (lambda _ + (substitute* "src/test/ui/run-pass/issues/issue-44056.rs" + (("only-x86_64") "ignore-test")) + #t))))))))) -(define-public rust +(define-public rust-1.31 (let ((base-rust - (rust-bootstrapped-package rust-1.30 "1.31.1" - "0sk84ff0cklybcp0jbbxcw7lk7mrm6kb6km5nzd6m64dy0igrlli" - #:patches - '("rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-1.30-gdb-llvm.patch" - "rust-reproducible-builds.patch")))) + (rust-bootstrapped-package-pre-1.32 rust-1.30 "1.31.1" + "0sk84ff0cklybcp0jbbxcw7lk7mrm6kb6km5nzd6m64dy0igrlli" + #:patches + '("rust-1.25-accept-more-detailed-gdb-lines.patch" + "rust-1.30-gdb-llvm.patch" + "rust-reproducible-builds.patch")))) (package (inherit base-rust) (arguments @@ -875,6 +916,12 @@ (define-public rust ((" Command::new\\(\"echo\"\\)") (string-append "\nCommand::new(\"" coreutils "/bin/echo\")\n"))) #t))) + ;; The test has been moved elsewhere. + (replace 'disable-amd64-avx-test + (lambda _ + (substitute* "src/test/ui/issues/issue-44056.rs" + (("only-x86_64") "ignore-test")) + #t)) (add-after 'patch-tests 'patch-process-docs-rev-cmd (lambda* _ ;; Disable some doc tests which depend on the "rev" command @@ -882,3 +929,56 @@ (define-public rust (substitute* "src/libstd/process.rs" (("```rust") "```rust,no_run")) #t))))))))) + +(define-public rust + (let ((base-rust + (rust-bootstrapped-package rust-1.31 "1.32.0" + "0ji2l9xv53y27xy72qagggvq47gayr5lcv2jwvmfirx029vlqnac" + #:patches '("rust-reproducible-builds.patch") + ;; the vendor directory has moved to the root of + ;; the tarball, so we have to strip an extra prefix + #:patch-flags '("-p2")))) + (package + (inherit base-rust) + (inputs + ;; Downgrade to LLVM 6, all LTO tests appear to fail with LLVM 7.0.1 + (alist-replace "llvm" (list llvm-6) + (package-inputs base-rust))) + (arguments + (substitute-keyword-arguments (package-arguments base-rust) + ((#:phases phases) + `(modify-phases ,phases + ;; Cargo.lock and the vendor/ directory have been moved to the + ;; root of the rust tarball + (replace 'patch-cargo-checksums + (lambda* _ + (substitute* "Cargo.lock" + (("(\"checksum .* = )\".*\"" all name) + (string-append name "\"" ,%cargo-reference-hash "\""))) + (for-each + (lambda (filename) + (use-modules (guix build cargo-utils)) + (delete-file filename) + (let* ((dir (dirname filename))) + (display (string-append + "patch-cargo-checksums: generate-checksums for " + dir "\n")) + (generate-checksums dir ,%cargo-reference-project-file))) + (find-files "vendor" ".cargo-checksum.json")) + #t)) + (add-after 'enable-codegen-tests 'override-jemalloc + (lambda* (#:key inputs #:allow-other-keys) + ;; The compiler is no longer directly built against jemalloc, + ;; but rather via the jemalloc-sys crate (which vendors the + ;; jemalloc source). To use jemalloc we must enable linking to + ;; it (otherwise it would use the system allocator), and set + ;; an environment variable pointing to the compiled jemalloc. + (substitute* "config.toml" + (("^jemalloc =.*$") "") + (("[[]rust[]]") "\n[rust]\njemalloc=true\n")) + (setenv "JEMALLOC_OVERRIDE" (string-append (assoc-ref inputs "jemalloc") + "/lib/libjemalloc_pic.a")) + #t)) + ;; Remove no longer relevant steps + (delete 'remove-flaky-test) + (delete 'patch-aarch64-test)))))))) diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index f4bd0e3f11..2ebbc29a79 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -144,7 +144,7 @@ (define (install dir) (home-page "https://github.com/ndevilla/iniparser") (synopsis "Standalone ini file parsing library") (description - "iniparser is a free stand-alone `ini' file parsing library (Windows + "iniparser is a free stand-alone @code{ini} file parsing library (Windows configuration files). It is written in portable ANSI C and should compile anywhere.") (license x11))) diff --git a/gnu/packages/screen.scm b/gnu/packages/screen.scm index 38df2594f2..7763354158 100644 --- a/gnu/packages/screen.scm +++ b/gnu/packages/screen.scm @@ -2,10 +2,10 @@ ;;; Copyright © 2013 Cyril Roelandt ;;; Copyright © 2014 Mark H Weaver ;;; Copyright © 2015, 2017 Eric Bavier -;;; Copyright © 2016, 2017 Efraim Flashner +;;; Copyright © 2016, 2017, 2019 Efraim Flashner ;;; Copyright © 2016 Alex Griffin ;;; Copyright © 2017 Mathieu Othacehe -;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice +;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,10 +23,10 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages screen) - #:use-module (srfi srfi-1) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages ncurses) @@ -153,23 +153,27 @@ (define-public byobu (define-public reptyr (package (name "reptyr") - (version "0.6.2") + (version "0.7.0") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/nelhage/reptyr/archive" - "/reptyr-" version ".tar.gz")) - ;; XXX: To be removed on next reptyr release. - (patches (search-patches "reptyr-fix-gcc-7.patch")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/nelhage/reptyr.git") + (commit (string-append "reptyr-" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "07pfl0rkgm8m3f3jy8r9l2yvnhf8lgllpsk3mh57mhzdxq8fagf7")))) + (base32 "1hnijfz1ab34j2h2cxc3f43rmbclyihgn9x9wxa7jqqgb2xm71hj")))) (build-system gnu-build-system) (arguments - '(#:tests? #f ; no tests - #:make-flags (list "CC=gcc" - (string-append "PREFIX=" %output)) - #:phases (modify-phases %standard-phases (delete 'configure)))) + '(#:tests? #f ; no tests + #:make-flags + (list "CC=gcc" + (string-append "PREFIX=" (assoc-ref %outputs "out")) + (string-append "BASHCOMPDIR=" (assoc-ref %outputs "out") + "/etc/bash_completion.d")) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) ; no configure script (home-page "https://github.com/nelhage/reptyr") (synopsis "Tool for reparenting a running program to a new terminal") (description @@ -177,7 +181,6 @@ (define-public reptyr it to a new terminal. Started a long-running process over @code{ssh}, but have to leave and don't want to interrupt it? Just start a @code{screen}, use reptyr to grab it, and then kill the @code{ssh} session and head on home.") - ;; Reptyr currently does not support mips or aarch64. - (supported-systems (fold delete %supported-systems - '("mips64el-linux" "aarch64-linux"))) + ;; Reptyr currently does not support mips. + (supported-systems (delete "mips64el-linux" %supported-systems)) (license expat))) diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index 9969cad8ac..a127d5ca34 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -243,7 +243,7 @@ (define-public mlocate (home-page "https://pagure.io/mlocate") (synopsis "Locate files on the file system") (description - "mlocate is a locate/updatedb implementation. The 'm' stands for + "mlocate is a locate/updatedb implementation. The @code{m} stands for \"merging\": @code{updatedb} reuses the existing database to avoid rereading most of the file system, which makes it faster and does not trash the system caches as much. The locate(1) utility is intended to be completely compatible diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm index ba5bb5b4c6..29d691dd31 100644 --- a/gnu/packages/security-token.scm +++ b/gnu/packages/security-token.scm @@ -161,7 +161,7 @@ (define-public libyubikey (define-public pcsc-lite (package (name "pcsc-lite") - (version "1.8.24") + (version "1.8.25") (source (origin (method url-fetch) (uri (string-append @@ -169,7 +169,7 @@ (define-public pcsc-lite name "-" version ".tar.bz2")) (sha256 (base32 - "0s3mv6csbi9303vvis0hilm71xsmi6cqkbh2kiipdisydbx6865q")))) + "14l7irs1nsh8b036ag4cfy8wryyysch78scz5dw6xxqwqgnpjvfp")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--enable-usbdropdir=/var/lib/pcsc/drivers" diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm index 55b551a119..e9e9042bd1 100644 --- a/gnu/packages/spice.scm +++ b/gnu/packages/spice.scm @@ -217,7 +217,7 @@ (define-public spice #:parallel-tests? #f)) (synopsis "Server implementation of the SPICE protocol") (description "SPICE is a remote display system built for virtual -environments which allows you to view a computing 'desktop' environment +environments which allows you to view a computing @code{desktop} environment not only on the machine where it is running, but from anywhere on the Internet and from a wide variety of machine architectures.") (home-page "https://www.spice-space.org") diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index bd26149872..abbc0dad89 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -111,7 +111,7 @@ (define-public libssh (define-public libssh2 (package (name "libssh2") - (version "1.8.1") + (version "1.8.2") (source (origin (method url-fetch) (uri (string-append @@ -119,7 +119,7 @@ (define-public libssh2 version ".tar.gz")) (sha256 (base32 - "0ngif3ynk6xqzy5nlfjs7bsmfm81g9f145av0z86kf0vbgrigda0")) + "0rqd37pc80nm2pz4sa2m9pfc48axys7jwq1l7z0vii5nyvchg0q8")) (patches (search-patches "libssh2-fix-build-failure-with-gcrypt.patch")))) (build-system gnu-build-system) @@ -451,7 +451,7 @@ (define-public et (define-public dropbear (package (name "dropbear") - (version "2019.77") + (version "2019.78") (source (origin (method url-fetch) @@ -459,7 +459,7 @@ (define-public dropbear "https://matt.ucc.asn.au/dropbear/releases/" "dropbear-" version ".tar.bz2")) (sha256 - (base32 "13a55fcy2mx2pvsfj6dh9107k4wnbd9ybdyi3w3ivgikwvmph7yr")))) + (base32 "19242qlr40pbqfqd0gg6h8qpj38q6lgv03ja6sahj9vj2abnanaj")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; there is no "make check" or anything similar ;; TODO: Investigate unbundling libtommath and libtomcrypt or at least diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 6face9910a..d89a18e2b9 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2015 Vicente Vera Parra ;;; Copyright © 2016 Andreas Enge -;;; Copyright © 2016, 2017 Efraim Flashner +;;; Copyright © 2016, 2017, 2019 Efraim Flashner ;;; Copyright © 2016 Pjotr Prins ;;; Copyright © 2016 Roel Janssen ;;; Copyright © 2016 Ben Woodcroft @@ -548,14 +548,14 @@ (define-public r-lattice (define-public r-matrix (package (name "r-matrix") - (version "1.2-16") + (version "1.2-17") (source (origin (method url-fetch) (uri (cran-uri "Matrix" version)) (sha256 (base32 - "10fh0y1wd0bvnqbzlyck08pn1vxcd58bskx2lrf9m42v5792ba9p")))) + "1k1zf92ycqr7fz44w7bp1p354ww7jg0wm23ybb8dzmbg37qfchyv")))) (properties `((upstream-name . "Matrix"))) (build-system r-build-system) (propagated-inputs @@ -802,10 +802,10 @@ (define-public r-digest (home-page "http://dirk.eddelbuettel.com/code/digest.html") (synopsis "Create cryptographic hash digests of R objects") (description - "This package contains an implementation of a function 'digest()' for the -creation of hash digests of arbitrary R objects (using the md5, sha-1, + "This package contains an implementation of a function @code{digest()} for +the creation of hash digests of arbitrary R objects (using the md5, sha-1, sha-256, crc32, xxhash and murmurhash algorithms) permitting easy comparison -of R language objects, as well as a function 'hmac()' to create hash-based +of R language objects, as well as a function @code{hmac()} to create hash-based message authentication code. Please note that this package is not meant to be deployed for cryptographic @@ -827,7 +827,7 @@ (define-public r-estimability (home-page "https://cran.r-project.org/web/packages/estimability") (synopsis "Tools for assessing estimability of linear predictions") (description "Provides tools for determining estimability of linear -functions of regression coefficients, and 'epredict' methods that handle +functions of regression coefficients, and @code{epredict} methods that handle non-estimable cases correctly.") (license license:gpl2+))) @@ -1063,7 +1063,7 @@ (define-public r-stringr (synopsis "Simple, consistent wrappers for common string operations") (description "Stringr is a consistent, simple and easy to use set of wrappers around -the fantastic 'stringi' package. All function and argument names (and +the fantastic @code{stringi} package. All function and argument names (and positions) are consistent, all functions deal with \"NA\"'s and zero length vectors in the same way, and the output from one function is easy to feed into the input of another.") @@ -2274,9 +2274,9 @@ (define-public r-commonmark (synopsis "CommonMark and Github Markdown Rendering in R") (description "The CommonMark specification defines a rationalized version of markdown -syntax. This package uses the 'cmark' reference implementation for converting -markdown text into various formats including HTML, LaTeX and groff man. In -addition, it exposes the markdown parse tree in XML format. The latest +syntax. This package uses the @code{cmark} reference implementation for +converting markdown text into various formats including HTML, LaTeX and groff +man. In addition, it exposes the markdown parse tree in XML format. The latest version of this package also adds support for Github extensions including tables, autolinks and strikethrough text.") (license license:bsd-2))) @@ -2316,14 +2316,14 @@ (define-public r-roxygen2 (define-public r-openssl (package (name "r-openssl") - (version "1.2.2") + (version "1.3") (source (origin (method url-fetch) (uri (cran-uri "openssl" version)) (sha256 (base32 - "0jfkna9zzhy2m5qd8501ija5jnpxzjn8wi3wjw0kr2fm4sl7qynz")))) + "1gx4mk7js1irzkql5rgk48ja9c6mm28ccxz483ngbhdd57az90qw")))) (build-system r-build-system) (inputs `(("libressl" ,libressl))) @@ -2580,13 +2580,13 @@ (define-public r-latticeextra (define-public r-rcpparmadillo (package (name "r-rcpparmadillo") - (version "0.9.200.7.1") + (version "0.9.300.2.0") (source (origin (method url-fetch) (uri (cran-uri "RcppArmadillo" version)) (sha256 (base32 - "1gy3ywzw1cx344a8xihnmflgxphy2fhci7ng85msqd1iv9gzxyk4")))) + "02zha49v6s8g39dcmk5dz0pygx0jibgmcwsyzybp9wmlqxnmdvip")))) (properties `((upstream-name . "RcppArmadillo"))) (build-system r-build-system) ;; All needed for vignettes @@ -2709,13 +2709,13 @@ (define-public r-rmarkdown (define-public r-gtable (package (name "r-gtable") - (version "0.2.0") + (version "0.3.0") (source (origin (method url-fetch) (uri (cran-uri "gtable" version)) (sha256 (base32 - "0vz7073m0a2q12qzzihrfh5c2kx5jqi5l7z470fxmwqghdllh7l0")))) + "1lyncxf2dqdjgw1071cn9c8zwzkz6sldnd5cgmicf70bc726qf7x")))) (properties `((upstream-name . "gtable"))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/gtable") @@ -3165,8 +3165,8 @@ (define-public r-dt (synopsis "R wrapper of the DataTables JavaScript library") (description "This package allows for data objects in R to be rendered as HTML tables -using the JavaScript library 'DataTables' (typically via R Markdown or Shiny). -The 'DataTables' library has been included in this R package.") +using the JavaScript library @code{DataTables} (typically via R Markdown or +Shiny). The @code{DataTables} library has been included in this R package.") ;; The DT package as a whole is distributed under GPLv3. The DT package ;; inludes other software components under different licenses: ;; @@ -3688,13 +3688,14 @@ (define-public r-viridislite (home-page "https://github.com/sjmgarnier/viridisLite") (synopsis "Default color maps from matplotlib") (description - "This package is a port of the new @code{matplotlib} color maps ('viridis', -'magma', 'plasma' and 'inferno') to R. matplotlib is a popular plotting -library for Python. These color maps are designed in such a way that they -will analytically be perfectly perceptually-uniform, both in regular form and -also when converted to black-and-white. They are also designed to be -perceived by readers with the most common form of color blindness. This is -the 'lite' version of the more complete @code{viridis} package.") + "This package is a port of the new @code{matplotlib} color maps +(@code{viridis}, @code{magma}, @code{plasma} and @code{inferno}) to R. +matplotlib is a popular plotting library for Python. These color maps are +designed in such a way that they will analytically be perfectly +perceptually-uniform, both in regular form and also when converted to +black-and-white. They are also designed to be perceived by readers with the +most common form of color blindness. This is the @code{lite} version of the +more complete @code{viridis} package.") (license license:expat))) (define-public r-tidyselect @@ -5283,14 +5284,14 @@ (define-public r-car (define-public r-caret (package (name "r-caret") - (version "6.0-81") + (version "6.0-82") (source (origin (method url-fetch) (uri (cran-uri "caret" version)) (sha256 (base32 - "1fibrskjzq2f06b8gbrfp3263svfc5s5apsjwaqdg9qzs7sy7fpc")))) + "0zgkmiiarl7ll2ffyciikah61jyps41fin5pjb5l8ja2b26lgrdg")))) (build-system r-build-system) (propagated-inputs `(("r-foreach" ,r-foreach) @@ -5473,19 +5474,20 @@ (define-public r-tsne (define-public r-cairo (package (name "r-cairo") - (version "1.5-9") + (version "1.5-10") (source (origin (method url-fetch) (uri (cran-uri "Cairo" version)) (sha256 (base32 - "1x1q99r3r978rlkkm5gixkv03p0mcr6k7ydcqdmisrwnmrn7p1ia")))) + "1mdmd5zmjkh1b0x928zizgzh42x8swbajffb88rvnjfdhk1z0dvq")))) (properties `((upstream-name . "Cairo"))) (build-system r-build-system) (inputs `(("cairo" ,cairo) - ("libxt" ,libxt))) + ("libxt" ,libxt) + ("zlib" ,zlib))) (native-inputs `(("pkg-config" ,pkg-config))) (home-page "http://www.rforge.net/Cairo/") @@ -5527,7 +5529,7 @@ (define-public r-lubridate "This package provides functions to work with date-times and time-spans: fast and user friendly parsing of date-time data, extraction and updating of components of a date-time (years, months, days, hours, minutes, and seconds), -algebraic manipulation on date-time and time-span objects. The 'lubridate' +algebraic manipulation on date-time and time-span objects. The @code{lubridate} package has a consistent and memorable syntax that makes working with dates easy and fun.") (license license:gpl2))) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 559fb3d63f..b5c14143a8 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -8,7 +8,10 @@ ;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2017, 2018 Ricardo Wurmus ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice +;;; Copyright © 2017 Adonay Felipe Nogueira ;;; Copyright © 2018 Jovany Leandro G.C +;;; Copyright © 2018 Tim Gesthuizen +;;; Copyright © 2019 Pierre Neidhardt ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,21 +30,41 @@ (define-module (gnu packages telephony) #:use-module (gnu packages) + #:use-module (gnu packages aidc) #:use-module (gnu packages autotools) #:use-module (gnu packages avahi) + #:use-module (gnu packages audio) + #:use-module (gnu packages base) #:use-module (gnu packages boost) #:use-module (gnu packages check) + #:use-module (gnu packages compression) + #:use-module (gnu packages crypto) + #:use-module (gnu packages documentation) #:use-module (gnu packages file) #:use-module (gnu packages protobuf) + #:use-module (gnu packages gettext) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) #:use-module (gnu packages gnupg) + #:use-module (gnu packages gtk) + #:use-module (gnu packages libcanberra) #:use-module (gnu packages linux) #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) + #:use-module (gnu packages networking) + #:use-module (gnu packages pcre) + #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages python) #:use-module (gnu packages qt) + #:use-module (gnu packages serialization) #:use-module (gnu packages speech) + #:use-module (gnu packages sqlite) #:use-module (gnu packages tls) + #:use-module (gnu packages upnp) + #:use-module (gnu packages video) + #:use-module (gnu packages webkit) #:use-module (gnu packages xiph) #:use-module (gnu packages xorg) #:use-module (gnu packages xml) @@ -529,3 +552,357 @@ (define-public twinkle phone to IP phone communication or in a network using a SIP proxy to route your calls and messages") (license license:gpl2+)))) + +(define-public pjproject + (package + (name "pjproject") + (version "2.7.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://www.pjsip.org/release/" ; + version "/" name "-" version ".tar.bz2")) + (modules '((guix build utils))) + (snippet + '(begin + (let ((third-party-directories + (list "BaseClasses" "bdsound" "bin" "g7221" "gsm" + "ilbc" "lib" "milenage" "mp3" "speex" "srtp" + "resample" + ;; Keep only resample, build and README.txt. + "build/baseclasses" "build/g7221" "build/gsm" + "build/ilbc" "build/milenage" "build/samplerate" + "build/speex" "build/srtp" + "build/resample" "build/yuv"))) + ;; Keep only Makefiles related to resample. + (for-each (lambda (file) + (delete-file-recursively + (string-append "third_party/" file))) + third-party-directories) + #t) + (let ((third-party-dirs + (list "gsm" "ilbc" "speex" "g7221" "srtp" + "portaudio" "resample"))) + (for-each + (lambda (dirs) + (substitute* "third_party/build/os-linux.mak" + (((string-append "DIRS += " dirs)) ""))) + third-party-dirs)))) + (sha256 + (base32 + "0wiph6g51wanzwjjrpwsz63amgvly8g08jz033gnwqmppa584b4w")))) + (build-system gnu-build-system) + (inputs + `(("portaudio" ,portaudio))) + (propagated-inputs + ;; These packages are referenced in the Libs field of the pkg-config + ;; file that will be installed by pjproject. + `(("speex" ,speex) + ("libsrtp" ,libsrtp) + ("gnutls" ,gnutls) + ("util-linux" ,util-linux))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config) + ("libtool" ,libtool))) + (arguments + `(;; FIXME make: No rule to make target + ;; 'pjlib-test-unknown-[something]-gnu'. + #:tests? #f + ;; #:test-target "selftest" + #:phases + (modify-phases %standard-phases + (add-before 'build 'build-dep + (lambda _ (invoke "make" "dep"))) + (add-before 'patch-source-shebangs 'autoconf + (lambda _ + (invoke "autoconf" "-vfi" "-o" + "aconfigure" "aconfigure.ac"))) + (add-before 'autoconf 'disable-some-tests + ;; Three of the six test programs fail due to missing network + ;; access. + (lambda _ + (substitute* "Makefile" + (("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test") + "selftest: pjlib-test pjlib-util-test pjmedia-test")) + #t))))) + (home-page "https://www.pjsip.org") + (synopsis "Session Initiation Protocol (SIP) stack") + (description "PJProject provides an implementation of the Session +Initiation Protocol (SIP) and a multimedia framework.") + (license license:gpl2+))) + +(define %jami-version "20190319.4.a16a99f") + +(define* (jami-source #:key without-daemon) + (origin + (method url-fetch) + (uri (string-append "http://dl.jami.net/ring-release/tarballs/ring_" + %jami-version + ".tar.gz")) + (modules '((guix build utils))) + (snippet + (if without-daemon + '(begin + (delete-file-recursively "daemon/contrib")) + #f)) + (sha256 + (base32 + "1c6n6sm7skw83v25g33g4jzbragz9j4przbzaz7asxw54jy33dwl")))) + +(define-public pjproject-jami + (package + (inherit pjproject) + (name "pjproject-jami") + (native-inputs + `(("savoir-faire-linux-patches" ,(jami-source)) + ,@(package-native-inputs pjproject))) + (arguments + `(#:tests? #f + ;; See ring-project/daemon/contrib/src/pjproject/rules.mak. + #:configure-flags + (list "--disable-oss" + "--disable-sound" + "--disable-video" + "--enable-ext-sound" + "--disable-speex-aec" + "--disable-g711-codec" + "--disable-l16-codec" + "--disable-gsm-codec" + "--disable-g722-codec" + "--disable-g7221-codec" + "--disable-speex-codec" + "--disable-ilbc-codec" + "--disable-opencore-amr" + "--disable-silk" + "--disable-sdl" + "--disable-ffmpeg" + "--disable-v4l2" + "--disable-openh264" + "--disable-resample" + "--disable-libwebrtc" + ;; "-fPIC" is required for libring. Bug? + "CFLAGS=-fPIC -DPJ_ENABLE_EXTRA_CHECK=1 -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=1024 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000 -DPJ_ICE_ST_MAX_CAND=32" + "CXXFLAGS=-fPIC -DPJ_ENABLE_EXTRA_CHECK=1 -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=1024 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000 -DPJ_ICE_ST_MAX_CAND=32" + ;; Now deviating from the rules.mak file. + "--enable-ssl=gnutls" + "--with-external-srtp") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'apply-patches + (lambda* (#:key inputs #:allow-other-keys) + (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches") + ;; Comes from + ;; "ring-project/daemon/contrib/src/pjproject/rules.mak". + ;; WARNING: These amount for huge changes in pjproject. + ;; Particularly, they add support for GnuTLS. + (savoir-faire-linux-patches + '("gnutls" + "rfc2466" + "ipv6" + "ice_config" + "multiple_listeners" + "pj_ice_sess" + "fix_turn_fallback" + "fix_ioqueue_ipv6_sendto" + "add_dtls_transport" + "rfc6062"))) + (mkdir-p savoir-faire-linux-patches-directory) + (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches") + "-C" savoir-faire-linux-patches-directory "--strip-components=5" "ring-project/daemon/contrib/src/pjproject") + (for-each + (lambda (file) + (invoke "patch" "--force" "-p1" "-i" + (string-append savoir-faire-linux-patches-directory "/" + file ".patch"))) + savoir-faire-linux-patches)) + #t)) + ;; TODO: We could use substitute-keyword-arguments instead of + ;; repeating the phases from pjproject, but somehow it does + ;; not work. + (add-before 'build 'build-dep + (lambda _ (invoke "make" "dep"))) + (add-before 'patch-source-shebangs 'autoconf + (lambda _ + (invoke "autoconf" "-v" "-f" "-i" "-o" + "aconfigure" "aconfigure.ac"))) + (add-before 'autoconf 'disable-some-tests + ;; Three of the six test programs fail due to missing network + ;; access. + (lambda _ + (substitute* "Makefile" + (("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test") + "selftest: pjlib-test pjlib-util-test pjmedia-test")) + #t))))))) + +(define-public libring + (package + (name "libring") + (version %jami-version) + (source (jami-source #:without-daemon #t)) + (build-system gnu-build-system) + (inputs + ;; Missing (optional?) dep: libnatpmp. + `(("alsa-lib" ,alsa-lib) + ("boost" ,boost) + ("dbus-c++" ,dbus-c++) + ("eudev" ,eudev) + ("ffmpeg" ,ffmpeg) + ("flac" ,flac) + ("gmp" ,gmp) + ("gsm" ,gsm) + ("jack" ,jack-1) + ("jsoncpp" ,jsoncpp) + ("libogg" ,libogg) + ("libva" ,libva) + ("opendht" ,opendht) + ("opus" ,opus) + ("pcre" ,pcre) + ("pulseaudio" ,pulseaudio) + ("libsamplerate" ,libsamplerate) + ("libsndfile" ,libsndfile) + ("speex" ,speex) + ("speexdsp" ,speexdsp) + ("libupnp" ,libupnp) + ("libvorbis" ,libvorbis) + ("libx264" ,libx264) + ("libvdpau" ,libvdpau) + ("yaml-cpp" ,yaml-cpp) + ("zlib" ,zlib) + ("openssl" ,openssl) + ("libsecp256k1" ,libsecp256k1) + ("python" ,python) + ("python-wrapper" ,python-wrapper) + ("restbed" ,restbed) + ("libx11" ,libx11) + ;; TODO: Upstream seems to rely on a custom pjproject (a.k.a. pjsip) version. + ;; See https://git.jami.net/savoirfairelinux/ring-daemon/issues/24. + ("pjproject" ,pjproject-jami))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config) + ("which" ,which) + ("cppunit" ,cppunit) + ("perl" ,perl))) ; Needed for documentation. + (arguments + `(#:tests? #f ; The tests fail to compile due to missing headers. + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'change-directory + (lambda _ + (chdir "daemon") + #t)) + (add-before 'build 'add-lib-dir + (lambda _ + (mkdir-p "src/lib") + #t))))) + (synopsis "Distributed multimedia communications platform") + (description "Jami (formerly GNU Ring) is a secure and distributed voice, +video and chat communication platform that requires no centralized server and +leaves the power of privacy in the hands of the user. It supports the SIP and +IAX protocols, as well as decentralized calling using P2P-DHT. + +This package provides a library and daemon implementing the Jami core +functionality.") + (home-page "https://jami.net/") + (license license:gpl3+))) + +(define-public libringclient + (package + (inherit libring) + (name "libringclient") + (build-system cmake-build-system) + (propagated-inputs + `(("libring" ,libring) ; For 'dring'. + ("qtbase" ,qtbase) ; Qt is included in several installed headers. + ("qttools" ,qttools))) + (arguments + `(#:tests? #f ; There is no testsuite. + #:configure-flags + (list (string-append "-DRING_BUILD_DIR=" + (assoc-ref %build-inputs "libring") "/include")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'change-directory + (lambda _ + (chdir "lrc") + #t)) + (add-before 'configure 'fix-dbus-interfaces-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "CMakeLists.txt" + (("\\$\\{CMAKE_INSTALL_PREFIX\\}(/share/dbus-1/interfaces)" _ dbus-interfaces-path-suffix) + (string-append (assoc-ref inputs "libring") + dbus-interfaces-path-suffix)))))))) + (synopsis "Distributed multimedia communications platform") + (description "Jami (formerly GNU Ring) is a secure and distributed voice, +video and chat communication platform that requires no centralized server and +leaves the power of privacy in the hands of the user. It supports the SIP and +IAX protocols, as well as decentralized calling using P2P-DHT. + +This package provides a library common to all Jami clients.") + (home-page "https://jami.net") + (license license:gpl3+))) + +(define-public jami-client-gnome + (package + (inherit libring) + (name "jami-client-gnome") + (build-system cmake-build-system) + (inputs + `(("libringclient" ,libringclient) + ("gtk+" ,gtk+) + ("qrencode" ,qrencode) + ("libnotify" ,libnotify) + ("clutter" ,clutter) + ("clutter-gtk" ,clutter-gtk) + ("gettext" ,gnu-gettext) + ("libcanberra" ,libcanberra) + ("webkitgtk" ,webkitgtk) + ;; TODO: We must wrap ring-client-gnome to force using the + ;; `sqlite-with-column-metadata' package instead of `sqlite' or else it + ;; fails with: + ;; + ;; /gnu/store/...-qtbase-5.11.2/lib/qt5/plugins/sqldrivers/libqsqlite.so: + ;; undefined symbol: sqlite3_column_table_name16 + ;; + ;; qtbase is built against sqlite-with-column-metadata but somehow + ;; jami-client-gnome ends up with both `sqlite' and + ;; `sqlite-with-column-metadata' as inputs and it seems that + ;; libqsqlite.so gets confused. + ("sqlite" ,sqlite-with-column-metadata))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("glib:bin" ,glib "bin") + ("doxygen" ,doxygen))) + (propagated-inputs + `(("libring" ,libring) ; Contains `dring', the daemon, which is automatically by d-bus. + ("adwaita-icon-theme" ,adwaita-icon-theme) + ("evolution-data-server" ,evolution-data-server))) + (arguments + `(#:tests? #f ; There is no testsuite. + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'change-directory + (lambda _ + (chdir "client-gnome") + #t)) + (add-after 'install 'wrap + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (path (string-append (assoc-ref inputs "sqlite") "/lib"))) + (wrap-program (string-append out "/bin/gnome-ring") + `("LD_LIBRARY_PATH" ":" prefix (,path)))) + #t))))) + (synopsis "Distributed multimedia communications platform") + (description "Jami (formerly GNU Ring) is a secure and distributed voice, +video and chat communication platform that requires no centralized server and +leaves the power of privacy in the hands of the user. It supports the SIP and +IAX protocols, as well as decentralized calling using P2P-DHT. + +This package provides the Jami client for the GNOME desktop.") + (home-page "https://jami.net") + (license license:gpl3+))) diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index 3839aa1b52..2d46585865 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -1042,8 +1042,8 @@ (define-public eternalterminal (add-after 'unpack 'insert-googletests (lambda* (#:key inputs #:allow-other-keys) (let ((tests (assoc-ref inputs "googletest"))) - (invoke "tar" "xvf" tests "-C" "external/googletest" - "--strip-components=1")))) + (copy-recursively tests "external/googletest")) + #t)) (add-after 'install 'dont-provide-gtest-libraries (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index e90e64a6ad..314d88f2fc 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -3418,8 +3418,8 @@ (define-public texlive-latex-changebar (description "Identify areas of text to be marked with changebars with the @code{\\cbstart} and @code{\\cbend} commands; the bars may be coloured. The -package uses 'drivers' to place the bars; the available drivers can work with -@code{dvitoln03}, @code{dvitops}, @code{dvips}, the emTeX and TeXtures DVI +package uses @code{drivers} to place the bars; the available drivers can work +with @code{dvitoln03}, @code{dvitops}, @code{dvips}, the emTeX and TeXtures DVI drivers, and VTeX and pdfTeX.") (license license:lppl))) diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 9e3020be3f..c0b92bab04 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -837,7 +837,7 @@ (define-public acme-client (define-public mbedtls-apache (package (name "mbedtls-apache") - (version "2.16.0") + (version "2.16.1") (source (origin (method url-fetch) @@ -847,7 +847,7 @@ (define-public mbedtls-apache version "-apache.tgz")) (sha256 (base32 - "1qlscr0m97favkqmrlj90rlgw40h8lcypxz0snvr1iwkj1pbbnp3")))) + "08zz88gcb2jmpfsgy5b6qc3li6l39yw1dbimd18aziyd889nvl7b")))) (build-system cmake-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 5c3c40d680..49980d2113 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -408,7 +408,7 @@ (define-public git ,@(transitive-input-references 'inputs (map (lambda (l) - (assoc l (inputs))) + (assoc l (package-inputs this-package))) '("perl-authen-sasl" "perl-net-smtp-ssl" "perl-io-socket-ssl"))))))) @@ -421,7 +421,7 @@ (define-public git ,@(transitive-input-references 'inputs (map (lambda (l) - (assoc l (inputs))) + (assoc l (package-inputs this-package))) '("perl-cgi"))))))) ;; Tell 'git-submodule' where Perl is. @@ -1366,7 +1366,7 @@ (define-public subversion (home-page "https://subversion.apache.org/") (synopsis "Revision control system") (description - "Subversion (aka. ``svn'') exists to be recognized and adopted as a + "@dfn{Subversion} (svn) exists to be recognized and adopted as a centralized version control system characterized by its reliability as a safe haven for valuable data; the simplicity of its model and usage; and its ability to support the needs of a wide variety of users and diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 16ab160d0b..87e1b0b959 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -935,14 +935,14 @@ (define-public ffmpeg (define-public ffmpeg-3.4 (package (inherit ffmpeg) - (version "3.4.5") + (version "3.4.6") (source (origin (method url-fetch) (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" version ".tar.xz")) (sha256 (base32 - "0b59qk5wpc5ksiha76jbhb859g5gxa4w0k6afh3kgvgajiivs73l")))) + "0gmqbhg5jjcfanrxrl657zn12lzz73sfs8xwryfy7n9rn6f2fwim")))) (arguments (substitute-keyword-arguments (package-arguments ffmpeg) ((#:configure-flags flags) @@ -1841,7 +1841,7 @@ (define-public srt2vtt (define-public avidemux (package (name "avidemux") - (version "2.7.2") + (version "2.7.3") (source (origin (method url-fetch) (uri (string-append @@ -1849,7 +1849,7 @@ (define-public avidemux "avidemux_" version ".tar.gz")) (sha256 (base32 - "07fdz3y4iln7cizikdjj96dqvp2f8zzhs31ncxxwzdkngn5v8138")) + "17x2mnnr5h8pp764p55l1xcn2ljnzhbj8cykajlllvk4rc4qwxld")) (patches (search-patches "avidemux-install-to-lib.patch")))) (build-system cmake-build-system) (native-inputs @@ -1878,7 +1878,7 @@ (define-public avidemux ("yasm" ,yasm) ("zlib" ,zlib))) (arguments - `(#:tests? #f ; no check target + `(#:tests? #f ; no check target #:phases ;; Make sure files inside the included ffmpeg tarball are ;; patch-shebanged. diff --git a/gnu/packages/w3m.scm b/gnu/packages/w3m.scm index b88bbd39bb..1ec07675ab 100644 --- a/gnu/packages/w3m.scm +++ b/gnu/packages/w3m.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013 Nikita Karetnikov ;;; Copyright © 2016, 2017, 2018 Leo Famulari ;;; Copyright © 2016 Kei Kebreau -;;; Copyright © 2016 Efraim Flashner +;;; Copyright © 2016, 2019 Efraim Flashner ;;; Copyright © 2018 Rutger Helling ;;; ;;; This file is part of GNU Guix. @@ -76,8 +76,8 @@ (define-public w3m (home-page "http://w3m.sourceforge.net/") (synopsis "Text-mode web browser") (description - "w3m is a text-based web browser as well as a pager like 'more' or -'less'. With w3m you can browse web pages through a terminal emulator + "w3m is a text-based web browser as well as a pager like @code{more} or +@code{less}. With w3m you can browse web pages through a terminal emulator window. Moreover, w3m can be used as a text formatting tool which typesets HTML into plain text.") (license (x11-style "file://doc/README" diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index f6701dca30..6a34c1e2fd 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -10,7 +10,7 @@ ;;; Copyright © 2015 Eric Dvorsak ;;; Copyright © 2016 Sou Bunnbu ;;; Copyright © 2016 Jelle Licht -;;; Copyright © 2016, 2017, 2018 Efraim Flashner +;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner ;;; Copyright © 2016 Rene Saavedra ;;; Copyright © 2016 Ben Woodcroft ;;; Copyright © 2016 Clément Lassieur @@ -2900,7 +2900,7 @@ (define-public perl-http-parser (home-page "https://metacpan.org/release/HTTP-Parser") (synopsis "Parse HTTP/1.1 requests") (description "This is an HTTP request parser. It takes chunks of text as -received and returns a 'hint' as to what is required, or returns the +received and returns a @code{hint} as to what is required, or returns the HTTP::Request when a complete request has been read. HTTP/1.1 chunking is supported.") (license l:perl-license))) @@ -3467,7 +3467,7 @@ (define-public perl-plack-middleware-reverseproxy (synopsis "Supports app to run as a reverse proxy backend") (description "Plack::Middleware::ReverseProxy resets some HTTP headers, which are changed by reverse-proxy. You can specify the reverse proxy address -and stop fake requests using 'enable_if' directive in your app.psgi.") +and stop fake requests using @code{enable_if} directive in your app.psgi.") (license l:perl-license))) (define-public perl-plack-test-externalserver @@ -3477,7 +3477,7 @@ (define-public perl-plack-test-externalserver (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/" + (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" "Plack-Test-ExternalServer-" version ".tar.gz")) (sha256 (base32 "1l1yj1l25679x7cbpd27ii7s1f1ajpkspif9xqnl21hczrbmrbsv")))) @@ -6424,9 +6424,9 @@ (define-public hpcguix-web `(("guile" ,guile-2.2) ("guile-commonmark" ,guile-commonmark) ("guile-json" ,guile-json))) - (home-page "https://github.com/UMCUGenetics/hpcguix-web") + (home-page "https://github.com/UMCUGenetics/hpcguix-web") (synopsis "Web interface for cluster deployments of Guix") (description "Hpcguix-web provides a web interface to the list of packages provided by Guix. The list of packages is searchable and provides instructions on how to use Guix in a shared HPC environment.") - (license l:agpl3+)))) + (license l:agpl3+)))) diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm index c7a57f5ec4..57b755c8a2 100644 --- a/gnu/packages/wine.scm +++ b/gnu/packages/wine.scm @@ -310,7 +310,7 @@ (define-public wine-minimal (define-public wine-staging-patchset-data (package (name "wine-staging-patchset-data") - (version "4.4") + (version "4.5") (source (origin (method git-fetch) @@ -320,7 +320,7 @@ (define-public wine-staging-patchset-data (file-name (git-file-name name version)) (sha256 (base32 - "1pk0p37p2pbdsikj6987pg70f9a5n2ki8vnhcj4ngh1rhg6iqgyw")))) + "18xpha7nl3jg7c24cgbncciyyqqb6svsyfp1xk81993wnl6r8abs")))) (build-system trivial-build-system) (native-inputs `(("bash" ,bash) @@ -366,7 +366,7 @@ (define-public wine-staging (file-name (string-append name "-" version ".tar.xz")) (sha256 (base32 - "1c072a2d56x43alv9pvahasfrdb8k0y0f540xpzjjhqb9g7hjfnv")))) + "1dy1v27cw9vp2xnr8y4bdcvvw5ivcgpk2375jgn536csbwaxgwjz")))) (inputs `(("autoconf" ,autoconf) ; for autoreconf ("faudio" ,faudio) ("ffmpeg" ,ffmpeg) diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index 6c253849f6..8543dcffed 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2017 Petter ;;; Copyright © 2017 ng0 ;;; Copyright © 2018 Tobias Geerinckx-Rice +;;; Copyright © 2019 Pkill -9 ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,6 +30,7 @@ (define-module (gnu packages xfce) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) + #:use-module (guix build-system cmake) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) @@ -406,6 +408,39 @@ (define-public xfce4-pulseaudio-plugin keys for controlling the audio volume.") (license gpl2+))) +(define-public xfce4-whiskermenu-plugin + (package + (name "xfce4-whiskermenu-plugin") + (version "2.3.1") + (source (origin + (method url-fetch) + (uri (string-append "http://archive.xfce.org/src/panel-plugins/" + name "/" (version-major+minor version) "/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "1cnas2x7xi53v6ylq44040narhzd828dc0ysz8yk3qn2mmvp5yr2")))) + (build-system cmake-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("intltool" ,intltool))) + (inputs + `(("xfce4-panel" ,xfce4-panel) + ("garcon" ,garcon) + ("exo" ,exo) + ("gtk+" ,gtk+-2))) + (arguments + `(#:tests? #f)) ; no tests + (home-page "https://goodies.xfce.org/projects/panel-plugins/xfce4-whiskermenu-plugin") + (synopsis "Application menu panel plugin for Xfce") + (description + "This package provides an alternative to the default application menu +panel plugin for Xfce4. It uses separate sections to display categories and +applications, and includes a search bar to search for applications.") + ;; The main plugin code is covered by gpl2, but files in panel-plugin directory + ;; are covered by gpl2+. The SVG icon is covered by gpl2. + (license (list gpl2 gpl2+)))) + (define-public xfce4-xkb-plugin (package (name "xfce4-xkb-plugin") diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 411e4b04ab..18270a6771 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015 Eric Dvorsak ;;; Copyright © 2016 Mathieu Lirzin ;;; Copyright © 2015 Cyrill Schenkel -;;; Copyright © 2016, 2017 Efraim Flashner +;;; Copyright © 2016, 2017, 2019 Efraim Flashner ;;; Copyright © 2016 ng0 ;;; Copyright © 2016 Alex Kost ;;; Copyright © 2016 David Craven @@ -548,7 +548,7 @@ (define-public font-alias (synopsis "Xorg font aliases") (description "This package provides some common aliases for Xorg fonts. -For example: '6x10', '9x15bold', etc.") +For example: @code{6x10}, @code{9x15bold}, etc.") (license license:x11))) @@ -1600,8 +1600,8 @@ (define-public mkfontscale (home-page "https://www.x.org/wiki/") (synopsis "Create an index of scalable font files for X server") (description - "MkFontScale creates the 'fonts.scale' and 'fonts.dir' index files used -by the legacy X11 font system.") + "MkFontScale creates the @code{fonts.scale} and @code{fonts.dir} index +files used by the legacy X11 font system.") (license license:x11))) @@ -2220,7 +2220,7 @@ (define-public xcursor-themes (synopsis "Default Xorg cursors") (description "This package provides a default set of cursor themes for the Xorg -X server: 'handhelds', 'redglass' and 'whiteglass'.") +X server: @code{handhelds}, @code{redglass} and @code{whiteglass}.") (license license:x11))) @@ -3864,7 +3864,7 @@ (define-public xkeyboard-config "xkeyboard-config provides a database for X Keyboard (XKB) Extension. There are five components that define a complete keyboard mapping: symbols, geometry, keycodes, compat, and types; these five components -can be combined together using the 'rules' component of this database.") +can be combined together using the @code{rules} component of this database.") (license license:x11))) @@ -4746,7 +4746,7 @@ (define-public mkfontdir (home-page "https://www.x.org/wiki/") (synopsis "Create an index of X font files in a directory") (description - "MkFontDir creates the 'fonts.dir' files needed by the legacy X + "MkFontDir creates the @code{fonts.dir} files needed by the legacy X server core font system. The current implementation is a simple wrapper script around the mkfontscale program.") (license license:x11))) @@ -5671,7 +5671,7 @@ (define-public xinit (description "The xinit program is used to start the X Window System server and a first client program on systems that are not using a display manager such as -xdm. This package also provides the 'startx' command, which provides a +xdm. This package also provides the @code{startx} command, which provides a user-friendly mechanism to start the X server.") (license license:x11))) diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index b912c208cc..dcab950822 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -884,9 +884,12 @@ (define gnome-desktop-service-type (service-extension profile-service-type (compose list gnome-package)))) + (default-value (gnome-desktop-configuration)) (description "Run the GNOME desktop environment."))) -(define* (gnome-desktop-service #:key (config (gnome-desktop-configuration))) +(define-deprecated (gnome-desktop-service #:key (config + (gnome-desktop-configuration))) + gnome-desktop-service-type "Return a service that adds the @code{gnome} package to the system profile, and extends polkit with the actions from @code{gnome-settings-daemon}." (service gnome-desktop-service-type config)) @@ -942,10 +945,13 @@ (define xfce-desktop-service-type "thunar") xfce-package)) (service-extension profile-service-type - (compose list - xfce-package)))))) + (compose list xfce-package)))) + (default-value (xfce-desktop-configuration)) + (description "Run the Xfce desktop environment."))) -(define* (xfce-desktop-service #:key (config (xfce-desktop-configuration))) +(define-deprecated (xfce-desktop-service #:key (config + (xfce-desktop-configuration))) + xfce-desktop-service-type "Return a service that adds the @code{xfce} package to the system profile, and extends polkit with the ability for @code{thunar} to manipulate the file system as root from within a user session, after the user has authenticated @@ -1072,7 +1078,7 @@ (define inputattach-service-type (define %desktop-services ;; List of services typically useful for a "desktop" use case. - (cons* (service slim-service-type) + (cons* (service gdm-service-type) ;; Screen lockers are a pretty useful thing and these are small. (screen-locker-service slock) diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index cab129e0c3..5fbbf25789 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -1154,7 +1154,8 @@ (define openvswitch-service-type (description "Run @uref{http://www.openvswitch.org, Open vSwitch}, a multilayer virtual switch designed to enable massive network automation through programmatic -extension."))) +extension.") + (default-value (openvswitch-configuration)))) ;;; ;;; iptables diff --git a/gnu/services/sddm.scm b/gnu/services/sddm.scm index 2ebfe22016..43b34a38d9 100644 --- a/gnu/services/sddm.scm +++ b/gnu/services/sddm.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 David Craven +;;; Copyright © 2019 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -83,8 +84,8 @@ (define-record-type* (sessions-directory sddm-configuration-sessions-directory (default "/run/current-system/profile/share/wayland-sessions")) ;; [X11] - (xorg-server-path sddm-configuration-xorg-server-path - (default (xorg-start-command))) + (xorg-configuration sddm-configuration-xorg + (default (xorg-configuration))) (xauth-path sddm-configuration-xauth-path (default (file-append xauth "/bin/xauth"))) (xephyr-path sddm-configuration-xephyr-path @@ -99,8 +100,6 @@ (define-record-type* (default "/run/current-system/profile/share/xsessions")) (minimum-vt sddm-configuration-minimum-vt (default 7)) - (xserver-arguments sddm-configuration-xserver-arguments - (default "-nolisten tcp")) ;; [Autologin] (auto-login-user sddm-configuration-auto-login-user @@ -140,7 +139,8 @@ (define (sddm-configuration-file config) SessionDir=" (sddm-configuration-sessions-directory config) " [X11] -ServerPath=" (sddm-configuration-xorg-server-path config) " +ServerPath=" (xorg-configuration-server + (sddm-configuration-xorg config)) "/bin/X" " XauthPath=" (sddm-configuration-xauth-path config) " XephyrPath=" (sddm-configuration-xephyr-path config) " DisplayCommand=" (sddm-configuration-xdisplay-start config) " @@ -148,7 +148,9 @@ (define (sddm-configuration-file config) SessionCommand=" (sddm-configuration-xsession-command config) " SessionDir=" (sddm-configuration-xsessions-directory config) " MinimumVT=" (number->string (sddm-configuration-minimum-vt config)) " -ServerArguments=" (sddm-configuration-xserver-arguments config) " +ServerArguments=" (string-join + (xorg-configuration-server-arguments + (sddm-configuration-xorg config))) " [Autologin] User=" (sddm-configuration-auto-login-user config) " diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index f2a3c28c90..29c7f30013 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2018, 2019 Timothy Sample ;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen +;;; Copyright © 2019 Tim Gesthuizen ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,6 +26,7 @@ (define-module (gnu services xorg) #:use-module (gnu services) #:use-module (gnu services shepherd) #:use-module (gnu system pam) + #:use-module (gnu system keyboard) #:use-module (gnu services dbus) #:use-module ((gnu packages base) #:select (canonical-package)) #:use-module (gnu packages guile) @@ -48,7 +50,16 @@ (define-module (gnu services xorg) #:use-module (srfi srfi-9) #:use-module (srfi srfi-26) #:use-module (ice-9 match) - #:export (xorg-configuration-file + #:export (xorg-configuration + xorg-configuration? + xorg-configuration-modules + xorg-configuration-fonts + xorg-configuration-drivers + xorg-configuration-resolutions + xorg-configuration-extra-config + xorg-configuration-server + xorg-configuration-server-arguments + %default-xorg-modules %default-xorg-fonts xorg-wrapper @@ -69,7 +80,8 @@ (define-module (gnu services xorg) slim-configuration-xauth slim-configuration-shepherd slim-configuration-auto-login-session - slim-configuration-startx + slim-configuration-xorg + slim-configuration-sessreg slim-service-type slim-service @@ -122,33 +134,38 @@ (define %default-xorg-fonts "/share/fonts/X11/misc") (file-append font-adobe75dpi "/share/fonts/X11/75dpi"))) -(define* (xorg-configuration-file #:key - (modules %default-xorg-modules) - (fonts %default-xorg-fonts) - (drivers '()) (resolutions '()) - (extra-config '())) - "Return a configuration file for the Xorg server containing search paths for -all the common drivers. +(define %default-xorg-server-arguments + ;; Default command-line arguments for X. + '("-nolisten" "tcp")) -@var{modules} must be a list of @dfn{module packages} loaded by the Xorg -server---e.g., @code{xf86-video-vesa}, @code{xf86-input-keyboard}, and so on. -@var{fonts} must be a list of font directories to add to the server's -@dfn{font path}. +;; Configuration of an Xorg server. +(define-record-type* + xorg-configuration make-xorg-configuration + xorg-configuration? + (modules xorg-configuration-modules ;list of packages + (default %default-xorg-modules)) + (fonts xorg-configuration-fonts ;list of packges + (default %default-xorg-fonts)) + (drivers xorg-configuration-drivers ;list of strings + (default '())) + (resolutions xorg-configuration-resolutions ;list of tuples + (default '())) + (keyboard-layout xorg-configuration-keyboard-layout ;#f | + (default #f)) + (extra-config xorg-configuration-extra-config ;list of strings + (default '())) + (server xorg-configuration-server ;package + (default xorg-server)) + (server-arguments xorg-configuration-server-arguments ;list of strings + (default %default-xorg-server-arguments))) -@var{drivers} must be either the empty list, in which case Xorg chooses a -graphics driver automatically, or a list of driver names that will be tried in -this order---e.g., @code{(\"modesetting\" \"vesa\")}. - -Likewise, when @var{resolutions} is the empty list, Xorg chooses an -appropriate screen resolution; otherwise, it must be a list of -resolutions---e.g., @code{((1024 768) (640 480))}. - -Last, @var{extra-config} is a list of strings or objects appended to the -configuration file. It is used to pass extra text to be -added verbatim to the configuration file." +(define (xorg-configuration->file config) + "Compute an Xorg configuration file corresponding to CONFIG, an + record." (define all-modules ;; 'xorg-server' provides 'fbdevhw.so' etc. - (append modules (list xorg-server))) + (append (xorg-configuration-modules config) + (list xorg-server))) (define build #~(begin @@ -159,7 +176,7 @@ (define build (call-with-output-file #$output (lambda (port) (define drivers - '#$drivers) + '#$(xorg-configuration-drivers config)) (define (device-section driver) (string-append " @@ -183,6 +200,31 @@ (define (screen-section driver resolutions) EndSubSection EndSection")) + (define (input-class-section layout variant model options) + (string-append " +Section \"InputClass\" + Identifier \"evdev keyboard catchall\" + MatchIsKeyboard \"on\" + Option \"XkbLayout\" " (object->string layout) + (if variant + (string-append " Option \"XkbVariant\" \"" + variant "\"") + "") + (if model + (string-append " Option \"XkbModel\" \"" + model "\"") + "") + (match options + (() + "") + (_ + (string-append " Option \"XkbOptions\" \"" + (string-join options ",") "\""))) " + + MatchDevicePath \"/dev/input/event*\" + Driver \"evdev\" +EndSection\n")) + (define (expand modules) ;; Append to MODULES the relevant /lib/xorg/modules ;; sub-directories. @@ -201,7 +243,7 @@ (define (expand modules) (display "Section \"Files\"\n" port) (for-each (lambda (font) (format port " FontPath \"~a\"~%" font)) - '#$fonts) + '#$(xorg-configuration-fonts config)) (for-each (lambda (module) (format port " ModulePath \"~a\"~%" @@ -221,19 +263,32 @@ (define (expand modules) port) (newline port) (display (string-join - (map (cut screen-section <> '#$resolutions) + (map (cut screen-section <> + '#$(xorg-configuration-resolutions config)) drivers) "\n") port) (newline port) + (let ((layout #$(and=> (xorg-configuration-keyboard-layout config) + keyboard-layout-name)) + (variant #$(and=> (xorg-configuration-keyboard-layout config) + keyboard-layout-variant)) + (model #$(and=> (xorg-configuration-keyboard-layout config) + keyboard-layout-model)) + (options '#$(and=> (xorg-configuration-keyboard-layout config) + keyboard-layout-options))) + (when layout + (display (input-class-section layout variant model options) + port) + (newline port))) + (for-each (lambda (config) (display config port)) - '#$extra-config))))) + '#$(xorg-configuration-extra-config config)))))) (computed-file "xserver.conf" build)) - (define (xorg-configuration-directory modules) "Return a directory that contains the @code{.conf} files for X.org that includes the @code{share/X11/xorg.conf.d} directories of each package listed @@ -260,61 +315,43 @@ (define files files) #t)))) -(define* (xorg-wrapper #:key - (guile (canonical-package guile-2.0)) - (modules %default-xorg-modules) - (configuration-file (xorg-configuration-file - #:modules modules)) - (xorg-server xorg-server)) - "Return a derivation that builds a @var{guile} script to start the X server -from @var{xorg-server}. @var{configuration-file} is the server configuration -file or a derivation that builds it; when omitted, the result of -@code{xorg-configuration-file} is used. The resulting script should be used -in place of @code{/usr/bin/X}." +(define* (xorg-wrapper #:optional (config (xorg-configuration))) + "Return a derivation that builds a script to start the X server with the +given @var{config}. The resulting script should be used in place of +@code{/usr/bin/X}." (define exp ;; Write a small wrapper around the X server. #~(begin (setenv "XORG_DRI_DRIVER_PATH" (string-append #$mesa "/lib/dri")) (setenv "XKB_BINDIR" (string-append #$xkbcomp "/bin")) - (let ((X (string-append #$xorg-server "/bin/X"))) + (let ((X (string-append #$(xorg-configuration-server config) "/bin/X"))) (apply execl X X "-xkbdir" (string-append #$xkeyboard-config "/share/X11/xkb") - "-config" #$configuration-file - "-configdir" #$(xorg-configuration-directory modules) + "-config" #$(xorg-configuration->file config) + "-configdir" #$(xorg-configuration-directory + (xorg-configuration-modules config)) (cdr (command-line)))))) (program-file "X-wrapper" exp)) -(define* (xorg-start-command #:key - (guile (canonical-package guile-2.0)) - (modules %default-xorg-modules) - (fonts %default-xorg-fonts) - (configuration-file - (xorg-configuration-file #:modules modules - #:fonts fonts)) - (xorg-server xorg-server) - (xserver-arguments '("-nolisten" "tcp"))) - "Return a @code{startx} script in which @var{modules}, a list of X module -packages, and @var{fonts}, a list of X font directories, are available. See -@code{xorg-wrapper} for more details on the arguments. The result should be -used in place of @code{startx}." +(define* (xorg-start-command #:optional (config (xorg-configuration))) + "Return a @code{startx} script in which the modules, fonts, etc. specified +in @var{config}, are available. The result should be used in place of +@code{startx}." (define X - (xorg-wrapper #:guile guile - #:configuration-file configuration-file - #:modules modules - #:xorg-server xorg-server)) + (xorg-wrapper config)) + (define exp ;; Write a small wrapper around the X server. #~(apply execl #$X #$X ;; Second #$X is for argv[0]. - "-logverbose" "-verbose" "-terminate" #$@xserver-arguments + "-logverbose" "-verbose" "-terminate" + #$@(xorg-configuration-server-arguments config) (cdr (command-line)))) (program-file "startx" exp)) -(define* (xinitrc #:key - (guile (canonical-package guile-2.0)) - fallback-session) +(define* (xinitrc #:key fallback-session) "Return a system-wide xinitrc script that starts the specified X session, which should be passed to this script as the first argument. If not, the @var{fallback-session} will be used or, if @var{fallback-session} is false, a @@ -442,8 +479,8 @@ (define-record-type* (default shepherd)) (auto-login-session slim-configuration-auto-login-session (default #f)) - (startx slim-configuration-startx - (default (xorg-start-command))) + (xorg-configuration slim-configuration-xorg + (default (xorg-configuration))) (sessreg slim-configuration-sessreg (default sessreg))) @@ -460,7 +497,7 @@ (define slim.cfg (slim-configuration-auto-login-session config))) (slim (slim-configuration-slim config)) (xauth (slim-configuration-xauth config)) - (startx (slim-configuration-startx config)) + (startx (xorg-start-command (slim-configuration-xorg config))) (shepherd (slim-configuration-shepherd config)) (theme-name (slim-configuration-theme-name config)) (sessreg (slim-configuration-sessreg config))) @@ -567,8 +604,7 @@ (define-deprecated (slim-service #:key (slim slim) (auto-login? auto-login?) (default-user default-user) (theme theme) (theme-name theme-name) (xauth xauth) (shepherd shepherd) - (auto-login-session auto-login-session) - (startx startx)))) + (auto-login-session auto-login-session)))) ;;; @@ -647,8 +683,8 @@ (define-record-type* (default-user gdm-configuration-default-user (default #f)) (gnome-shell-assets gdm-configuration-gnome-shell-assets (default (list adwaita-icon-theme font-cantarell))) - (x-server gdm-configuration-x-server - (default (xorg-wrapper))) + (xorg-configuration gdm-configuration-xorg + (default (xorg-configuration))) (x-session gdm-configuration-x-session (default (xinitrc)))) @@ -720,7 +756,8 @@ (define (gdm-shepherd-service config) #$(gdm-configuration-dbus-daemon config)) (string-append "GDM_X_SERVER=" - #$(gdm-configuration-x-server config)) + #$(xorg-wrapper + (gdm-configuration-xorg config))) (string-append "GDM_X_SESSION=" #$(gdm-configuration-x-session config)) @@ -756,9 +793,6 @@ (define gdm-service-type "Run the GNOME Desktop Manager (GDM), a program that allows you to log in in a graphical session, whether or not you use GNOME."))) -;; This service isn't working yet; it gets as far as starting to run the -;; greeter from gnome-shell but doesn't get any further. It is here because -;; it doesn't hurt anyone and perhaps it inspires someone to fix it :) (define-deprecated (gdm-service #:key (gdm gdm) (allow-empty-passwords? #t) (x-server (xorg-wrapper))) @@ -785,7 +819,6 @@ (define-deprecated (gdm-service #:key (gdm gdm) (service gdm-service-type (gdm-configuration (gdm gdm) - (allow-empty-passwords? allow-empty-passwords?) - (x-server x-server)))) + (allow-empty-passwords? allow-empty-passwords?)))) ;;; xorg.scm ends here diff --git a/gnu/system.scm b/gnu/system.scm index 6bccdaa8c2..ad0c9e57dc 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver ;;; Copyright © 2015, 2016 Alex Kost ;;; Copyright © 2016 Chris Marusich @@ -66,9 +66,11 @@ (define-module (gnu system) #:use-module (rnrs bytevectors) #:export (operating-system operating-system? + this-operating-system operating-system-bootloader operating-system-services + operating-system-essential-services operating-system-user-services operating-system-packages operating-system-host-name @@ -151,12 +153,16 @@ (define (bootable-kernel-arguments system root-device) (define-record-type* operating-system make-operating-system operating-system? + this-operating-system + (kernel operating-system-kernel ; package (default linux-libre)) (kernel-arguments operating-system-user-kernel-arguments (default '())) ; list of gexps/strings (bootloader operating-system-bootloader) ; + (keyboard-layout operating-system-keyboard-layout ;#f | + (default #f)) (initrd operating-system-initrd ; (list fs) -> file-like (default base-initrd)) (initrd-modules operating-system-initrd-modules ; list of strings @@ -199,6 +205,9 @@ (define-record-type* operating-system (name-service-switch operating-system-name-service-switch ; (default %default-nss)) + (essential-services operating-system-essential-services ; list of services + (thunked) + (default (essential-services this-operating-system))) (services operating-system-user-services ; list of services (default %base-services)) @@ -436,27 +445,22 @@ (define (operating-system-kernel-file os) (file-append (operating-system-kernel os) "/" (system-linux-image-file-name os))) -(define* (operating-system-directory-base-entries os #:key container?) +(define* (operating-system-directory-base-entries os) "Return the basic entries of the 'system' directory of OS for use as the value of the SYSTEM-SERVICE-TYPE service." (let ((locale (operating-system-locale-directory os))) - (with-monad %store-monad - (if container? - (return `(("locale" ,locale))) - (mlet %store-monad - ((kernel -> (operating-system-kernel os)) - (initrd -> (operating-system-initrd-file os)) - (params (operating-system-boot-parameters-file os))) - (return `(("kernel" ,kernel) - ("parameters" ,params) - ("initrd" ,initrd) - ("locale" ,locale)))))))) ;used by libc + (mlet %store-monad ((kernel -> (operating-system-kernel os)) + (initrd -> (operating-system-initrd-file os)) + (params (operating-system-boot-parameters-file os))) + (return `(("kernel" ,kernel) + ("parameters" ,params) + ("initrd" ,initrd) + ("locale" ,locale)))))) ;used by libc -(define* (essential-services os #:key container?) +(define* (essential-services os) "Return the list of essential services for OS. These are special services that implement part of what's declared in OS are responsible for low-level -bookkeeping. CONTAINER? determines whether to return the list of services for -a container or that of a \"bare metal\" system." +bookkeeping." (define known-fs (map file-system-mount-point (operating-system-file-systems os))) @@ -466,8 +470,7 @@ (define known-fs (swaps (swap-services os)) (procs (service user-processes-service-type)) (host-name (host-name-service (operating-system-host-name os))) - (entries (operating-system-directory-base-entries - os #:container? container?))) + (entries (operating-system-directory-base-entries os))) (cons* (service system-service-type entries) %boot-service @@ -495,20 +498,16 @@ (define known-fs other-fs (append mappings swaps - ;; Add the firmware service, unless we are building for a - ;; container. - (if container? - (list %containerized-shepherd-service) - (list %linux-bare-metal-service - (service firmware-service-type - (operating-system-firmware os)))))))) + ;; Add the firmware service. + (list %linux-bare-metal-service + (service firmware-service-type + (operating-system-firmware os))))))) -(define* (operating-system-services os #:key container?) - "Return all the services of OS, including \"internal\" services that do not -explicitly appear in OS." +(define* (operating-system-services os) + "Return all the services of OS, including \"essential\" services." (instantiate-missing-services (append (operating-system-user-services os) - (essential-services os #:container? container?)))) + (operating-system-essential-services os)))) ;;; @@ -806,20 +805,19 @@ (define %sudoers-specification root ALL=(ALL) ALL %wheel ALL=(ALL) ALL\n")) -(define* (operating-system-activation-script os #:key container?) +(define* (operating-system-activation-script os) "Return the activation script for OS---i.e., the code that \"activates\" the stateful part of OS, including user accounts and groups, special directories, etc." - (let* ((services (operating-system-services os #:container? container?)) + (let* ((services (operating-system-services os)) (activation (fold-services services #:target-type activation-service-type))) (activation-service->script activation))) -(define* (operating-system-boot-script os #:key container?) +(define* (operating-system-boot-script os) "Return the boot script for OS---i.e., the code started by the initrd once -we're running in the final root. When CONTAINER? is true, skip all -hardware-related operations as necessary when booting a Linux container." - (let* ((services (operating-system-services os #:container? container?)) +we're running in the final root." + (let* ((services (operating-system-services os)) (boot (fold-services services #:target-type boot-service-type))) (service-value boot))) @@ -839,17 +837,17 @@ (define (operating-system-shepherd-service-names os) #:target-type shepherd-root-service-type)))) -(define* (operating-system-derivation os #:key container?) +(define* (operating-system-derivation os) "Return a derivation that builds OS." - (let* ((services (operating-system-services os #:container? container?)) + (let* ((services (operating-system-services os)) (system (fold-services services))) ;; SYSTEM contains the derivation as a monadic value. (service-value system))) -(define* (operating-system-profile os #:key container?) +(define* (operating-system-profile os) "Return a derivation that builds the system profile of OS." (mlet* %store-monad - ((services -> (operating-system-services os #:container? container?)) + ((services -> (operating-system-services os)) (profile (fold-services services #:target-type profile-service-type))) (match profile @@ -878,7 +876,8 @@ (define make-initrd #:linux (operating-system-kernel os) #:linux-modules (operating-system-initrd-modules os) - #:mapped-devices mapped-devices)) + #:mapped-devices mapped-devices + #:keyboard-layout (operating-system-keyboard-layout os))) (define (locale-name->definition* name) "Variant of 'locale-name->definition' that raises an error upon failure." diff --git a/gnu/system/accounts.scm b/gnu/system/accounts.scm index eb18fb5e43..586cff1842 100644 --- a/gnu/system/accounts.scm +++ b/gnu/system/accounts.scm @@ -67,7 +67,8 @@ (define-record-type* (supplementary-groups user-account-supplementary-groups (default '())) ; list of strings (comment user-account-comment (default "")) - (home-directory user-account-home-directory) + (home-directory user-account-home-directory (thunked) + (default (default-home-directory this-record))) (create-home-directory? user-account-create-home-directory? ;Boolean (default #t)) (shell user-account-shell ; gexp @@ -84,6 +85,10 @@ (define-record-type* (system? user-group-system? ; Boolean (default #f))) +(define (default-home-directory account) + "Return the default home directory for ACCOUNT." + (string-append "/home/" (user-account-name account))) + (define (sexp->user-group sexp) "Take SEXP, a tuple as returned by 'user-group->gexp', and turn it into a user-group record." diff --git a/gnu/system/examples/bare-bones.tmpl b/gnu/system/examples/bare-bones.tmpl index a88bab034f..4f30a5b756 100644 --- a/gnu/system/examples/bare-bones.tmpl +++ b/gnu/system/examples/bare-bones.tmpl @@ -35,8 +35,7 @@ ;; and "video" allows the user to play sound ;; and access the webcam. (supplementary-groups '("wheel" - "audio" "video")) - (home-directory "/home/alice")) + "audio" "video"))) %base-user-accounts)) ;; Globally-installed packages. diff --git a/gnu/system/examples/beaglebone-black.tmpl b/gnu/system/examples/beaglebone-black.tmpl index 11678063b2..def05e807d 100644 --- a/gnu/system/examples/beaglebone-black.tmpl +++ b/gnu/system/examples/beaglebone-black.tmpl @@ -38,8 +38,7 @@ ;; and "video" allows the user to play sound ;; and access the webcam. (supplementary-groups '("wheel" - "audio" "video")) - (home-directory "/home/alice")) + "audio" "video"))) %base-user-accounts)) ;; Globally-installed packages. diff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmpl index c59bf92681..ff4c12b24a 100644 --- a/gnu/system/examples/desktop.tmpl +++ b/gnu/system/examples/desktop.tmpl @@ -42,8 +42,7 @@ (comment "Alice's brother") (group "users") (supplementary-groups '("wheel" "netdev" - "audio" "video")) - (home-directory "/home/bob")) + "audio" "video"))) %base-user-accounts)) ;; This is where we specify system-wide packages. @@ -58,8 +57,8 @@ ;; screen with F1. Use the "desktop" services, which ;; include the X11 log-in service, networking with ;; NetworkManager, and more. - (services (append (list (gnome-desktop-service) - (xfce-desktop-service)) + (services (append (list (service gnome-desktop-service-type) + (service xfce-desktop-service-type)) %desktop-services)) ;; Allow resolution of '.local' host names with mDNS. diff --git a/gnu/system/examples/docker-image.tmpl b/gnu/system/examples/docker-image.tmpl index 9690d651c1..ca633cc838 100644 --- a/gnu/system/examples/docker-image.tmpl +++ b/gnu/system/examples/docker-image.tmpl @@ -15,8 +15,7 @@ (comment "Bob's sister") (group "users") (supplementary-groups '("wheel" - "audio" "video")) - (home-directory "/home/alice")) + "audio" "video"))) %base-user-accounts)) ;; Globally-installed packages. diff --git a/gnu/system/examples/lightweight-desktop.tmpl b/gnu/system/examples/lightweight-desktop.tmpl index a234badd2b..45d9bf447f 100644 --- a/gnu/system/examples/lightweight-desktop.tmpl +++ b/gnu/system/examples/lightweight-desktop.tmpl @@ -35,8 +35,7 @@ (comment "Bob's sister") (group "users") (supplementary-groups '("wheel" "netdev" - "audio" "video")) - (home-directory "/home/alice")) + "audio" "video"))) %base-user-accounts)) ;; Add a bunch of window managers; we can choose one at diff --git a/gnu/system/install.scm b/gnu/system/install.scm index bad318d06b..aad1deb913 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -379,8 +379,7 @@ (define installation-os (group "users") (supplementary-groups '("wheel")) ; allow use of sudo (password "") - (comment "Guest of GNU") - (home-directory "/home/guest")))) + (comment "Guest of GNU")))) (issue %issue) (services %installation-services) diff --git a/gnu/system/keyboard.scm b/gnu/system/keyboard.scm new file mode 100644 index 0000000000..cd3ab37b27 --- /dev/null +++ b/gnu/system/keyboard.scm @@ -0,0 +1,98 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu system keyboard) + #:use-module (guix gexp) + #:use-module ((gnu packages xorg) + #:select (xkeyboard-config console-setup)) + #:use-module (srfi srfi-9 gnu) + #:use-module (ice-9 match) + #:export (keyboard-layout? + keyboard-layout + keyboard-layout-name + keyboard-layout-variant + keyboard-layout-model + keyboard-layout-options + + keyboard-layout->console-keymap)) + +;;; Commentary: +;;; +;;; This module provides a data structure to represent keyboard layouts +;;; according to the XKB naming and classification (see the 'xkeyboard-config' +;;; package). +;;; +;;; Code: + +(define-immutable-record-type + (%keyboard-layout name variant model options) + keyboard-layout? + (name keyboard-layout-name) ;string + (variant keyboard-layout-variant) ;#f | string + (model keyboard-layout-model) ;#f | string + (options keyboard-layout-options)) ;list of strings + +(define* (keyboard-layout name #:optional variant + #:key model (options '())) + "Return a new keyboard layout with the given NAME and VARIANT. + +NAME must be a string such as \"fr\"; VARIANT must be a string such as +\"bepo\" or \"nodeadkeys\". See the 'xkeyboard-config' package for valid +options." + (%keyboard-layout name variant model options)) + +(define* (keyboard-layout->console-keymap layout + #:key + (xkeyboard-config xkeyboard-config)) + "Return a Linux console keymap file for LAYOUT, a record. +Layout information is taken from the XKEYBOARD-CONFIG package." + (define build + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils) + (ice-9 popen) + (ice-9 match)) + + (define pipe + (open-pipe* OPEN_READ + #+(file-append console-setup "/bin/ckbcomp") + (string-append "-I" + #+(file-append xkeyboard-config + "/share/X11/xkb")) + "-rules" "base" + #$@(match (keyboard-layout-model layout) + (#f '()) + (model `("-model" ,model))) + #$(keyboard-layout-name layout) + #$(or (keyboard-layout-variant layout) + "") + #$(string-join (keyboard-layout-options layout) ","))) + + (call-with-output-file #$output + (lambda (output) + (dump-port pipe output))) + + ;; Note: ckbcomp errors out when the layout name is unknown, but + ;; merely emits a warning when the variant is unknown. + (unless (zero? (close-pipe pipe)) + (error "failed to create console keymap for keyboard layout" + #$(keyboard-layout-name layout)))))) + + (computed-file (string-append "console-keymap." + (keyboard-layout-name layout)) + build)) diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm index 3fe3482d7f..37a053cdc3 100644 --- a/gnu/system/linux-container.scm +++ b/gnu/system/linux-container.scm @@ -29,12 +29,31 @@ (define-module (gnu system linux-container) #:use-module (gnu build linux-container) #:use-module (gnu services) #:use-module (gnu services base) + #:use-module (gnu services shepherd) #:use-module (gnu system) #:use-module (gnu system file-systems) #:export (system-container containerized-operating-system container-script)) +(define (container-essential-services os) + "Return a list of essential services corresponding to OS, a +non-containerized OS. This procedure essentially strips essential services +from OS that are needed on the bare metal and not in a container." + (define base + (remove (lambda (service) + (memq (service-kind service) + (list (service-kind %linux-bare-metal-service) + firmware-service-type + system-service-type))) + (operating-system-essential-services os))) + + (cons (service system-service-type + (let ((locale (operating-system-locale-directory os))) + (with-monad %store-monad + (return `(("locale" ,locale)))))) + (append base (list %containerized-shepherd-service)))) + (define (containerized-operating-system os mappings) "Return an operating system based on OS for use in a Linux container environment. MAPPINGS is a list of to realize in the @@ -62,8 +81,10 @@ (define useless-services mingetty-service-type agetty-service-type)) - (operating-system (inherit os) + (operating-system + (inherit os) (swap-devices '()) ; disable swap + (essential-services (container-essential-services os)) (services (remove (lambda (service) (memq (service-kind service) useless-services)) @@ -81,30 +102,26 @@ (define* (container-script os #:key (mappings '())) (operating-system-file-systems os))) (specs (map file-system->spec file-systems))) - (mlet* %store-monad ((os-drv (operating-system-derivation - os - #:container? #t))) + (define script + (with-imported-modules (source-module-closure + '((guix build utils) + (gnu build linux-container))) + #~(begin + (use-modules (gnu build linux-container) + (gnu system file-systems) ;spec->file-system + (guix build utils)) - (define script - (with-imported-modules (source-module-closure - '((guix build utils) - (gnu build linux-container))) - #~(begin - (use-modules (gnu build linux-container) - (gnu system file-systems) ;spec->file-system - (guix build utils)) + (call-with-container (map spec->file-system '#$specs) + (lambda () + (setenv "HOME" "/root") + (setenv "TMPDIR" "/tmp") + (setenv "GUIX_NEW_SYSTEM" #$os) + (for-each mkdir-p '("/run" "/bin" "/etc" "/home" "/var")) + (primitive-load (string-append #$os "/boot"))) + ;; A range of 65536 uid/gids is used to cover 16 bits worth of + ;; users and groups, which is sufficient for most cases. + ;; + ;; See: http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#--private-users= + #:host-uids 65536)))) - (call-with-container (map spec->file-system '#$specs) - (lambda () - (setenv "HOME" "/root") - (setenv "TMPDIR" "/tmp") - (setenv "GUIX_NEW_SYSTEM" #$os-drv) - (for-each mkdir-p '("/run" "/bin" "/etc" "/home" "/var")) - (primitive-load (string-append #$os-drv "/boot"))) - ;; A range of 65536 uid/gids is used to cover 16 bits worth of - ;; users and groups, which is sufficient for most cases. - ;; - ;; See: http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#--private-users= - #:host-uids 65536)))) - - (gexp->script "run-container" script)))) + (gexp->script "run-container" script))) diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 983c6d81c8..656afd1ddb 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès ;;; Copyright © 2016 Mark H Weaver ;;; Copyright © 2016 Jan Nieuwenhuizen ;;; Copyright © 2017 Mathieu Othacehe @@ -31,10 +31,13 @@ (define-module (gnu system linux-initrd) #:use-module (gnu packages disk) #:use-module (gnu packages linux) #:use-module (gnu packages guile) + #:use-module ((gnu packages xorg) + #:select (console-setup xkeyboard-config)) #:use-module ((gnu packages make-bootstrap) #:select (%guile-static-stripped)) #:use-module (gnu system file-systems) #:use-module (gnu system mapped-devices) + #:use-module (gnu system keyboard) #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (ice-9 vlist) @@ -139,6 +142,7 @@ (define* (raw-initrd file-systems (linux linux-libre) (linux-modules '()) (mapped-devices '()) + (keyboard-layout #f) (helper-packages '()) qemu-networking? volatile-root? @@ -152,6 +156,11 @@ (define* (raw-initrd file-systems HELPER-PACKAGES is a list of packages to be copied in the initrd. It may include e2fsck/static or other packages needed by the initrd to check root partition. +When true, KEYBOARD-LAYOUT is a record denoting the desired +console keyboard layout. This is done before MAPPED-DEVICES are set up and +before FILE-SYSTEMS are mounted such that, should the user need to enter a +passphrase or use the REPL, this happens using the intended keyboard layout. + When QEMU-NETWORKING? is true, set up networking with the standard QEMU parameters. @@ -206,6 +215,8 @@ (define kodir (and #$@device-mapping-commands)) #:linux-modules '#$linux-modules #:linux-module-directory '#$kodir + #:keymap-file #+(and=> keyboard-layout + keyboard-layout->console-keymap) #:qemu-guest-networking? #$qemu-networking? #:volatile-root? '#$volatile-root? #:on-error '#$on-error))) @@ -290,6 +301,7 @@ (define* (base-initrd file-systems (linux linux-libre) (linux-modules '()) (mapped-devices '()) + (keyboard-layout #f) qemu-networking? volatile-root? (extra-modules '()) ;deprecated @@ -300,6 +312,11 @@ (define* (base-initrd file-systems on the kernel command line via '--root'. MAPPED-DEVICES is a list of device mappings to realize before FILE-SYSTEMS are mounted. +When true, KEYBOARD-LAYOUT is a record denoting the desired +console keyboard layout. This is done before MAPPED-DEVICES are set up and +before FILE-SYSTEMS are mounted such that, should the user need to enter a +passphrase or use the REPL, this happens using the intended keyboard layout. + QEMU-NETWORKING? and VOLATILE-ROOT? behaves as in raw-initrd. The initrd is automatically populated with all the kernel modules necessary @@ -316,13 +333,18 @@ (define linux-modules* ,@extra-modules)) (define helper-packages - (file-system-packages file-systems #:volatile-root? volatile-root?)) + (append (file-system-packages file-systems + #:volatile-root? volatile-root?) + (if keyboard-layout + (list loadkeys-static) + '()))) (raw-initrd file-systems #:linux linux #:linux-modules linux-modules* #:mapped-devices mapped-devices #:helper-packages helper-packages + #:keyboard-layout keyboard-layout #:qemu-networking? qemu-networking? #:volatile-root? volatile-root? #:on-error on-error)) diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 55cddb1a4b..db9b1707d7 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -58,6 +58,7 @@ (define-module (gnu system vm) #:use-module (gnu bootloader grub) #:use-module (gnu system shadow) #:use-module (gnu system pam) + #:use-module (gnu system linux-container) #:use-module (gnu system linux-initrd) #:use-module (gnu bootloader) #:use-module (gnu system file-systems) @@ -320,7 +321,10 @@ (define schema #:make-disk-image? #f #:single-file-output? #t - #:references-graphs inputs)) + #:references-graphs inputs + + ;; Xorriso seems to be quite memory-hungry, so increase the VM's RAM size. + #:memory-size 512)) (define* (qemu-image #:key (name "qemu-image") @@ -473,9 +477,9 @@ (define schema (local-file (search-path %load-path "guix/store/schema.sql")))) - (mlet %store-monad ((os-drv (operating-system-derivation os #:container? #t)) - (name -> (string-append name ".tar.gz")) - (graph -> "system-graph")) + (let ((os (containerized-operating-system os '())) + (name (string-append name ".tar.gz")) + (graph "system-graph")) (define build (with-extensions (cons guile-json ;for (guix docker) gcrypt-sqlite3&co) ;for (guix store database) @@ -505,7 +509,7 @@ (define build (initialize (root-partition-initializer #:closures '(#$graph) #:register-closures? #$register-closures? - #:system-directory #$os-drv + #:system-directory #$os ;; De-duplication would fail due to ;; cross-device link errors, so don't do it. #:deduplicate? #f)) @@ -523,7 +527,7 @@ (define build (call-with-input-file (string-append "/xchg/" #$graph) read-reference-graph))) - #$os-drv + #$os #:compressor '(#+(file-append gzip "/bin/gzip") "-9n") #:creation-time (make-time time-utc 0 1) #:transformations `((,root-directory -> ""))) @@ -534,7 +538,7 @@ (define build name build #:make-disk-image? #f #:single-file-output? #t - #:references-graphs `((,graph ,os-drv))))) + #:references-graphs `((,graph ,os))))) ;;; @@ -790,6 +794,7 @@ (define virtual-file-systems ;; force the traditional i386/BIOS method. ;; See . (bootloader (bootloader-configuration + (inherit (operating-system-bootloader os)) (bootloader grub-bootloader) (target "/dev/vda"))) diff --git a/gnu/tests.scm b/gnu/tests.scm index 9e8eed7d95..0871b4c6f7 100644 --- a/gnu/tests.scm +++ b/gnu/tests.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2017, 2018 Ludovic Courtès +;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès ;;; Copyright © 2017 Mathieu Othacehe ;;; Copyright © 2017 Tobias Geerinckx-Rice ;;; @@ -219,8 +219,7 @@ (define %simple-os (name "alice") (comment "Bob's sister") (group "users") - (supplementary-groups '("wheel" "audio" "video")) - (home-directory "/home/alice")) + (supplementary-groups '("wheel" "audio" "video"))) %base-user-accounts)))) (define-syntax-rule (simple-operating-system user-services ...) diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm index 277908cc49..c0debbd840 100644 --- a/gnu/tests/install.scm +++ b/gnu/tests/install.scm @@ -74,8 +74,7 @@ (define-os-with-source (%minimal-os %minimal-os-source) (name "alice") (comment "Bob's sister") (group "users") - (supplementary-groups '("wheel" "audio" "video")) - (home-directory "/home/alice")) + (supplementary-groups '("wheel" "audio" "video"))) %base-user-accounts)) (services (cons (service marionette-service-type (marionette-configuration @@ -357,8 +356,7 @@ (define-os-with-source (%minimal-os-on-vda %minimal-os-on-vda-source) (name "alice") (comment "Bob's sister") (group "users") - (supplementary-groups '("wheel" "audio" "video")) - (home-directory "/home/alice")) + (supplementary-groups '("wheel" "audio" "video"))) %base-user-accounts)) (services (cons (service marionette-service-type (marionette-configuration @@ -435,12 +433,10 @@ (define-os-with-source (%separate-home-os %separate-home-os-source) %base-file-systems)) (users (cons* (user-account (name "alice") - (group "users") - (home-directory "/home/alice")) + (group "users")) (user-account (name "charlie") - (group "users") - (home-directory "/home/charlie")) + (group "users")) %base-user-accounts)) (services (cons (service marionette-service-type (marionette-configuration @@ -655,7 +651,6 @@ (define-os-with-source (%encrypted-root-os %encrypted-root-os-source) (users (cons (user-account (name "charlie") (group "users") - (home-directory "/home/charlie") (supplementary-groups '("wheel" "audio" "video"))) %base-user-accounts)) (services (cons (service marionette-service-type @@ -776,7 +771,6 @@ (define-os-with-source (%btrfs-root-os %btrfs-root-os-source) (users (cons (user-account (name "charlie") (group "users") - (home-directory "/home/charlie") (supplementary-groups '("wheel" "audio" "video"))) %base-user-accounts)) (services (cons (service marionette-service-type diff --git a/gnu/tests/networking.scm b/gnu/tests/networking.scm index a97b29bc4b..d1234442bb 100644 --- a/gnu/tests/networking.scm +++ b/gnu/tests/networking.scm @@ -178,9 +178,7 @@ (define %openvswitch-os (static-networking-service "ovs0" "10.1.1.1" #:netmask "255.255.255.252" #:requirement '(openvswitch-configuration)) - (service openvswitch-service-type - (openvswitch-configuration - (package openvswitch))) + (service openvswitch-service-type) openvswitch-configuration-service)) (define (run-openvswitch-test) diff --git a/guix/build-system/dune.scm b/guix/build-system/dune.scm index 8bd41c89f0..6a2f3d16de 100644 --- a/guix/build-system/dune.scm +++ b/guix/build-system/dune.scm @@ -87,6 +87,7 @@ (define* (dune-build store name inputs (build-flags ''()) (out-of-source? #t) (jbuild? #f) + (package #f) (tests? #t) (test-flags ''()) (test-target "test") @@ -125,6 +126,7 @@ (define builder #:build-flags ,build-flags #:out-of-source? ,out-of-source? #:jbuild? ,jbuild? + #:package ,package #:tests? ,tests? #:test-target ,test-target #:install-target ,install-target diff --git a/guix/build/dune-build-system.scm b/guix/build/dune-build-system.scm index 00b0c7c406..7e2ec1e3e1 100644 --- a/guix/build/dune-build-system.scm +++ b/guix/build/dune-build-system.scm @@ -31,27 +31,30 @@ (define-module (guix build dune-build-system) ;; Code: (define* (build #:key (build-flags '()) (jbuild? #f) - (use-make? #f) #:allow-other-keys) + (use-make? #f) (package #f) #:allow-other-keys) "Build the given package." (let ((program (if jbuild? "jbuilder" "dune"))) - (apply invoke program "build" "@install" build-flags)) + (apply invoke program "build" "@install" + (append (if package (list "-p" package) '()) build-flags))) #t) (define* (check #:key (test-flags '()) (test-target "test") tests? - (jbuild? #f) #:allow-other-keys) + (jbuild? #f) (package #f) #:allow-other-keys) "Test the given package." (when tests? (let ((program (if jbuild? "jbuilder" "dune"))) - (apply invoke program "runtest" test-target test-flags))) + (apply invoke program "runtest" test-target + (append (if package (list "-p" package) '()) test-flags)))) #t) (define* (install #:key outputs (install-target "install") (jbuild? #f) - #:allow-other-keys) + (package #f) #:allow-other-keys) "Install the given package." (let ((out (assoc-ref outputs "out")) (program (if jbuild? "jbuilder" "dune"))) - (invoke program install-target "--prefix" out "--libdir" - (string-append out "/lib/ocaml/site-lib"))) + (apply invoke program install-target "--prefix" out "--libdir" + (string-append out "/lib/ocaml/site-lib") + (if package (list package) '()))) #t) (define %standard-phases diff --git a/guix/packages.scm b/guix/packages.scm index d20a2562c3..c2981dda8b 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -48,6 +48,7 @@ (define-module (guix packages) search-path-specification) ;for convenience #:export (origin origin? + this-origin origin-uri origin-method origin-sha256 @@ -63,6 +64,7 @@ (define-module (guix packages) package package? + this-package package-name package-upstream-name package-version @@ -82,7 +84,6 @@ (define-module (guix packages) package-license package-home-page package-supported-systems - package-maintainers package-properties package-location hidden-package @@ -156,6 +157,7 @@ (define-module (guix packages) (define-record-type* origin make-origin origin? + this-origin (uri origin-uri) ; string (method origin-method) ; procedure (sha256 origin-sha256) ; bytevector @@ -247,6 +249,7 @@ (define %hydra-supported-systems (define-record-type* package make-package package? + this-package (name package-name) ; string (version package-version) ; string (source package-source) ; instance @@ -260,9 +263,6 @@ (define-record-type* (default '()) (thunked)) (native-inputs package-native-inputs ; native input packages/derivations (default '()) (thunked)) - (self-native-input? package-self-native-input? ; whether to use itself as - ; a native input when cross- - (default #f)) ; compiling (outputs package-outputs ; list of strings (default '("out"))) @@ -285,7 +285,6 @@ (define-record-type* (home-page package-home-page) (supported-systems package-supported-systems ; list of strings (default %supported-systems)) - (maintainers package-maintainers (default '())) (properties package-properties (default '())) ; alist for anything else @@ -1025,9 +1024,10 @@ (define* (package->bag package #:optional (match (if graft? (or (package-replacement package) package) package) - (($ name version source build-system - args inputs propagated-inputs native-inputs - self-native-input? outputs) + ((and self + ($ name version source build-system + args inputs propagated-inputs native-inputs + outputs)) ;; Even though we prefer to use "@" to separate the package ;; name from the package version in various user-facing parts ;; of Guix, checkStoreName (in nix/libstore/store-api.cc) @@ -1036,15 +1036,11 @@ (define* (package->bag package #:optional #:system system #:target target #:source source - #:inputs (append (inputs) - (propagated-inputs)) + #:inputs (append (inputs self) + (propagated-inputs self)) #:outputs outputs - #:native-inputs `(,@(if (and target - self-native-input?) - `(("self" ,package)) - '()) - ,@(native-inputs)) - #:arguments (args)) + #:native-inputs (native-inputs self) + #:arguments (args self)) (raise (if target (condition (&package-cross-build-system-error diff --git a/guix/records.scm b/guix/records.scm index 0649c90ea3..99507dc384 100644 --- a/guix/records.scm +++ b/guix/records.scm @@ -25,6 +25,8 @@ (define-module (guix records) #:use-module (ice-9 regex) #:use-module (ice-9 rdelim) #:export (define-record-type* + this-record + alist->record object->fields recutils->alist @@ -93,6 +95,17 @@ (define (report-duplicate-field-specifier name ctor) (() #t))))))) +(define-syntax-parameter this-record + (lambda (s) + "Return the record being defined. This macro may only be used in the +context of the definition of a thunked field." + (syntax-case s () + (id + (identifier? #'id) + (syntax-violation 'this-record + "cannot be used outside of a record instantiation" + #'id))))) + (define-syntax make-syntactic-constructor (syntax-rules () "Make the syntactic constructor NAME for TYPE, that calls CTOR, and @@ -105,6 +118,7 @@ (define-syntax make-syntactic-constructor ((_ type name ctor (expected ...) #:abi-cookie abi-cookie #:thunked thunked + #:this-identifier this-identifier #:delayed delayed #:innate innate #:defaults defaults) @@ -148,7 +162,14 @@ (define (innate-field? f) (define (wrap-field-value f value) (cond ((thunked-field? f) - #`(lambda () #,value)) + #`(lambda (x) + (syntax-parameterize ((#,this-identifier + (lambda (s) + (syntax-case s () + (id + (identifier? #'id) + #'x))))) + #,value))) ((delayed-field? f) #`(delay #,value)) (else value))) @@ -234,6 +255,7 @@ (define-syntax define-record-type* (define-record-type* thing make-thing thing? + this-thing (name thing-name (default \"chbouib\")) (port thing-port (default (current-output-port)) (thunked)) @@ -253,7 +275,8 @@ (define-record-type* thing make-thing The 'port' field is \"thunked\", meaning that calls like '(thing-port x)' will actually compute the field's value in the current dynamic extent, which is -useful when referring to fluids in a field's value. +useful when referring to fluids in a field's value. Furthermore, that thunk +can access the record it belongs to via the 'this-thing' identifier. A field can also be marked as \"delayed\" instead of \"thunked\", in which case its value is effectively wrapped in a (delay …) form. @@ -308,7 +331,7 @@ (define (thunked-field-accessor-definition field) (with-syntax ((real-get (wrapped-field-accessor-name field))) #'(define-inlinable (get x) ;; The real value of that field is a thunk, so call it. - ((real-get x))))))) + ((real-get x) x)))))) (define (delayed-field-accessor-definition field) ;; Return the real accessor for FIELD, which is assumed to be a @@ -332,7 +355,9 @@ (define (compute-abi-cookie field-specs) (syntax-case s () ((_ type syntactic-ctor ctor pred + this-identifier (field get properties ...) ...) + (identifier? #'this-identifier) (let* ((field-spec #'((field get properties ...) ...)) (thunked (filter-map thunked-field? field-spec)) (delayed (filter-map delayed-field? field-spec)) @@ -361,15 +386,36 @@ (define-record-type type field-spec* ...) (define #,(current-abi-identifier #'type) #,cookie) + + #,@(if (free-identifier=? #'this-identifier #'this-record) + #'() + #'((define-syntax-parameter this-identifier + (lambda (s) + "Return the record being defined. This macro may +only be used in the context of the definition of a thunked field." + (syntax-case s () + (id + (identifier? #'id) + (syntax-violation 'this-identifier + "cannot be used outside \ +of a record instantiation" + #'id))))))) thunked-field-accessor ... delayed-field-accessor ... (make-syntactic-constructor type syntactic-ctor ctor (field ...) #:abi-cookie #,cookie #:thunked #,thunked + #:this-identifier #'this-identifier #:delayed #,delayed #:innate #,innate - #:defaults #,defaults)))))))) + #:defaults #,defaults))))) + ((_ type syntactic-ctor ctor pred + (field get properties ...) ...) + ;; When no 'this' identifier was specified, use 'this-record'. + #'(define-record-type* type syntactic-ctor ctor pred + this-record + (field get properties ...) ...))))) (define* (alist->record alist make keys #:optional (multiple-value-keys '())) diff --git a/guix/scripts.scm b/guix/scripts.scm index 75d801a466..e4b11d295d 100644 --- a/guix/scripts.scm +++ b/guix/scripts.scm @@ -173,7 +173,8 @@ (define age "Your Guix installation is ~a days old.\n" (seconds->days age)) (seconds->days age))) - (when (or (not age) (>= age old)) + (when (and (or (not age) (>= age old)) + (not (getenv "GUIX_UNINSTALLED"))) (warning (G_ "Consider running 'guix pull' followed by '~a' to get up-to-date packages and security updates.\n") suggested-command) diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index 63f6129279..c27edc7982 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -33,6 +33,7 @@ (define-module (guix scripts environment) #:use-module (guix scripts) #:use-module (guix scripts build) #:use-module (gnu build linux-container) + #:use-module (gnu build accounts) #:use-module (gnu system linux-container) #:use-module (gnu system file-systems) #:use-module (gnu packages) @@ -458,10 +459,20 @@ (define* (launch-environment/container #:key command bash user user-mappings (return (let* ((cwd (getcwd)) (home (getenv "HOME")) - (passwd (mock-passwd (getpwuid (getuid)) - user - bash)) - (home-dir (passwd:dir passwd)) + (passwd (let ((pwd (getpwuid (getuid)))) + (password-entry + (name (or user (passwd:name pwd))) + (real-name (if user + "" + (passwd:gecos pwd))) + (uid 0) (gid 0) (shell bash) + (directory (if user + (string-append "/home/" user) + (passwd:dir pwd)))))) + (groups (list (group-entry (name "users") (gid 0)) + (group-entry (gid 65534) ;the overflow GID + (name "overflow")))) + (home-dir (password-entry-directory passwd)) ;; Bind-mount all requisite store items, user-specified mappings, ;; /bin/sh, the current working directory, and possibly networking ;; configuration files within the container. @@ -519,17 +530,8 @@ (define* (launch-environment/container #:key command bash user user-mappings ;; to read it, such as 'git clone' over SSH, a valid use-case when ;; sharing the host's network namespace. (mkdir-p "/etc") - (call-with-output-file "/etc/passwd" - (lambda (port) - (display (string-join (list (passwd:name passwd) - "x" ; but there is no shadow - "0" "0" ; user is now root - (passwd:gecos passwd) - (passwd:dir passwd) - bash) - ":") - port) - (newline port))) + (write-passwd (list passwd)) + (write-group groups) ;; For convenience, start in the user's current working ;; directory rather than the root directory. @@ -543,32 +545,6 @@ (define* (launch-environment/container #:key command bash user user-mappings (delq 'net %namespaces) ; share host network %namespaces))))))) -(define (mock-passwd passwd user-override shell) - "Generate mock information for '/etc/passwd'. If USER-OVERRIDE is not '#f', -it is expected to be a string representing the mock username; it will produce -a user of that name, with a home directory of '/home/USER-OVERRIDE', and no -GECOS field. If USER-OVERRIDE is '#f', data will be inherited from PASSWD. -In either case, the shadow password and UID/GID are cleared, since the user -runs as root within the container. SHELL will always be used in place of the -shell in PASSWD. - -The resulting vector is suitable for use with Guile's POSIX user procedures. - -See passwd(5) for more information each of the fields." - (if user-override - (vector - user-override - "x" "0" "0" ;; no shadow, user is now root - "" ;; no personal information - (user-override-home user-override) - shell) - (vector - (passwd:name passwd) - "x" "0" "0" ;; no shadow, user is now root - (passwd:gecos passwd) - (passwd:dir passwd) - shell))) - (define (user-override-home user) "Return home directory for override user USER." (string-append "/home/" user)) diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 730b6a0bf2..2aaf1cc44a 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -181,6 +181,7 @@ (define (display-profile-news profile) (new (profile-package-alist (generation-file-name profile current)))) (display-new/upgraded-packages old new + #:concise? #t #:heading (G_ "New in this revision:\n")))) (_ #t))) @@ -377,11 +378,33 @@ (define (new/upgraded-packages alist1 alist2) alist2))) (values new upgraded))) +(define* (ellipsis #:optional (port (current-output-port))) + "Return HORIZONTAL ELLIPSIS three dots if PORT's encoding cannot represent +it." + (match (port-encoding port) + ("UTF-8" "…") + (_ "..."))) + (define* (display-new/upgraded-packages alist1 alist2 - #:key (heading "")) + #:key (heading "") concise?) "Given the two package name/version alists ALIST1 and ALIST2, display the list of new and upgraded packages going from ALIST1 to ALIST2. When ALIST1 -and ALIST2 differ, display HEADING upfront." +and ALIST2 differ, display HEADING upfront. When CONCISE? is true, do not +display long package lists that would fill the user's screen." + (define (pretty str column) + (indented-string (fill-paragraph str (- (%text-width) 4) + column) + 4)) + + (define list->enumeration + (if concise? + (lambda* (lst #:optional (max 12)) + (if (> (length lst) max) + (string-append (string-join (take lst max) ", ") + ", " (ellipsis)) + (string-join lst ", "))) + (cut string-join <> ", "))) + (let-values (((new upgraded) (new/upgraded-packages alist1 alist2))) (unless (and (null? new) (null? upgraded)) (display heading)) @@ -392,21 +415,16 @@ (define* (display-new/upgraded-packages alist1 alist2 (format #t (N_ " ~h new package: ~a~%" " ~h new packages: ~a~%" count) count - (indented-string - (fill-paragraph (string-join (sort (map first new) stringenumeration (sort (map first new) stringenumeration (sort upgraded string (package-synopsis package) P_)) . 3) + (,(lambda (package) + (and=> (package-description package) P_)) . 2) + (,(lambda (type) (match (and=> (package-location type) location-file) ((? string? file) (basename file ".scm")) diff --git a/guix/upstream.scm b/guix/upstream.scm index 55683dd9b7..1326b3db95 100644 --- a/guix/upstream.scm +++ b/guix/upstream.scm @@ -39,6 +39,7 @@ (define-module (guix upstream) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) + #:use-module (rnrs bytevectors) #:use-module (ice-9 match) #:use-module (ice-9 regex) #:export (upstream-source @@ -344,10 +345,10 @@ (define (find2 pred lst1 lst2) (define* (package-update/url-fetch store package source #:key key-download) - "Return the version, tarball, and input changes needed to update PACKAGE to + "Return the version, tarball, and SOURCE, to update PACKAGE to SOURCE, an ." (match source - (($ _ version urls signature-urls changes) + (($ _ version urls signature-urls) (let*-values (((archive-type) (match (and=> (package-source package) origin-uri) ((? string? uri) @@ -371,7 +372,7 @@ (define* (package-update/url-fetch store package source (or signature-urls (circular-list #f))))) (let ((tarball (download-tarball store url signature-url #:key-download key-download))) - (values version tarball changes)))))) + (values version tarball source)))))) (define %method-updates ;; Mapping of origin methods to source update procedures. @@ -404,36 +405,57 @@ (define* (package-update store package updaters (#f (values #f #f #f)))) -(define (update-package-source package version hash) - "Modify the source file that defines PACKAGE to refer to VERSION, -whose tarball has SHA256 HASH (a bytevector). Return the new version string -if an update was made, and #f otherwise." - (define (update-expression expr old-version version old-hash hash) - ;; Update package expression EXPR, replacing occurrences OLD-VERSION by - ;; VERSION and occurrences of OLD-HASH by HASH (base32 representation - ;; thereof). - (let ((old-hash (bytevector->nix-base32-string old-hash)) - (hash (bytevector->nix-base32-string hash))) - (string-replace-substring - (string-replace-substring expr old-hash hash) - old-version version))) +(define* (update-package-source package source hash) + "Modify the source file that defines PACKAGE to refer to SOURCE, an + whose tarball has SHA256 HASH (a bytevector). Return the +new version string if an update was made, and #f otherwise." + (define (update-expression expr replacements) + ;; Apply REPLACEMENTS to package expression EXPR, a string. REPLACEMENTS + ;; must be a list of replacement pairs, either bytevectors or strings. + (fold (lambda (replacement str) + (match replacement + (((? bytevector? old-bv) . (? bytevector? new-bv)) + (string-replace-substring + str + (bytevector->nix-base32-string old-bv) + (bytevector->nix-base32-string new-bv))) + ((old . new) + (string-replace-substring str old new)))) + expr + replacements)) (let ((name (package-name package)) + (version (upstream-source-version source)) (version-loc (package-field-location package 'version))) (if version-loc (let* ((loc (package-location package)) (old-version (package-version package)) (old-hash (origin-sha256 (package-source package))) + (old-url (match (origin-uri (package-source package)) + ((? string? url) url) + (_ #f))) + (new-url (match (upstream-source-urls source) + ((first _ ...) first))) (file (and=> (location-file loc) (cut search-path %load-path <>)))) (if file - (and (edit-expression - ;; Be sure to use absolute filename. - (assq-set! (location->source-properties loc) - 'filename file) - (cut update-expression <> - old-version version old-hash hash)) - version) + ;; Be sure to use absolute filename. Replace the URL directory + ;; when OLD-URL is available; this is useful notably for + ;; mirror://cpan/ URLs where the directory may change as a + ;; function of the person who uploads the package. Note that + ;; package definitions usually concatenate fragments of the URL, + ;; which is why we only attempt to replace a subset of the URL. + (let ((properties (assq-set! (location->source-properties loc) + 'filename file)) + (replacements `((,old-version . ,version) + (,old-hash . ,hash) + ,@(if (and old-url new-url) + `((,(dirname old-url) . + ,(dirname new-url))) + '())))) + (and (edit-expression properties + (cut update-expression <> replacements)) + version)) (begin (warning (G_ "~a: could not locate source file") (location-file loc)) diff --git a/tests/accounts.scm b/tests/accounts.scm index 127861042d..923ba7dc83 100644 --- a/tests/accounts.scm +++ b/tests/accounts.scm @@ -199,12 +199,10 @@ (define allocate-passwd (@@ (gnu build accounts) allocate-passwd)) (directory "/var/empty"))) (allocate-passwd (list (user-account (name "alice") (comment "Alice") - (home-directory "/home/alice") (shell "/bin/sh") (group "users")) (user-account (name "bob") (comment "Bob") - (home-directory "/home/bob") (shell "/bin/gash") (group "wheel")) (user-account (name "sshd") (system? #t) @@ -234,12 +232,10 @@ (define allocate-passwd (@@ (gnu build accounts) allocate-passwd)) (directory "/home/charlie"))) (allocate-passwd (list (user-account (name "alice") (comment "Alice") - (home-directory "/home/alice") (shell "/bin/sh") ;ignored (group "users")) (user-account (name "charlie") (comment "Charlie") - (home-directory "/home/charlie") (shell "/bin/sh") (group "users"))) (list (group-entry (name "users") (gid 1000))) diff --git a/tests/guix-environment-container.sh b/tests/guix-environment-container.sh index a2da9a0773..f2221af95b 100644 --- a/tests/guix-environment-container.sh +++ b/tests/guix-environment-container.sh @@ -44,6 +44,18 @@ else test $? = 42 fi +if test "x$USER" = "x"; then USER="`id -un`"; fi + +# Check whether /etc/passwd and /etc/group are valid. +guix environment -C --ad-hoc --bootstrap guile-bootstrap \ + -- guile -c "(exit (string=? \"$USER\" (passwd:name (getpwuid (getuid)))))" +guix environment -C --ad-hoc --bootstrap guile-bootstrap \ + -- guile -c '(exit (string? (group:name (getgrgid (getgid)))))' +guix environment -C --ad-hoc --bootstrap guile-bootstrap \ + -- guile -c '(use-modules (srfi srfi-1)) + (exit (every group:name + (map getgrgid (vector->list (getgroups)))))' + # Make sure file-not-found errors in mounts are reported. if guix environment --container --ad-hoc --bootstrap guile-bootstrap \ --expose=/does-not-exist -- guile -c 1 2> "$tmpdir/error" diff --git a/tests/pack.scm b/tests/pack.scm index 40473a9fe9..ea88cd89f2 100644 --- a/tests/pack.scm +++ b/tests/pack.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017, 2018 Ludovic Courtès +;;; Copyright © 2017, 2018, 2019 Ludovic Courtès ;;; Copyright © 2018 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. @@ -206,7 +206,11 @@ (define bin (file-exists? "var/guix/db/db.sqlite") (string=? (string-append #$%bootstrap-guile "/bin") (pk 'binlink (readlink bin))) - (string=? (string-append #$profile "/bin") + + ;; This is a relative symlink target. + (string=? (string-drop + (string-append #$profile "/bin") + 1) (pk 'guilelink (readlink "bin")))) (mkdir #$output)))))))) (built-derivations (list check))))) diff --git a/tests/records.scm b/tests/records.scm index d9469a78bd..16b7a9c35e 100644 --- a/tests/records.scm +++ b/tests/records.scm @@ -170,6 +170,64 @@ (define-record-type* foo make-foo (parameterize ((mark (cons 'a 'b))) (eq? (foo-bar y) (mark))))))) +(test-assert "define-record-type* & thunked & this-record" + (begin + (define-record-type* foo make-foo + foo? + (bar foo-bar) + (baz foo-baz (thunked))) + + (let ((x (foo (bar 40) + (baz (+ (foo-bar this-record) 2))))) + (and (= 40 (foo-bar x)) + (= 42 (foo-baz x)))))) + +(test-assert "define-record-type* & thunked & default & this-record" + (begin + (define-record-type* foo make-foo + foo? + (bar foo-bar) + (baz foo-baz (thunked) + (default (+ (foo-bar this-record) 2)))) + + (let ((x (foo (bar 40)))) + (and (= 40 (foo-bar x)) + (= 42 (foo-baz x)))))) + +(test-assert "define-record-type* & thunked & inherit & this-record" + (begin + (define-record-type* foo make-foo + foo? + (bar foo-bar) + (baz foo-baz (thunked) + (default (+ (foo-bar this-record) 2)))) + + (let* ((x (foo (bar 40))) + (y (foo (inherit x) (bar -2))) + (z (foo (inherit x) (baz -2)))) + (and (= -2 (foo-bar y)) + (= 0 (foo-baz y)) + (= 40 (foo-bar z)) + (= -2 (foo-baz z)))))) + +(test-assert "define-record-type* & thunked & inherit & custom this" + (let () + (define-record-type* foo make-foo + foo? this-foo + (thing foo-thing (thunked))) + (define-record-type* bar make-bar + bar? this-bar + (baz bar-baz (thunked))) + + ;; Nest records and test the two self references. + (let* ((x (foo (thing (bar (baz (list this-bar this-foo)))))) + (y (foo-thing x))) + (match (bar-baz y) + ((first second) + (and (eq? second x) + (bar? first) + (eq? first y))))))) + (test-assert "define-record-type* & delayed" (begin (define-record-type* foo make-foo diff --git a/tests/scripts.scm b/tests/scripts.scm index efee271197..0315642f38 100644 --- a/tests/scripts.scm +++ b/tests/scripts.scm @@ -19,6 +19,7 @@ (define-module (test-scripts) #:use-module (guix scripts) + #:use-module (guix tests) #:use-module ((guix scripts build) #:select (%standard-build-options)) #:use-module (srfi srfi-64))