diff options
66 files changed, 2049 insertions, 279 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index b4b7763cb4..9a95e1821d 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -221,6 +221,7 @@ Services * Desktop Services:: D-Bus and desktop services. * Database Services:: SQL databases. * Mail Services:: IMAP, POP3, SMTP, and all that. +* Kerberos Services:: Kerberos services. * Web Services:: Web servers. * Network File System:: NFS related services. * Miscellaneous Services:: Other services. @@ -285,7 +286,7 @@ users (@pxref{Setting Up the Daemon}) and for downloading pre-built binaries from authorized sources (@pxref{Substitutes}). @cindex extensibility of the distribution -@cindex customization of packages +@cindex customization, of packages Guix includes package definitions for many GNU and non-GNU packages, all of which @uref{https://www.gnu.org/philosophy/free-sw.html, respect the user's computing freedom}. It is @emph{extensible}: users can write @@ -339,6 +340,7 @@ garbage collection of packages (@pxref{Features}). @node Installation @chapter Installation +@cindex installing Guix GNU Guix is available for download from its website at @url{http://www.gnu.org/software/guix/}. This section describes the software requirements of Guix, as well as how to install it and get @@ -368,6 +370,7 @@ system, such as @file{/etc}, are left untouched. @node Binary Installation @section Binary Installation +@cindex installing Guix from binaries This section describes how to install Guix on an arbitrary system from a self-contained tarball providing binaries for Guix and for all its dependencies. This is often quicker than installing from source, which @@ -378,6 +381,7 @@ Installing goes along these lines: @enumerate @item +@cindex downloading Guix binary Download the binary tarball from @indicateurl{ftp://alpha.gnu.org/gnu/guix/guix-binary-@value{VERSION}.@var{system}.tar.xz}, where @var{system} is @code{x86_64-linux} for an @code{x86_64} machine @@ -493,6 +497,7 @@ Directories,,, texinfo, GNU Texinfo}, for more details on changing the Info search path.) @item +@cindex substitutes, authorization thereof To use substitutes from @code{hydra.gnu.org} or one of its mirrors (@pxref{Substitutes}), authorize them: @@ -576,6 +581,7 @@ following packages are also needed: C++11 standard. @end itemize +@cindex state directory When configuring Guix on a system that already has a Guix installation, be sure to specify the same state directory as the existing installation using the @code{--localstatedir} option of the @command{configure} @@ -584,6 +590,7 @@ GNU Coding Standards}). The @command{configure} script protects against unintended misconfiguration of @var{localstatedir} so you do not inadvertently corrupt your store (@pxref{The Store}). +@cindex Nix, compatibility When a working installation of @url{http://nixos.org/nix/, the Nix package manager} is available, you can instead configure Guix with @code{--disable-daemon}. In that case, @@ -602,6 +609,7 @@ your goal is to share the store with Nix. @node Running the Test Suite @section Running the Test Suite +@cindex test suite After a successful @command{configure} and @code{make} run, it is a good idea to run the test suite. It can help catch issues with the setup or environment, or bugs in Guix itself---and really, reporting test @@ -687,6 +695,7 @@ the daemon to download pre-built binaries. @node Build Environment Setup @subsection Build Environment Setup +@cindex build environment In a standard multi-user setup, Guix and its daemon---the @command{guix-daemon} program---are installed by the system administrator; @file{/gnu/store} is owned by @code{root} and @@ -1202,6 +1211,7 @@ versions may be incompatible. @subsection X11 Fonts +@cindex fonts The majority of graphical applications use Fontconfig to locate and load fonts and perform X11-client-side rendering. The @code{fontconfig} package in Guix looks for fonts in @file{$HOME/.guix-profile} @@ -1221,6 +1231,7 @@ for Chinese languages: guix package -i font-adobe-source-han-sans:cn @end example +@cindex @code{xterm} Older programs such as @command{xterm} do not use Fontconfig and instead rely on server-side font rendering. Such programs require to specify a full name of a font using XLFD (X Logical Font Description), like this: @@ -1236,11 +1247,13 @@ your Guix profile, you need to extend the font path of the X server: xset +fp ~/.guix-profile/share/fonts/truetype @end example +@cindex @code{xlsfonts} After that, you can run @code{xlsfonts} (from @code{xlsfonts} package) to make sure your TrueType fonts are listed there. @subsection X.509 Certificates +@cindex @code{nss-certs} The @code{nss-certs} package provides X.509 certificates, which allow programs to authenticate Web servers accessed over HTTPS. @@ -1251,6 +1264,7 @@ information. @subsection Emacs Packages +@cindex @code{emacs} When you install Emacs packages with Guix, the elisp files may be placed either in @file{$HOME/.guix-profile/share/emacs/site-lisp/} or in sub-directories of @@ -1274,6 +1288,7 @@ option (@pxref{Init File,,, emacs, The GNU Emacs Manual}). @node Package Management @chapter Package Management +@cindex packages The purpose of GNU Guix is to allow users to easily install, upgrade, and remove software packages, without having to know about their build procedures or dependencies. Guix also goes beyond this obvious set of @@ -1321,6 +1336,7 @@ The @command{guix package} command is the central tool to manage packages (@pxref{Invoking guix package}). It operates on the per-user profiles, and can be used @emph{with normal user privileges}. +@cindex transactions The command provides the obvious install, remove, and upgrade operations. Each invocation is actually a @emph{transaction}: either the specified operation succeeds, or nothing happens. Thus, if the @@ -1376,6 +1392,10 @@ package into their profile (@pxref{Invoking guix environment}). @node Invoking guix package @section Invoking @command{guix package} +@cindex installing packages +@cindex removing packages +@cindex package installation +@cindex package removal The @command{guix package} command is the tool that allows users to install, upgrade, and remove packages, as well as rolling back to previous configurations. It operates only on the user's own profile, @@ -1385,7 +1405,7 @@ is: @example guix package @var{options} @end example - +@cindex transactions Primarily, @var{options} specifies the operations to be performed during the transaction. Upon completion, a new profile is created, but previous @dfn{generations} of the profile remain available, should the user @@ -1403,6 +1423,7 @@ whereby the user specifies the exact set of packages to be available and passes it @i{via} the @option{--manifest} option (@pxref{profile-manifest, @option{--manifest}}). +@cindex profile For each user, a symlink to the user's default profile is automatically created in @file{$HOME/.guix-profile}. This symlink always points to the current generation of the user's default profile. Thus, users can add @@ -1509,6 +1530,7 @@ and/or output name in addition to the package name. For instance, @item --upgrade[=@var{regexp} @dots{}] @itemx -u [@var{regexp} @dots{}] +@cindex upgrading packages Upgrade all the installed packages. If one or more @var{regexp}s are specified, upgrade only installed packages whose name matches a @var{regexp}. Also see the @code{--do-not-upgrade} option below. @@ -1557,6 +1579,9 @@ of packages: @end example @item --roll-back +@cindex rolling back +@cindex undoing transactions +@cindex transactions, undoing Roll back to the previous @dfn{generation} of the profile---i.e., undo the last transaction. @@ -1573,6 +1598,7 @@ generations in a profile is always linear. @item --switch-generation=@var{pattern} @itemx -S @var{pattern} +@cindex generations Switch to a particular generation defined by @var{pattern}. @var{pattern} may be either a generation number or a number prefixed @@ -1754,6 +1780,7 @@ Multiple Outputs}), and the source location of its definition. @item --list-generations[=@var{pattern}] @itemx -l [@var{pattern}] +@cindex generations Return a list of generations along with their creation dates; for each generation, show the installed packages, with the most recently installed packages shown last. Note that the zeroth generation is never @@ -1855,6 +1882,7 @@ your system has unpatched security vulnerabilities. @cindex security @cindex digital signatures +@cindex substitutes, authorization thereof To allow Guix to download substitutes from @code{hydra.gnu.org} or a mirror thereof, you must add its public key to the access control list (ACL) of archive @@ -1964,6 +1992,7 @@ like to discuss this project, join us on @email{guix-devel@@gnu.org}. @cindex multiple-output packages @cindex package outputs +@cindex outputs Often, packages defined in Guix have a single @dfn{output}---i.e., the source package leads to exactly one directory in the store. When running @@ -1986,6 +2015,7 @@ which contains everything but the documentation, one would run: guix package -i glib @end example +@cindex documentation The command to install its documentation is: @example @@ -2015,6 +2045,7 @@ guix package}). @section Invoking @command{guix gc} @cindex garbage collector +@cindex disk space Packages that are installed, but not used, may be @dfn{garbage-collected}. The @command{guix gc} command allows users to explicitly run the garbage collector to reclaim space from the @file{/gnu/store} directory. It is @@ -2097,6 +2128,7 @@ In addition, the references among existing store files can be queried: @item --references @itemx --referrers +@cindex package dependencies List the references (respectively, the referrers) of store files given as arguments. @@ -2159,6 +2191,9 @@ this option is primarily useful when the daemon was running with @node Invoking guix pull @section Invoking @command{guix pull} +@cindex upgrading Guix +@cindex @command{guix pull} +@cindex pull Packages are installed or upgraded to the latest version available in the distribution currently available on your local machine. To update that distribution, along with the Guix tools, you must run @command{guix @@ -2201,11 +2236,14 @@ useful to Guix developers. @node Invoking guix archive @section Invoking @command{guix archive} +@cindex @command{guix archive} +@cindex archive The @command{guix archive} command allows users to @dfn{export} files from the store into a single archive, and to later @dfn{import} them. In particular, it allows store files to be transferred from one machine to the store on another machine. +@cindex exporting store items To export store files as an archive to standard output, run: @example @@ -2729,6 +2767,7 @@ A one-line description of the package. A more elaborate description of the package. @item @code{license} +@cindex license, of packages The license of the package; a value from @code{(guix licenses)}, or a list of such values. @@ -4266,6 +4305,8 @@ the Scheme programming interface of Guix in a convenient way. @node Invoking guix build @section Invoking @command{guix build} +@cindex package building +@cindex @command{guix build} The @command{guix build} command builds packages or derivations and their dependencies, and prints the resulting store paths. Note that it does not modify the user's profile---this is the job of the @@ -4720,6 +4761,7 @@ You can freely access a huge library of build logs! @node Invoking guix edit @section Invoking @command{guix edit} +@cindex @command{guix edit} @cindex package definition, editing So many packages, so many source files! The @command{guix edit} command facilitates the life of users and packagers by pointing their editor at @@ -4750,6 +4792,8 @@ guix-search-by-name} and similar commands (@pxref{Emacs Commands}). @node Invoking guix download @section Invoking @command{guix download} +@cindex @command{guix download} +@cindex downloading package sources When writing a package definition, developers typically need to download a source tarball, compute its SHA256 hash, and write that hash in the package definition (@pxref{Defining Packages}). The @@ -4772,18 +4816,32 @@ they are not available, an error is raised. @xref{Guile Preparations, how to install the GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile}, for more information. -The following option is available: +@command{guix download} verifies HTTPS server certificates by loading +the certificates of X.509 authorities from the directory pointed to by +the @code{SSL_CERT_DIR} environment variable (@pxref{X.509 +Certificates}), unless @option{--no-check-certificate} is used. + +The following options are available: @table @code @item --format=@var{fmt} @itemx -f @var{fmt} Write the hash in the format specified by @var{fmt}. For more information on the valid values for @var{fmt}, @pxref{Invoking guix hash}. + +@item --no-check-certificate +Do not validate the X.509 certificates of HTTPS servers. + +When using this option, you have @emph{absolutely no guarantee} that you +are communicating with the authentic server responsible for the given +URL, which makes you vulnerable to ``man-in-the-middle'' attacks. + @end table @node Invoking guix hash @section Invoking @command{guix hash} +@cindex @command{guix hash} The @command{guix hash} command computes the SHA256 hash of a file. It is primarily a convenience tool for anyone contributing to the distribution: it computes the cryptographic hash of a file, which can be @@ -4848,6 +4906,7 @@ $ guix hash -rx . @cindex importing packages @cindex package import @cindex package conversion +@cindex Invoking @command{guix import} The @command{guix import} command is useful for people who would like to add a package to the distribution with as little work as possible---a legitimate demand. The command knows of a few @@ -5068,6 +5127,12 @@ are: @uref{http://elpa.gnu.org/packages, GNU}, selected by the @code{gnu} identifier. This is the default. +Packages from @code{elpa.gnu.org} are signed with one of the keys +contained in the GnuPG keyring at +@file{share/emacs/25.1/etc/package-keyring.gpg} (or similar) in the +@code{emacs} package (@pxref{Package Installation, ELPA package +signatures,, emacs, The GNU Emacs Manual}). + @item @uref{http://stable.melpa.org/packages, MELPA-Stable}, selected by the @code{melpa-stable} identifier. @@ -5086,6 +5151,7 @@ is welcome here (@pxref{Contributing}). @node Invoking guix refresh @section Invoking @command{guix refresh} +@cindex @command {guix refresh} The primary audience of the @command{guix refresh} command is developers of the GNU software distribution. By default, it reports any packages provided by the distribution that are outdated compared to the latest @@ -5289,6 +5355,9 @@ otherwise. @node Invoking guix lint @section Invoking @command{guix lint} + +@cindex @command{guix lint} +@cindex package, checking for errors The @command{guix lint} command is meant to help package developers avoid common errors and use a consistent style. It runs a number of checks on a given set of packages in order to find common mistakes in their @@ -5376,6 +5445,10 @@ names returned by @code{--list-checkers}. @node Invoking guix size @section Invoking @command{guix size} +@cindex size +@cindex package size +@cindex closure +@cindex @command{guix size} The @command{guix size} command helps package developers profile the disk usage of packages. It is easy to overlook the impact of an additional dependency added to a package, or the impact of using a @@ -5479,6 +5552,8 @@ Consider packages for @var{system}---e.g., @code{x86_64-linux}. @section Invoking @command{guix graph} @cindex DAG +@cindex @command{guix graph} +@cindex package dependencies Packages and their dependencies form a @dfn{graph}, specifically a directed acyclic graph (DAG). It can quickly become difficult to have a mental model of the package DAG, so the @command{guix graph} command @@ -5621,6 +5696,8 @@ guix graph -e '(@@@@ (gnu packages commencement) gnu-make-final)' @cindex reproducible build environments @cindex development environments +@cindex @command{guix environment} +@cindex environment, package build environment The purpose of @command{guix environment} is to assist hackers in creating reproducible development environments without polluting their package profile. The @command{guix environment} tool takes one or more @@ -5867,6 +5944,7 @@ build} supports (@pxref{Common Build Options}). @node Invoking guix publish @section Invoking @command{guix publish} +@cindex @command{guix publish} The purpose of @command{guix publish} is to enable users to easily share their store with others, who can then use it as a substitute server (@pxref{Substitutes}). @@ -5977,7 +6055,8 @@ of the @code{operating-system} declaration (@pxref{guix-publish-service, @cindex reproducible builds @cindex verifiable builds - +@cindex @command{guix challenge} +@cindex challenge Do the binaries provided by this server really correspond to the source code it claims to build? Is a package build process deterministic? These are the questions the @command{guix challenge} command attempts to @@ -6102,7 +6181,7 @@ URLs to compare to. @node Invoking guix container @section Invoking @command{guix container} @cindex container - +@cindex @command{guix container} @quotation Note As of version @value{VERSION}, this tool is experimental. The interface is subject to radical change in the future. @@ -6228,6 +6307,7 @@ to join! @xref{Contributing}, for information about how you can help. @node System Installation @section System Installation +@cindex installing GuixSD @cindex Guix System Distribution This section explains how to install the Guix System Distribution (GuixSD) on a machine. The Guix package manager can @@ -6471,6 +6551,8 @@ ifconfig @var{interface} up @end example @item Wireless connection +@cindex wireless +@cindex WiFi To configure wireless networking, you can create a configuration file for the @command{wpa_supplicant} configuration tool (its location is not important) using one of the available text editors such as @@ -6503,6 +6585,7 @@ wpa_supplicant -c wpa_supplicant.conf -i @var{interface} -B Run @command{man wpa_supplicant} for more information. @end table +@cindex DHCP At this point, you need to acquire an IP address. On a network where IP addresses are automatically assigned @i{via} DHCP, you can run: @@ -6711,6 +6794,7 @@ that. @node Building the Installation Image @subsection Building the Installation Image +@cindex installation image The installation image described above was built using the @command{guix system} command, specifically: @@ -6825,6 +6909,7 @@ version: @unnumberedsubsubsec System Services +@cindex services @vindex %base-services The @code{services} field lists @dfn{system services} to be made available when the system starts (@pxref{Services}). @@ -6979,6 +7064,8 @@ the command-line of the kernel---e.g., @code{("console=ttyS0")}. The system bootloader configuration object. @xref{GRUB Configuration}. @item @code{initrd} (default: @code{base-initrd}) +@cindex initrd +@cindex initial RAM disk A two-argument monadic procedure that returns an initial RAM disk for the Linux kernel. @xref{Initial RAM Disk}. @@ -7370,6 +7457,9 @@ automatically later. @node User Accounts @subsection User Accounts +@cindex users +@cindex accounts +@cindex user accounts User accounts and groups are entirely managed through the @code{operating-system} declaration. They are specified with the @code{user-account} and @code{user-group} forms: @@ -7403,6 +7493,7 @@ be specified: The name of the user account. @item @code{group} +@cindex groups This is the name (a string) or identifier (a number) of the user group this account belongs to. @@ -7451,6 +7542,7 @@ Manual}, for information on Guile's @code{crypt} procedure. @end table @end deftp +@cindex groups User group declarations are even simpler: @example @@ -7693,6 +7785,7 @@ declaration. * Desktop Services:: D-Bus and desktop services. * Database Services:: SQL databases. * Mail Services:: IMAP, POP3, SMTP, and all that. +* Kerberos Services:: Kerberos services. * Web Services:: Web servers. * Network File System:: NFS related services. * Miscellaneous Services:: Other services. @@ -7738,6 +7831,7 @@ This is the data type representing the configuration of login. @table @asis @item @code{motd} +@cindex message of the day A file-like object containing the ``message of the day''. @item @code{allow-empty-passwords?} (default: @code{#t}) @@ -7908,6 +8002,8 @@ external name servers do not even need to be queried. @end defvr @anchor{syslog-configuration-type} +@cindex syslog +@cindex logging @deftp {Data Type} syslog-configuration This data type represents the configuration of the syslog daemon. @@ -7922,6 +8018,7 @@ The syslog configuration file to use. @end deftp @anchor{syslog-service} +@cindex syslog @deffn {Scheme Procedure} syslog-service @var{config} Return a service that runs a syslog daemon according to @var{config}. @@ -7945,6 +8042,7 @@ Name of the group for build user accounts. Number of build user accounts to create. @item @code{authorize-key?} (default: @code{#t}) +@cindex substitutes, authorization thereof Whether to authorize the substitute keys listed in @code{authorized-keys}---by default that of @code{hydra.gnu.org} (@pxref{Substitutes}). @@ -7991,6 +8089,8 @@ This is the name of the file where some random bytes are saved by It defaults to @file{/var/lib/random-seed}. @end defvr +@cindex keymap +@cindex keyboard @deffn {Scheme Procedure} console-keymap-service @var{files} ... @cindex keyboard layout Return a service to load console keymaps from @var{files} using @@ -8012,6 +8112,8 @@ See @code{man loadkeys} for details. @end deffn +@cindex mouse +@cindex gpm @deffn {Scheme Procedure} gpm-service [#:gpm @var{gpm}] @ [#:options] Run @var{gpm}, the general-purpose mouse daemon, with the given @@ -8073,6 +8175,7 @@ commonly used for real-time audio systems. @subsubsection Scheduled Job Execution @cindex cron +@cindex mcron @cindex scheduling jobs The @code{(gnu services mcron)} module provides an interface to GNU@tie{}mcron, a daemon to run jobs at scheduled times (@pxref{Top,,, @@ -8168,6 +8271,7 @@ specifications,, mcron, GNU@tie{}mcron}). @cindex rottlog @cindex log rotation +@cindex logging Log files such as those found in @file{/var/log} tend to grow endlessly, so it's a good idea to @dfn{rotate} them once in a while---i.e., archive their contents in separate files, possibly compressed. The @code{(gnu @@ -8262,6 +8366,8 @@ gateway. @end deffn @cindex wicd +@cindex wireless +@cindex WiFi @cindex network management @deffn {Scheme Procedure} wicd-service [#:wicd @var{wicd}] Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network @@ -8291,6 +8397,8 @@ several the @command{connmanctl} command to interact with the daemon and configure networking." @end deffn +@cindex NTP +@cindex real time clock @deffn {Scheme Procedure} ntp-service [#:ntp @var{ntp}] @ [#:servers @var{%ntp-servers}] @ [#:allow-large-adjustment? #f] @@ -8305,6 +8413,7 @@ make an initial adjustment of more than 1,000 seconds. List of host names used as the default NTP servers. @end defvr +@cindex Tor @deffn {Scheme Procedure} tor-service [@var{config-file}] [#:tor @var{tor}] Return a service to run the @uref{https://torproject.org, Tor} anonymous networking daemon. @@ -8352,6 +8461,8 @@ configuration file. @end deffn Furthermore, @code{(gnu services ssh)} provides the following services. +@cindex SSH +@cindex SSH server @deffn {Scheme Procedure} lsh-service [#:host-key "/etc/lsh/host-key"] @ [#:daemonic? #t] [#:interfaces '()] [#:port-number 22] @ @@ -8389,6 +8500,8 @@ root. The other options should be self-descriptive. @end deffn +@cindex SSH +@cindex SSH server @deffn {Scheme Variable} openssh-service-type This is the type for the @uref{http://www.openssh.org, OpenSSH} secure shell daemon, @command{sshd}. Its value must be an @@ -8552,6 +8665,8 @@ sockets. @node X Window @subsubsection X Window +@cindex X11 +@cindex X Window System 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 @@ -8649,6 +8764,7 @@ Relogin after logout. @end table @end deftp +@cindex login manager @deffn {Scheme Procedure} sddm-service config Return a service that spawns the SDDM graphical login manager for config of type @code{<sddm-configuration>}. @@ -9826,6 +9942,8 @@ Users need to be in the @code{lp} group to access the D-Bus service. @node Database Services @subsubsection Database Services +@cindex database +@cindex SQL The @code{(gnu services databases)} module provides the following services. @deffn {Scheme Procedure} postgresql-service [#:postgresql postgresql] @ @@ -9862,6 +9980,8 @@ For MariaDB, the root password is empty. @node Mail Services @subsubsection Mail Services +@cindex mail +@cindex email The @code{(gnu services mail)} module provides Guix service definitions for mail services. Currently the only implemented service is Dovecot, an IMAP, POP3, and LMTP server. @@ -11228,9 +11348,46 @@ could instantiate a dovecot service like this: (string ""))) @end example + +@node Kerberos Services +@subsubsection Kerberos Services +@cindex Kerberos + +The @code{(gnu services Kerberos)} module provides services relating to +the authentication protocol @dfn{Kerberos}. + +@subsubheading PAM krb5 Service +@cindex pam-krb5 + +The pam-krb5 service allows for login authentication and password +management via Kerberos. +You will need this service if you want PAM enabled applications to authenticate +users using Kerberos. + +@defvr {Scheme Variable} pam-krb5-service-type +A service type for the Kerberos 5 PAM module. +@end defvr + +@deftp {Data Type} pam-krb5-configuration +Data type representing the configuration of the Kerberos 5 PAM module +This type has the following parameters: +@table @asis +@item @code{pam-krb5} (default: @code{pam-krb5}) +The pam-krb5 package to use. + +@item @code{minimum-uid} (default: @code{1000}) +The smallest user ID for which Kerberos authentications should be attempted. +Local accounts with lower values will silently fail to authenticate. +@end table +@end deftp + + @node Web Services @subsubsection Web Services +@cindex web +@cindex www +@cindex HTTP The @code{(gnu services web)} module provides the following service: @deffn {Scheme Procedure} nginx-service [#:nginx nginx] @ @@ -11361,7 +11518,7 @@ The @dfn{global security system} (GSS) daemon provides strong security for RPC based protocols. Before exchanging RPC requests an RPC client must establish a security context. Typically this is done using the Kerberos command @command{kinit} -or automatically at login time using PAM services. +or automatically at login time using PAM services (@pxref{Kerberos Services}). @defvr {Scheme Variable} gss-service-type A service type for the Global Security System (GSS) daemon. @@ -11446,6 +11603,7 @@ resolution when the graphical console window resizes. @end deffn @subsubsection Dictionary Services +@cindex dictionary The @code{(gnu services dict)} module provides the following service: @deffn {Scheme Procedure} dicod-service [#:config (dicod-configuration)] @@ -11737,8 +11895,8 @@ Reference Manual}). For example: @node Initial RAM Disk @subsection Initial RAM Disk -@cindex initial RAM disk (initrd) -@cindex initrd (initial RAM disk) +@cindex initrd +@cindex initial RAM disk For bootstrapping purposes, the Linux-Libre kernel is passed an @dfn{initial RAM disk}, or @dfn{initrd}. An initrd contains a temporary root file system as well as an initialization script. The latter is @@ -11814,6 +11972,8 @@ Now that you know all the features that initial RAM disks produced by @code{base-initrd} provide, here is how to use it and customize it further. +@cindex initrd +@cindex initial RAM disk @deffn {Monadic Procedure} base-initrd @var{file-systems} @ [#:qemu-networking? #f] [#:virtio? #t] [#:volatile-root? #f] @ [#:extra-modules '()] [#:mapped-devices '()] @@ -12016,6 +12176,7 @@ once @command{reconfigure} has completed. @end quotation @item switch-generation +@cindex generations Switch to an existing system generation. This action atomically switches the system profile to the specified system generation. It also rearranges the system's existing GRUB menu entries. It makes the menu @@ -12052,6 +12213,7 @@ deactivating services. This action will fail if the specified generation does not exist. @item roll-back +@cindex rolling back Switch to the preceding system generation. The next time the system boots, it will use the preceding system generation. This is the inverse of @command{reconfigure}, and it is exactly the same as invoking @@ -12271,11 +12433,13 @@ example graph. @node Running GuixSD in a VM @subsection Running GuixSD in a Virtual Machine +@cindex virtual machine One way to run GuixSD in a virtual machine (VM) is to build a GuixSD virtual machine image using @command{guix system vm-image} (@pxref{Invoking guix system}). The returned image is in qcow2 format, which the @uref{http://qemu.org/, QEMU emulator} can efficiently use. +@cindex QEMU To run the image in QEMU, copy it out of the store (@pxref{The Store}) and give yourself permission to write to the copy. When invoking QEMU, you must choose a system emulator that is suitable for your hardware @@ -12331,6 +12495,8 @@ network connectivity, like for example @command{curl}. @subsubsection Connecting Through SSH +@cindex SSH +@cindex SSH server To enable SSH inside a VM you need to add a SSH server like @code{(dropbear-service)} or @code{(lsh-service)} to your VM. The @code{(lsh-service}) doesn't currently boot unsupervised. It requires you to type some characters to initialize the @@ -12769,6 +12935,7 @@ extend it by passing it lists of packages to add to the system profile. @node Shepherd Services @subsubsection Shepherd Services +@cindex shepherd services @cindex PID 1 @cindex init system The @code{(gnu services shepherd)} module provides a way to define @@ -13093,6 +13260,7 @@ bootstrap)} module. For more information on bootstrapping, @node Packaging Guidelines @section Packaging Guidelines +@cindex packages, creating The GNU distribution is nascent and may well lack some of your favorite packages. This section describes how you can help make the distribution grow. @xref{Contributing}, for additional information on how you can @@ -13170,7 +13338,7 @@ needed is to review and apply the patch. @subsection Software Freedom @c Adapted from http://www.gnu.org/philosophy/philosophy.html. - +@cindex free software The GNU operating system has been developed so that users can have freedom in their computing. GNU is @dfn{free software}, meaning that users have the @url{http://www.gnu.org/philosophy/free-sw.html,four @@ -13197,6 +13365,7 @@ upstream source. @node Package Naming @subsection Package Naming +@cindex package name A package has actually two names associated with it: First, there is the name of the @emph{Scheme variable}, the one following @code{define-public}. By this name, the package can be made known in the @@ -13221,6 +13390,7 @@ Font package names are handled differently, @pxref{Fonts}. @node Version Numbers @subsection Version Numbers +@cindex package version We usually package only the latest version of a given free software project. But sometimes, for instance for incompatible library versions, two (or more) versions of the same package are needed. These require @@ -13313,6 +13483,8 @@ definition may look like this: @node Synopses and Descriptions @subsection Synopses and Descriptions +@cindex package description +@cindex package synopsis As we have seen before, each package in GNU@tie{}Guix includes a synopsis and a description (@pxref{Defining Packages}). Synopses and descriptions are important: They are what @command{guix package @@ -13379,6 +13551,7 @@ for the X11 resize-and-rotate (RandR) extension. @dots{}") @node Python Modules @subsection Python Modules +@cindex python We currently package Python 2 and Python 3, under the Scheme variable names @code{python-2} and @code{python} as explained in @ref{Version Numbers}. To avoid confusion and naming clashes with other programming languages, it @@ -13449,6 +13622,7 @@ size}}). @node Perl Modules @subsection Perl Modules +@cindex perl Perl programs standing for themselves are named as any other package, using the lowercase upstream name. For Perl packages containing a single class, we use the lowercase class name, @@ -13464,6 +13638,7 @@ prefix. For instance, @code{libwww-perl} becomes @code{perl-libwww}. @node Java Packages @subsection Java Packages +@cindex java Java programs standing for themselves are named as any other package, using the lowercase upstream name. @@ -13483,6 +13658,7 @@ dashes and prepend the prefix @code{java-}. So the class @node Fonts @subsection Fonts +@cindex fonts For fonts that are in general not installed by a user for typesetting purposes, or that are distributed as part of a larger software package, we rely on the general packaging rules for software; for instance, this @@ -13656,6 +13832,7 @@ implicitly used by any package that uses @code{gnu-build-system} @unnumberedsubsec Building the Bootstrap Binaries +@cindex bootstrap binaries Because the final tool chain does not depend on the bootstrap binaries, those rarely need to be updated. Nevertheless, it is useful to have an automated way to produce them, should an update occur, and this is what @@ -13751,7 +13928,7 @@ providing artwork and themes, making suggestions, and more---thank you! @c ********************************************************************* @node GNU Free Documentation License @appendix GNU Free Documentation License - +@cindex license, GNU Free Documentation License @include fdl-1.3.texi @c ********************************************************************* diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm index 3fccc9addb..b71d6a5f88 100644 --- a/gnu/build/linux-container.scm +++ b/gnu/build/linux-container.scm @@ -24,6 +24,7 @@ #:use-module (guix utils) #:use-module (guix build utils) #:use-module (guix build syscalls) + #:use-module (gnu system file-systems) ;<file-system> #:use-module ((gnu build file-systems) #:select (mount-file-system)) #:export (user-namespace-supported? unprivileged-user-namespace-supported? @@ -72,8 +73,9 @@ exists." ;; specification: ;; https://raw.githubusercontent.com/docker/libcontainer/master/SPEC.md (define* (mount-file-systems root mounts #:key mount-/sys? mount-/proc?) - "Mount the essential file systems and the those in the MOUNTS list relative -to ROOT, then make ROOT the new root directory for the process." + "Mount the essential file systems and the those in MOUNTS, a list of +<file-system> objects, relative to ROOT; then make ROOT the new root directory +for the process." (define (scope dir) (string-append root dir)) @@ -141,8 +143,9 @@ to ROOT, then make ROOT the new root directory for the process." (symlink "/proc/self/fd/2" (scope "/dev/stderr")) ;; Mount user-specified file systems. - (for-each (lambda (spec) - (mount-file-system spec #:root root)) + (for-each (lambda (file-system) + (mount-file-system (file-system->spec file-system) + #:root root)) mounts) ;; Jail the process inside the container's root file system. @@ -197,8 +200,8 @@ corresponds to the symbols in NAMESPACES." (define (run-container root mounts namespaces host-uids thunk) "Run THUNK in a new container process and return its PID. ROOT specifies -the root directory for the container. MOUNTS is a list of file system specs -that specify the mapping of host file systems into the container. NAMESPACES +the root directory for the container. MOUNTS is a list of <file-system> +objects that specify file systems to mount inside the container. NAMESPACES is a list of symbols that correspond to the possible Linux namespaces: mnt, ipc, uts, user, and net. HOST-UIDS specifies the number of host user identifiers to map into the user namespace." @@ -256,8 +259,8 @@ host user identifiers to map into the user namespace." (define* (call-with-container mounts thunk #:key (namespaces %namespaces) (host-uids 1)) "Run THUNK in a new container process and return its exit status. -MOUNTS is a list of file system specs that specify the mapping of host file -systems into the container. NAMESPACES is a list of symbols corresponding to +MOUNTS is a list of <file-system> objects that specify file systems to mount +inside the container. NAMESPACES is a list of symbols corresponding to the identifiers for Linux namespaces: mnt, ipc, uts, pid, user, and net. By default, all namespaces are used. HOST-UIDS is the number of host user identifiers to map into the container's user namespace, if there is one. By diff --git a/gnu/local.mk b/gnu/local.mk index e1fd8ce8a9..ce0fdebe03 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -8,6 +8,7 @@ # Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> # Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org> # Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +# Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> # # This file is part of GNU Guix. # @@ -348,6 +349,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/swig.scm \ %D%/packages/sxiv.scm \ %D%/packages/synergy.scm \ + %D%/packages/syndication.scm \ %D%/packages/task-management.scm \ %D%/packages/tbb.scm \ %D%/packages/tcl.scm \ @@ -361,6 +363,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/tmux.scm \ %D%/packages/tor.scm \ %D%/packages/tv.scm \ + %D%/packages/uml.scm \ %D%/packages/unrtf.scm \ %D%/packages/upnp.scm \ %D%/packages/uucp.scm \ @@ -401,6 +404,7 @@ GNU_SYSTEM_MODULES = \ %D%/services/dbus.scm \ %D%/services/desktop.scm \ %D%/services/dict.scm \ + %D%/services/kerberos.scm \ %D%/services/lirc.scm \ %D%/services/mail.scm \ %D%/services/mcron.scm \ @@ -541,6 +545,7 @@ dist_patch_DATA = \ %D%/packages/patches/gcc-arm-link-spec-fix.patch \ %D%/packages/patches/gcc-cross-environment-variables.patch \ %D%/packages/patches/gcc-libvtv-runpath.patch \ + %D%/packages/patches/gcc-strmov-store-file-names.patch \ %D%/packages/patches/gcc-5.0-libvtv-runpath.patch \ %D%/packages/patches/gcc-6-arm-none-eabi-multilib.patch \ %D%/packages/patches/gcc-6-cross-environment-variables.patch \ @@ -661,6 +666,7 @@ dist_patch_DATA = \ %D%/packages/patches/libtiff-CVE-2016-5321.patch \ %D%/packages/patches/libtiff-CVE-2016-5323.patch \ %D%/packages/patches/libtiff-CVE-2016-5652.patch \ + %D%/packages/patches/libtiff-CVE-2016-9273.patch \ %D%/packages/patches/libtiff-oob-accesses-in-decode.patch \ %D%/packages/patches/libtiff-oob-write-in-nextdecode.patch \ %D%/packages/patches/libtool-skip-tests2.patch \ @@ -681,6 +687,7 @@ dist_patch_DATA = \ %D%/packages/patches/libwmf-CVE-2015-4695.patch \ %D%/packages/patches/libwmf-CVE-2015-4696.patch \ %D%/packages/patches/libxslt-generated-ids.patch \ + %D%/packages/patches/libxslt-CVE-2016-4738.patch \ %D%/packages/patches/linux-pam-no-setfsuid.patch \ %D%/packages/patches/lirc-localstatedir.patch \ %D%/packages/patches/llvm-for-extempore.patch \ @@ -713,7 +720,14 @@ dist_patch_DATA = \ %D%/packages/patches/mupdf-build-with-openjpeg-2.1.patch \ %D%/packages/patches/mupdf-CVE-2016-6265.patch \ %D%/packages/patches/mupdf-CVE-2016-6525.patch \ + %D%/packages/patches/mupdf-CVE-2016-7504.patch \ + %D%/packages/patches/mupdf-CVE-2016-7505.patch \ + %D%/packages/patches/mupdf-CVE-2016-7506.patch \ + %D%/packages/patches/mupdf-CVE-2016-7563.patch \ + %D%/packages/patches/mupdf-CVE-2016-7564.patch \ %D%/packages/patches/mupdf-CVE-2016-8674.patch \ + %D%/packages/patches/mupdf-CVE-2016-9017.patch \ + %D%/packages/patches/mupdf-CVE-2016-9136.patch \ %D%/packages/patches/mupen64plus-ui-console-notice.patch \ %D%/packages/patches/musl-CVE-2016-8859.patch \ %D%/packages/patches/mutt-store-references.patch \ @@ -822,6 +836,7 @@ dist_patch_DATA = \ %D%/packages/patches/ruby-rack-ignore-failing-test.patch \ %D%/packages/patches/ruby-symlinkfix.patch \ %D%/packages/patches/ruby-tzinfo-data-ignore-broken-test.patch\ + %D%/packages/patches/ruby-yard-fix-skip-of-markdown-tests.patch \ %D%/packages/patches/sed-hurd-path-max.patch \ %D%/packages/patches/scheme48-tests.patch \ %D%/packages/patches/scotch-test-threading.patch \ diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 994c6e4e04..7d2e2d2a4b 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -47,6 +47,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages curl) #:use-module (gnu packages databases) + #:use-module (gnu packages emacs) #:use-module (gnu packages file) #:use-module (gnu packages flex) #:use-module (gnu packages fltk) @@ -55,11 +56,13 @@ #:use-module (gnu packages glib) #:use-module (gnu packages gtk) #:use-module (gnu packages gnome) + #:use-module (gnu packages gnunet) ; libmicrohttpd #:use-module (gnu packages gperf) #:use-module (gnu packages image) #:use-module (gnu packages ncurses) #:use-module (gnu packages qt) #:use-module (gnu packages linux) + #:use-module (gnu packages llvm) #:use-module (gnu packages mp3) ;taglib #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -67,7 +70,9 @@ #:use-module (gnu packages python) #:use-module (gnu packages rdf) #:use-module (gnu packages readline) + #:use-module (gnu packages tls) #:use-module (gnu packages video) + #:use-module (gnu packages vim) ;xxd #:use-module (gnu packages webkit) #:use-module (gnu packages xiph) #:use-module (gnu packages xml) @@ -928,6 +933,36 @@ PS, and DAB+.") "Faust is a programming language for realtime audio signal processing.") (license license:gpl2+))) +(define-public faust-2 + (package + (inherit faust) + (version "2.0.a51") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/faudiostream/faust-" version ".tgz")) + (sha256 + (base32 + "1yryjqfqmxs7lxy95hjgmrncvl9kig3rcsmg0v49ghzz7vs7haxf")))) + (build-system gnu-build-system) + (arguments + (substitute-keyword-arguments (package-arguments faust) + ((#:make-flags flags) + `(list (string-append "prefix=" (assoc-ref %outputs "out")) + "world")))) + (native-inputs + `(("llvm" ,llvm-with-rtti) + ("which" ,which) + ("xxd" ,vim) + ("ctags" ,emacs-minimal) ; for ctags + ("pkg-config" ,pkg-config))) + (inputs + `(("libsndfile" ,libsndfile) + ("libmicrohttpd" ,libmicrohttpd) + ("ncurses" ,ncurses) + ("openssl" ,openssl) + ("zlib" ,zlib))))) + (define-public freepats (package (name "freepats") diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 4dfac15040..5444f0a2a1 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -2048,7 +2048,7 @@ identify enrichments with functional annotations of the genome.") (define-public diamond (package (name "diamond") - (version "0.8.23") + (version "0.8.26") (source (origin (method url-fetch) (uri (string-append @@ -2057,7 +2057,7 @@ identify enrichments with functional annotations of the genome.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0xpcq3fbk4c52xbpgyk5brl58rljvl83bg8nkxy8vs00pxanm7i2")))) + "17s38pgjih6yc2z81040pircbv60c9wr33mbcyki2rfpv8rbxlh0")))) (build-system cmake-build-system) (arguments '(#:tests? #f ; no "check" target @@ -6869,7 +6869,7 @@ downloaded from Encode.") (define-public r-org-hs-eg-db (package (name "r-org-hs-eg-db") - (version "3.3.0") + (version "3.4.0") (source (origin (method url-fetch) ;; We cannot use bioconductor-uri here because this tarball is @@ -6879,7 +6879,7 @@ downloaded from Encode.") "org.Hs.eg.db_" version ".tar.gz")) (sha256 (base32 - "09zb43yjd82ny210n5a0wsrji4w56l2r6ana6d9lx0nn9mzd7rzp")))) + "19mg64pw8zcvb9yxzzyf7caz1kvdrkfsj1hd84bzq7crrh8kc4y6")))) (properties `((upstream-name . "org.Hs.eg.db"))) (build-system r-build-system) @@ -6895,7 +6895,7 @@ annotations for the human genome.") (define-public r-org-ce-eg-db (package (name "r-org-ce-eg-db") - (version "3.3.0") + (version "3.4.0") (source (origin (method url-fetch) ;; We cannot use bioconductor-uri here because this tarball is @@ -6905,7 +6905,7 @@ annotations for the human genome.") "org.Ce.eg.db_" version ".tar.gz")) (sha256 (base32 - "17mvb2ci2jgac3zi420cbf70n4zswqinzxlk1v2fjnp8vvydl2fw")))) + "12llfzrrc09kj2wzbisdspv38qzkzgpsbn8kv7qkwg746k3pq436")))) (properties `((upstream-name . "org.Ce.eg.db"))) (build-system r-build-system) @@ -6921,7 +6921,7 @@ annotations for the genome of the model worm Caenorhabditis elegans.") (define-public r-org-dm-eg-db (package (name "r-org-dm-eg-db") - (version "3.3.0") + (version "3.4.0") (source (origin (method url-fetch) ;; We cannot use bioconductor-uri here because this tarball is @@ -6931,7 +6931,7 @@ annotations for the genome of the model worm Caenorhabditis elegans.") "org.Dm.eg.db_" version ".tar.gz")) (sha256 (base32 - "15kzvw78xwa54yk1d69l6pmgny4726ydpdkk8lic26vr0yiwicla")))) + "1vzbphbrh1cf7xi5cksia9xy9a9l42js2z2qsajvjxvddiphrb7j")))) (properties `((upstream-name . "org.Dm.eg.db"))) (build-system r-build-system) @@ -6947,7 +6947,7 @@ annotations for the genome of the model fruit fly Drosophila melanogaster.") (define-public r-org-mm-eg-db (package (name "r-org-mm-eg-db") - (version "3.3.0") + (version "3.4.0") (source (origin (method url-fetch) ;; We cannot use bioconductor-uri here because this tarball is @@ -6957,7 +6957,7 @@ annotations for the genome of the model fruit fly Drosophila melanogaster.") "org.Mm.eg.db_" version ".tar.gz")) (sha256 (base32 - "0r939vfmsqqdwfimix1nv0bkhnixawy9c6avbclrncfanw3kgjax")))) + "1lykjqjaf01fmgg3cvfcvwd5xjq6zc5vbxnm5r4l32fzvl89q50c")))) (properties `((upstream-name . "org.Mm.eg.db"))) (build-system r-build-system) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 8d69def5b7..0323a51838 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -285,7 +285,7 @@ Language.") (define-public mariadb (package (name "mariadb") - (version "10.1.18") + (version "10.1.19") (source (origin (method url-fetch) (uri (string-append "https://downloads.mariadb.org/f/" @@ -293,7 +293,7 @@ Language.") name "-" version ".tar.gz")) (sha256 (base32 - "0wrvhyck95czhz553834i9im7ljvn8k2byakcinlji7zx43njcyp")))) + "108s4mimdbmgmmn5pcr9a405j70cyny9adzv49s75lg22krp74sv")))) (build-system cmake-build-system) (arguments '(#:configure-flags @@ -353,14 +353,14 @@ as a drop-in replacement of MySQL.") (define-public postgresql (package (name "postgresql") - (version "9.5.4") + (version "9.5.5") (source (origin (method url-fetch) (uri (string-append "https://ftp.postgresql.org/pub/source/v" version "/postgresql-" version ".tar.bz2")) (sha256 (base32 - "1l3fqxlpxgl6nrcd4h6lpi2hsiv56yg83n3xrn704rmdch8mfpng")))) + "157kf6mdazmxfmd11f0akya2xcz6sfgprn7yqc26dpklps855ih2")))) (build-system gnu-build-system) (arguments `(#:phases @@ -375,7 +375,7 @@ as a drop-in replacement of MySQL.") (inputs `(("readline" ,readline) ("zlib" ,zlib))) - (home-page "http://www.postgresql.org/") + (home-page "https://www.postgresql.org/") (synopsis "Powerful object-relational database system") (description "PostgreSQL is a powerful object-relational database system. It is fully diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 9eb37957dc..e190e508a7 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -358,7 +358,8 @@ Go. It also includes runtime support libraries for these languages.") (sha256 (base32 "0fihlcy5hnksdxk0sn6bvgnyq8gfrgs8m794b1jxwd1dxinzg3b0")) - (patches (search-patches "gcc-5.0-libvtv-runpath.patch")))))) + (patches (search-patches "gcc-strmov-store-file-names.patch" + "gcc-5.0-libvtv-runpath.patch")))))) (define-public gcc-6 (package @@ -371,7 +372,8 @@ Go. It also includes runtime support libraries for these languages.") (sha256 (base32 "1idpf43988v1a6i8lw9ak1r7igcfg1bm5kn011iydlr2qygmhi4r")) - (patches (search-patches "gcc-5.0-libvtv-runpath.patch")))))) + (patches (search-patches "gcc-strmov-store-file-names.patch" + "gcc-5.0-libvtv-runpath.patch")))))) ;; Note: When changing the default gcc version, update ;; the gcc-toolchain-* definitions accordingly. diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index b246d3a6ad..5d4293c290 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -28,6 +28,7 @@ (define-module (gnu packages guile) #:use-module (guix licenses) #:use-module (gnu packages) + #:use-module (gnu packages aspell) #:use-module (gnu packages bash) #:use-module (gnu packages bdw-gc) #:use-module (gnu packages gawk) @@ -1373,4 +1374,40 @@ an abstraction over raw memory. It's also more powerful than the C type system, elevating types to first-class status.") (license gpl3+))) +(define-public guile-aspell + (package + (name "guile-aspell") + (version "0.3") + (source (origin + (method url-fetch) + (uri (string-append + "http://lonelycactus.com/tarball/guile_aspell-" + version ".tar.gz")) + (sha256 + (base32 + "1wknn57x2qcsbn7zw6sbn1ma6fjsg8cvpnf78ak47s8jw6k6j75n")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags (list (string-append "--with-guilesitedir=" + (assoc-ref %outputs "out") + "/share/guile/site/2.0")) + #:phases (modify-phases %standard-phases + (add-before 'build 'set-libaspell-file-name + (lambda* (#:key inputs #:allow-other-keys) + (let ((aspell (assoc-ref inputs "aspell"))) + (substitute* "aspell/aspell.scm" + (("\"libaspell\\.so\"") + (string-append "\"" aspell + "/lib/libaspell\""))) + #t)))))) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs `(("guile" ,guile-2.0) + ("aspell" ,aspell))) + (home-page "https://github.com/spk121/guile-aspell") + (synopsis "Spell-checking from Guile") + (description + "guile-aspell is a Guile Scheme library for comparing a string against a +dictionary and suggesting spelling corrections.") + (license gpl3+))) + ;;; guile.scm ends here diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 47544a629e..a40b212710 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -299,7 +299,8 @@ collection of tools for doing simple manipulations of TIFF images.") "libtiff-CVE-2016-5314.patch" "libtiff-CVE-2016-5321.patch" "libtiff-CVE-2016-5323.patch" - "libtiff-CVE-2016-5652.patch")))))) + "libtiff-CVE-2016-5652.patch" + "libtiff-CVE-2016-9273.patch")))))) (define-public libwmf (package diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm index 071d42a165..8dcfbc72c5 100644 --- a/gnu/packages/imagemagick.scm +++ b/gnu/packages/imagemagick.scm @@ -43,14 +43,14 @@ (define-public imagemagick (package (name "imagemagick") - (version "6.9.6-3") + (version "6.9.6-4") (source (origin (method url-fetch) (uri (string-append "mirror://imagemagick/ImageMagick-" version ".tar.xz")) (sha256 (base32 - "0min87mdhv6bni5hz99i3j1wkrjrqp88dx4ckjzmilg28p9ick63")))) + "1mv2qihr9jfagz1dds42q46zirh0dvx0rai7pkqmbzy2bp2c48ym")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch") diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm index 16f83fc474..d98a4cd7a9 100644 --- a/gnu/packages/inkscape.scm +++ b/gnu/packages/inkscape.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 John Darrington <jmd@gnu.org> ;;; Copyright © 2014, 2016 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -80,13 +81,13 @@ `(;; Add '-std=c++11', required by recent versions of GLibmm & co. ;; Use '-g0' to reduce disk usage during the build. #:configure-flags '("CXXFLAGS=-g0 -O2 -fopenmp -std=c++11") - - #:phases (alist-cons-after - 'unpack 'fix-test-includes - (lambda _ - (substitute* "src/cxxtests.cpp" - (("\\.\\./\\.\\./src") "../src"))) - %standard-phases))) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-test-includes + (lambda _ + (substitute* "src/cxxtests.cpp" + (("\\.\\./\\.\\./src") "../src")) + #t))))) (home-page "http://inkscape.org/") (synopsis "Vector graphics editor") (description "Inkscape is a vector graphics editor. What sets Inkscape diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm index 34a5046d20..82e7ed2cc7 100644 --- a/gnu/packages/kde.scm +++ b/gnu/packages/kde.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,6 +28,63 @@ #:use-module (gnu packages tls) #:use-module (gnu packages qt)) +(define-public kdevelop-pg-qt + (package + (name "kdevelop-pg-qt") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/KDE/kdevelop-pg-qt/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1av8plqz7hyhrd07avnmn6ryslqlarmxn0pw7swzvb6ddiqp59j4")))) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules))) + (inputs + `(("qtbase" ,qtbase))) + (build-system cmake-build-system) + (home-page "https://kde.org") + (synopsis "Parser generator library for KDevplatform") + (description "KDevelop-PG-Qt is the parser generator used in KDevplatform +for some KDevelop language plugins (Ruby, PHP, CSS...).") + (license license:lgpl2.0+))) + +(define-public libkomparediff2 + (package + (name "libkomparediff2") + (version "16.08.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/KDE/libkomparediff2/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1lafifrwfxvn0jwhz67kwv7m38lm4syips3fq77rwcvfhmkiijmh")))) + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("pkg-config" ,pkg-config))) + (inputs + `(("kcodecs" ,kcodecs) + ("kconfig" ,kconfig) + ("kcoreaddons" ,kcoreaddons) + ("ki18n" ,ki18n) + ("kio" ,kio) + ("kxmlgui" ,kxmlgui) + ("qtbase" ,qtbase))) + (build-system cmake-build-system) + (home-page "https://kde.org") + (synopsis "Library to compare files and strings, used in Kompare and KDevelop") + (description "Libkomparediff2 is a library to work with diffs and patches, +used in KDE development tools Kompare and KDevelop.") + + ;; GPL, some files are also licensed under LGPL or BSD, see COPYING in the + ;; source archive + (license (list license:gpl2+ license:lgpl2.0+ license:bsd-3)))) + (define-public qca (package (name "qca") diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm index 2c66eca372..215cecee1f 100644 --- a/gnu/packages/libusb.scm +++ b/gnu/packages/libusb.scm @@ -237,4 +237,4 @@ HID-Class devices.") ;; HIDAPI can be used under one of three licenses. (license (list gpl3 bsd-3 - non-copyleft "file://LICENSE-orig.txt")))) + (non-copyleft "file://LICENSE-orig.txt"))))) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 01f5d6c88d..a3c65979d9 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -15,6 +15,7 @@ ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016 John Darrington <jmd@gnu.org> +;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> ;;; ;;; This file is part of GNU Guix. @@ -63,6 +64,7 @@ #:use-module (gnu packages perl) #:use-module (gnu packages pciutils) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages popt) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages readline) @@ -325,14 +327,14 @@ It has been modified to remove all non-free binary blobs.") (define %intel-compatible-systems '("x86_64-linux" "i686-linux")) (define-public linux-libre - (make-linux-libre "4.8.6" - "07h618x13yyp3lnf77px4v60pdcz7il0fa7p466wa5gp3h0yhvmi" + (make-linux-libre "4.8.7" + "1jbwm131zv59iyr6qw7qcbcfz49qqb2hhx30230gb99flyc5h4hg" %intel-compatible-systems #:configuration-file kernel-config)) (define-public linux-libre-4.4 - (make-linux-libre "4.4.30" - "16jjcjfbf3s4mrifk6v7kmnm8l7yywispfap98wcv6gw6mv9sxdx" + (make-linux-libre "4.4.31" + "1s4xdllvxw02g4yqlafcacgsgdpxccf6dlqafpqffm873q1y9n4d" %intel-compatible-systems #:configuration-file kernel-config)) @@ -343,8 +345,8 @@ It has been modified to remove all non-free binary blobs.") #:configuration-file kernel-config)) ;; Avoid rebuilding kernel variants when there is a minor version bump. -(define %linux-libre-version "4.8.6") -(define %linux-libre-hash "07h618x13yyp3lnf77px4v60pdcz7il0fa7p466wa5gp3h0yhvmi") +(define %linux-libre-version "4.8.7") +(define %linux-libre-hash "1jbwm131zv59iyr6qw7qcbcfz49qqb2hhx30230gb99flyc5h4hg") (define-public linux-libre-arm-generic (make-linux-libre %linux-libre-version @@ -3140,3 +3142,80 @@ activity of the GPU as a whole, which is also accurate during OpenCL computations, as well as separate component statistics that are only meaningful under OpenGL graphics workloads.") (license license:gpl3))) + +(define-public efivar + (package + (name "efivar") + (version "30") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/rhinstaller/" name + "/releases/download/" version "/" name + "-" version ".tar.bz2")) + (sha256 + (base32 + "12qjnm44yi55ffqxjpgrxy82s89yjziy84w2rfjjknsd8flj0mqz")))) + (build-system gnu-build-system) + (arguments + `(;; Tests require a UEFI system and is not detected in the chroot. + #:tests? #f + #:make-flags (list (string-append "prefix=" %output) + (string-append "libdir=" %output "/lib") + (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("popt" ,popt))) + (home-page "https://github.com/rhinstaller/efivar") + (synopsis "Tool and library to manipulate EFI variables") + (description "This package provides a library and a command line +interface to the variable facility of UEFI boot firmware.") + (license license:lgpl2.1+))) + +(define-public efibootmgr + (package + (name "efibootmgr") + (version "14") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/rhinstaller/" name + "/releases/download/" version "/" name + "-" version ".tar.bz2")) + (sha256 + (base32 + "1n3sydvpr6yl040hhf460k7mrxby7laqd9dqs6pq0js1hijc2zip")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; No tests. + #:make-flags (list (string-append "prefix=" %output) + (string-append "libdir=" %output "/lib") + ;; Override CFLAGS to add efivar include directory. + (string-append "CFLAGS=-O2 -g -flto -I" + (assoc-ref %build-inputs "efivar") + "/include/efivar")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'branding + ;; Replace default loader path with something more familiar. + (lambda _ + (substitute* "src/efibootmgr.c" + (("EFI\\\\\\\\redhat") ; Matches 'EFI\\redhat'. + "EFI\\\\gnu")) + #t)) + (delete 'configure)))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("efivar" ,efivar) + ("popt" ,popt))) + (home-page "https://github.com/rhinstaller/efibootmgr") + (synopsis "Modify the Extensible Firmware Interface (EFI) boot manager") + (description + "@code{efibootmgr} is a user-space application to modify the Intel +Extensible Firmware Interface (EFI) Boot Manager. This application can +create and destroy boot entries, change the boot order, change the next +running boot option, and more.") + (license license:gpl2+))) diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 1a1f7eef6c..96679bf97b 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -85,6 +85,17 @@ languages is in development. The compiler infrastructure includes mirror sets of programming tools as well as libraries with equivalent functionality.") (license license:ncsa))) +(define-public llvm-with-rtti + (package (inherit llvm) + (name "llvm-with-rtti") + (arguments + (substitute-keyword-arguments (package-arguments llvm) + ((#:configure-flags flags) + `(append '("-DCMAKE_SKIP_BUILD_RPATH=FALSE" + "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE" + "-DLLVM_REQUIRES_RTTI=1") + ,flags)))))) + (define (clang-runtime-from-llvm llvm hash) (package (name "clang-runtime") diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm index fe0ec208aa..f95da3587d 100644 --- a/gnu/packages/lua.scm +++ b/gnu/packages/lua.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 doncatnip <gnopap@gmail.com> +;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -280,6 +281,18 @@ communication. It takes an already established TCP connection and creates a secure session between the peers.") (license (package-license lua-5.1)))) +(define-public lua5.1-sec-0.5 + (package + (inherit lua5.1-sec) + (version "0.5.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/brunoos/luasec/archive/" + "luasec-" version ".tar.gz")) + (sha256 + (base32 + "01llf5bcrjmqqy6m65avqkajz7h79rvkka6rd131kwr10n75yp3d")))))) + (define-public lua-lgi (package (name "lua-lgi") diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 1408e2e030..0e09c5c594 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -727,7 +727,7 @@ MailCore 2.") (define-public claws-mail (package (name "claws-mail") - (version "3.14.0") + (version "3.14.1") (source (origin (method url-fetch) (uri (string-append @@ -735,7 +735,7 @@ MailCore 2.") ".tar.xz")) (sha256 (base32 - "0nfchgga3ir91s8rky0a0vnz8cgj2f6h716wh3cmb466a01xfss6")))) + "0df34gj4r5cbb92834hph19gnh7ih9rgmmw47rliyg8b9z01v6mp")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("bogofilter" ,bogofilter) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 5665c2a7b8..f7a4bbe75f 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -949,14 +949,14 @@ script files.") (define-public gmsh (package (name "gmsh") - (version "2.11.0") + (version "2.14.1") (source (origin (method url-fetch) - (uri (string-append "http://www.geuz.org/gmsh/src/gmsh-" + (uri (string-append "http://gmsh.info/src/gmsh-" version "-source.tgz")) (sha256 - (base32 "1ilplibvjgf7a905grpnclrvkmqy9fgrpl7xyp3w4yl1qc682v9b")) + (base32 "1vsxp47j6srmy8kqb3p1z9pmlm42whhhz7r0vzpa2a86gga4zx17")) (modules '((guix build utils))) (snippet ;; Remove non-free METIS code diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 66cf231cfb..72b89067f0 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 ng0 <ngillmann@runbox.com> ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca> +;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -563,7 +564,8 @@ end-to-end encryption support; XML console.") ("lua5.1-expat" ,lua5.1-expat) ("lua5.1-socket" ,lua5.1-socket) ("lua5.1-filesystem" ,lua5.1-filesystem) - ("lua5.1-sec" ,lua5.1-sec))) + ;; See <https://prosody.im/doc/depends#luasec>. + ("lua5.1-sec" ,lua5.1-sec-0.5))) (home-page "https://prosody.im/") (synopsis "Jabber (XMPP) server") (description "Prosody is a modern XMPP communication server. It aims to diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 9ad7bab335..abcc498599 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -1896,7 +1896,7 @@ of tools for manipulating and accessing your music.") (version "0.90.86") (source (origin (method url-fetch) - (uri (string-append "http://milkytracker.org/files/" + (uri (string-append "http://milkytracker.titandemo.org/files/" name "-" version ".tar.bz2")) (sha256 (base32 @@ -1916,7 +1916,7 @@ of tools for manipulating and accessing your music.") module files. It attempts to recreate the module replay and user experience of the popular DOS program Fasttracker II, with special playback modes available for improved Amiga ProTracker 2/3 compatibility.") - (home-page "http://milkytracker.org/") + (home-page "http://milkytracker.titandemo.org/") ;; 'src/milkyplay' is under Modified BSD, the rest is under GPL3 or later. (license (list license:bsd-3 license:gpl3+)))) diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm index 01ef5dc800..e1830d291b 100644 --- a/gnu/packages/nano.scm +++ b/gnu/packages/nano.scm @@ -29,7 +29,7 @@ (define-public nano (package (name "nano") - (version "2.7.0") + (version "2.7.1") (source (origin (method url-fetch) @@ -37,12 +37,12 @@ version ".tar.gz")) (sha256 (base32 - "1hzazcrbwjqiw89jjvlj97q0wf385qqkzcm0870pdrixiv7yklax")))) + "06715a39hmp2dl0qz0979cyv8brpb91z5hn94q224ymbsc876m41")))) (build-system gnu-build-system) (inputs `(("gettext" ,gettext-minimal) ("ncurses" ,ncurses))) - (home-page "http://www.nano-editor.org/") + (home-page "https://www.nano-editor.org/") (synopsis "Small, user-friendly console text editor") (description "GNU Nano is a small and simple text editor. In addition to basic diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm index 97991670f3..e21e477f4f 100644 --- a/gnu/packages/ncurses.scm +++ b/gnu/packages/ncurses.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> +;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,7 +27,8 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system perl) #:use-module (gnu packages) - #:use-module (gnu packages perl)) + #:use-module (gnu packages perl) + #:use-module (gnu packages swig)) (define-public ncurses (let ((patch-makefile-phase @@ -207,3 +209,42 @@ curses widgets, such as dialog boxes.") "@code{Curses} is the interface between Perl and the curses library of your system.") (license (package-license perl)))) + +(define-public stfl + (package + (name "stfl") + (version "0.24") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.clifford.at/stfl/stfl-" + version ".tar.gz")) + (sha256 + (base32 + "1460d5lc780p3q38l3wc9jfr2a7zlyrcra0li65aynj738cam9yl")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no test target + #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (delete 'configure) ; there is no configure script + ;; in our ncurses, the headers are in /include + (add-before 'build 'patch-ncursesw + (lambda _ + (substitute* "stfl_internals.h" + (("ncursesw/") "")) + #t)) + (add-after 'install 'install-missing-symlink + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + ;; Some programs look for libstfl.so.0. + (symlink "libstfl.so" (string-append lib "/libstfl.so.0")))))))) + (inputs `(("ncurses" ,ncurses))) + (native-inputs `(("swig" ,swig))) + (home-page "http://www.clifford.at/stfl/") + (synopsis "Structured terminal forms library") + (description "Stfl is a library which implements a curses-based widget +set for text terminals.") + (license lgpl3+))) diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm index fc865d36e0..43a6490b22 100644 --- a/gnu/packages/openstack.scm +++ b/gnu/packages/openstack.scm @@ -206,14 +206,14 @@ tested on Python version 3.2, 2.7 and 2.6.") (define-public python-os-testr (package (name "python-os-testr") - (version "0.5.0") + (version "0.8.0") (source (origin (method url-fetch) (uri (pypi-uri "os-testr" version)) (sha256 (base32 - "0bv03wnmvxhyi8y08hjh9clxrwqc2251529v4kh5khvca0fsbqdp")))) + "0mknd9hlmxmihr755gjkxyjp180380jajq5i3zm34q7y7bi62lss")))) (build-system python-build-system) (arguments ;; os-testr uses itself to run the tests. It seems like pbr writes the @@ -227,7 +227,7 @@ tested on Python version 3.2, 2.7 and 2.6.") (inputs `(("python-babel" ,python-babel) ("python-setuptools" ,python-setuptools))) - (home-page "http://www.openstack.org/") + (home-page "https://www.openstack.org/") (synopsis "Testr wrapper to provide functionality for OpenStack projects") (description "Os-testr provides developers with a testr wrapper and an output filter @@ -320,14 +320,14 @@ extensions.") (define-public python-tempest-lib (package (name "python-tempest-lib") - (version "0.12.0") + (version "1.0.0") (source (origin (method url-fetch) (uri (pypi-uri "tempest-lib" version)) (sha256 (base32 - "0f15wxk394cb2kw34krpxq8mvy1rxw0lnl5wfiv14cq1s1fm9cjd")))) + "1cpp2vwmawpd29hjsklsps181lq2ah91cl412qvpnz228nf9sqn5")))) (build-system python-build-system) (arguments `(#:phases @@ -352,7 +352,7 @@ extensions.") ("python-os-testr" ,python-os-testr) ("python-oslotest" ,python-oslotest) ("python-setuptools" ,python-setuptools))) - (home-page "http://www.openstack.org/") + (home-page "https://www.openstack.org/") (synopsis "OpenStack functional testing library") (description "Tempest-lib is a functional testing library for OpenStack. It provides diff --git a/gnu/packages/owncloud.scm b/gnu/packages/owncloud.scm index f755df4f0b..6b40bd3ada 100644 --- a/gnu/packages/owncloud.scm +++ b/gnu/packages/owncloud.scm @@ -21,27 +21,26 @@ #:use-module (guix build-system cmake) #:use-module (guix download) #:use-module (guix packages) + #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages databases) #:use-module (gnu packages linux) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) - #:use-module (gnu packages python) #:use-module (gnu packages qt) - #:use-module (gnu packages ruby) #:use-module (gnu packages tls)) (define-public owncloud-client (package (name "owncloud-client") - (version "2.2.2") + (version "2.2.4") (source (origin (method url-fetch) (uri (string-append "https://download.owncloud.com/desktop/stable/" "owncloudclient-" version ".tar.xz")) (sha256 - (base32 "0m0pxv12w72qqgxim9fh8w3bgkgnhpjyay8ldll3nnzq1jmhk09n")) + (base32 "1lz7v5sscj5489panz5ng372g9l66ng0srx6xaz8drnsgi7m64zk")) (modules '((guix build utils))) (snippet '(begin @@ -71,16 +70,29 @@ "src/crashreporter/CMakeLists.txt" "src/gui/CMakeLists.txt") ;; This has the same issue as the substitution above. - (("\\/\\$\\{APPLICATION_EXECUTABLE\\}\\\"") "\""))))))) - (native-inputs `(("pkg-config" ,pkg-config))) + (("\\/\\$\\{APPLICATION_EXECUTABLE\\}\\\"") "\"")) + #t)) + (add-after 'unpack 'delete-failing-tests + ;; These tests fail for no apparent reason + (lambda _ + (substitute* "test/CMakeLists.txt" + (("owncloud_add_test\\(FileSystem \"\"\\)" test) + (string-append "#" test)) + (("owncloud_add_test\\(Utility \"\"\\)" test) + (string-append "#" test))) + #t))) + #:configure-flags '("-DUNIT_TESTING=ON"))) + (native-inputs + `(("cmocka" ,cmocka) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("qtlinguist" ,qttools))) (inputs `(("inotify-tools" ,inotify-tools) ("openssl" ,openssl) - ("perl" ,perl) - ("python-wrapper" ,python-wrapper) - ("qt" ,qt) + ("qtbase" ,qtbase) ("qtkeychain" ,qtkeychain) - ("ruby" ,ruby) + ("qtwebkit" ,qtwebkit) ("sqlite" ,sqlite) ("zlib" ,zlib))) (home-page "https://owncloud.org") diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 9b3a4d3981..b917ee7246 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -222,9 +222,9 @@ the Nix package manager.") ;; ;; Note: use a very short commit id; with a longer one, the limit on ;; hash-bang lines would be exceeded while running the tests. - (let ((commit "4420940f20a2f36f29519f686bca7b85be6be5c9")) + (let ((commit "166ba5b10207f44360e218d9e3f00772d09bc7cd")) (package (inherit guix-0.11.0) - (version (string-append "0.11.0-1." (string-take commit 4))) + (version (string-append "0.11.0-2." (string-take commit 4))) (source (origin (method git-fetch) (uri (git-reference @@ -234,7 +234,7 @@ the Nix package manager.") (commit commit))) (sha256 (base32 - "1c1rqsfc4vrclkk03aj1m8r1lzk9pfa61ax9hhhj5nw23bilsixc")) + "144ld5l2gnjcw819cz8mninfwhxr0ijv3wac3j3xf0pzqhxfi29c")) (file-name (string-append "guix-" version "-checkout")))) (arguments (substitute-keyword-arguments (package-arguments guix-0.11.0) diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 30b538d630..55c14762e9 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -71,7 +71,7 @@ human.") (define-public keepassx (package (name "keepassx") - (version "2.0.2") + (version "2.0.3") (source (origin (method url-fetch) @@ -79,10 +79,11 @@ human.") "/keepassx-" version ".tar.gz")) (sha256 (base32 - "1f1nlbd669rmpzr52d9dgfgclg4jcaq2jkrby3b8q1vjkksdqjr0")))) + "1ia7cqx9ias38mnffsl7da7g1f66bcbjsi23k49sln0c6spb9zr3")))) (build-system cmake-build-system) (inputs `(("libgcrypt" ,libgcrypt) + ("libxi" ,libxi) ("libxtst" ,libxtst) ("qt" ,qt-4))) (native-inputs diff --git a/gnu/packages/patches/gcc-strmov-store-file-names.patch b/gnu/packages/patches/gcc-strmov-store-file-names.patch new file mode 100644 index 0000000000..7951b87616 --- /dev/null +++ b/gnu/packages/patches/gcc-strmov-store-file-names.patch @@ -0,0 +1,66 @@ +Make sure that statements such as: + + strcpy (dst, "/gnu/store/…"); + +do not result in chunked /gnu/store strings that are undetectable by +Guix's GC and its grafting code. See <http://bugs.gnu.org/24703>. + +--- gcc-5.3.0/gcc/builtins.c 2016-10-18 10:50:46.080616285 +0200 ++++ gcc-5.3.0/gcc/builtins.c 2016-11-09 15:26:43.693042737 +0100 +@@ -3192,6 +3192,42 @@ determine_block_size (tree len, rtx len_ + GET_MODE_MASK (GET_MODE (len_rtx))); + } + ++/* Return true if STR contains the string "/gnu/store". */ ++ ++static bool ++store_reference_p (tree str) ++{ ++ if (TREE_CODE (str) == ADDR_EXPR) ++ str = TREE_OPERAND (str, 0); ++ ++ if (TREE_CODE (str) != STRING_CST) ++ return false; ++ ++ int len; ++ const char *store; ++ ++ store = getenv ("NIX_STORE") ? getenv ("NIX_STORE") : "/gnu/store"; ++ len = strlen (store); ++ ++ /* Size of the hash part of store file names, including leading slash and ++ trailing hyphen. */ ++ const int hash_len = 34; ++ ++ if (TREE_STRING_LENGTH (str) < len + hash_len) ++ return false; ++ ++ /* We cannot use 'strstr' because 'TREE_STRING_POINTER' returns a string ++ that is not necessarily NUL-terminated. */ ++ ++ for (int i = 0; i < TREE_STRING_LENGTH (str) - (len + hash_len); i++) ++ { ++ if (strncmp (TREE_STRING_POINTER (str) + i, store, len) == 0) ++ return true; ++ } ++ ++ return false; ++} ++ + /* Helper function to do the actual work for expand_builtin_memcpy. */ + + static rtx +@@ -3207,6 +3243,13 @@ expand_builtin_memcpy_args (tree dest, t + unsigned HOST_WIDE_INT max_size; + unsigned HOST_WIDE_INT probable_max_size; + ++ /* Do not emit block moves, which translate to the 'movabs' instruction on ++ x86_64, when SRC refers to store items. That way, store references ++ remain visible to the Guix GC and grafting code. See ++ <http://bugs.gnu.org/24703>. */ ++ if (store_reference_p (src)) ++ return NULL_RTX; ++ + /* If DEST is not a pointer type, call the normal function. */ + if (dest_align == 0) + return NULL_RTX; diff --git a/gnu/packages/patches/libtiff-CVE-2016-9273.patch b/gnu/packages/patches/libtiff-CVE-2016-9273.patch new file mode 100644 index 0000000000..9cd6b3d8c5 --- /dev/null +++ b/gnu/packages/patches/libtiff-CVE-2016-9273.patch @@ -0,0 +1,41 @@ +Fix CVE-2016-9273: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9273 +http://bugzilla.maptools.org/show_bug.cgi?id=2587 + +Patch extracted from upstream CVS repo: + +2016-11-10 Even Rouault <even.rouault at spatialys.com> + +revision 1.37 +date: 2016-11-09 18:00:49 -0500; author: erouault; state: Exp; lines: +10 -1; commitid: pzKipPxDJO2dxvtz; +* libtiff/tif_strip.c: make TIFFNumberOfStrips() return the td->td_nstrips +value when it is non-zero, instead of recomputing it. This is needed in +TIFF_STRIPCHOP mode where td_nstrips is modified. Fixes a read outsize of +array in tiffsplit (or other utilities using TIFFNumberOfStrips()). +Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2587 + +Index: libtiff/tif_strip.c +=================================================================== +RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_strip.c,v +retrieving revision 1.36 +retrieving revision 1.37 +diff -u -r1.36 -r1.37 +--- a/libtiff/tif_strip.c 7 Jun 2015 22:35:40 -0000 1.36 ++++ b/libtiff/tif_strip.c 9 Nov 2016 23:00:49 -0000 1.37 +@@ -63,6 +63,15 @@ + TIFFDirectory *td = &tif->tif_dir; + uint32 nstrips; + ++ /* If the value was already computed and store in td_nstrips, then return it, ++ since ChopUpSingleUncompressedStrip might have altered and resized the ++ since the td_stripbytecount and td_stripoffset arrays to the new value ++ after the initial affectation of td_nstrips = TIFFNumberOfStrips() in ++ tif_dirread.c ~line 3612. ++ See http://bugzilla.maptools.org/show_bug.cgi?id=2587 */ ++ if( td->td_nstrips ) ++ return td->td_nstrips; ++ + nstrips = (td->td_rowsperstrip == (uint32) -1 ? 1 : + TIFFhowmany_32(td->td_imagelength, td->td_rowsperstrip)); + if (td->td_planarconfig == PLANARCONFIG_SEPARATE) diff --git a/gnu/packages/patches/libxslt-CVE-2016-4738.patch b/gnu/packages/patches/libxslt-CVE-2016-4738.patch new file mode 100644 index 0000000000..a7537c66ca --- /dev/null +++ b/gnu/packages/patches/libxslt-CVE-2016-4738.patch @@ -0,0 +1,39 @@ +Fix CVE-2016-4738: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-4738 +https://bugs.chromium.org/p/chromium/issues/detail?id=619006 + +Patch copied from upstream source repository: +https://git.gnome.org/browse/libxslt/commit/?id=eb1030de31165b68487f288308f9d1810fed6880 + +From eb1030de31165b68487f288308f9d1810fed6880 Mon Sep 17 00:00:00 2001 +From: Nick Wellnhofer <wellnhofer@aevum.de> +Date: Fri, 10 Jun 2016 14:23:58 +0200 +Subject: [PATCH] Fix heap overread in xsltFormatNumberConversion + +An empty decimal-separator could cause a heap overread. This can be +exploited to leak a couple of bytes after the buffer that holds the +pattern string. + +Found with afl-fuzz and ASan. +--- + libxslt/numbers.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/libxslt/numbers.c b/libxslt/numbers.c +index d1549b4..e78c46b 100644 +--- a/libxslt/numbers.c ++++ b/libxslt/numbers.c +@@ -1090,7 +1090,8 @@ xsltFormatNumberConversion(xsltDecimalFormatPtr self, + } + + /* We have finished the integer part, now work on fraction */ +- if (xsltUTF8Charcmp(the_format, self->decimalPoint) == 0) { ++ if ( (*the_format != 0) && ++ (xsltUTF8Charcmp(the_format, self->decimalPoint) == 0) ) { + format_info.add_decimal = TRUE; + the_format += xsltUTF8Size(the_format); /* Skip over the decimal */ + } +-- +2.10.2 + diff --git a/gnu/packages/patches/mupdf-CVE-2016-7504.patch b/gnu/packages/patches/mupdf-CVE-2016-7504.patch new file mode 100644 index 0000000000..4bbb4411c0 --- /dev/null +++ b/gnu/packages/patches/mupdf-CVE-2016-7504.patch @@ -0,0 +1,99 @@ +Fix CVE-2016-7504: +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7504 +http://bugs.ghostscript.com/show_bug.cgi?id=697142 + +Patch copied from upstream source repository: +http://git.ghostscript.com/?p=mujs.git;a=commitdiff;h=5c337af4b3df80cf967e4f9f6a21522de84b392a + +From 5c337af4b3df80cf967e4f9f6a21522de84b392a Mon Sep 17 00:00:00 2001 +From: Tor Andersson <tor.andersson@artifex.com> +Date: Wed, 21 Sep 2016 16:01:08 +0200 +Subject: [PATCH] Fix bug 697142: Stale string pointer stored in regexp object. + +Make sure to make a copy of the source pattern string. +A case we missed when adding short and memory strings to the runtime. +The code assumed all strings passed to it were either literal or interned. +--- + jsgc.c | 4 +++- + jsi.h | 1 + + jsregexp.c | 2 +- + jsrun.c | 8 ++++++++ + jsvalue.h | 2 +- + 5 files changed, 14 insertions(+), 3 deletions(-) + +diff --git a/jsgc.c b/jsgc.c +index 9bd6482..4f7e7dc 100644 +--- a/thirdparty/mujs/jsgc.c ++++ b/thirdparty/mujs/jsgc.c +@@ -44,8 +44,10 @@ static void jsG_freeobject(js_State *J, js_Object *obj) + { + if (obj->head) + jsG_freeproperty(J, obj->head); +- if (obj->type == JS_CREGEXP) ++ if (obj->type == JS_CREGEXP) { ++ js_free(J, obj->u.r.source); + js_regfree(obj->u.r.prog); ++ } + if (obj->type == JS_CITERATOR) + jsG_freeiterator(J, obj->u.iter.head); + if (obj->type == JS_CUSERDATA && obj->u.user.finalize) +diff --git a/jsi.h b/jsi.h +index 7d9f7c7..e855045 100644 +--- a/thirdparty/mujs/jsi.h ++++ b/thirdparty/mujs/jsi.h +@@ -79,6 +79,7 @@ typedef unsigned short js_Instruction; + + /* String interning */ + ++char *js_strdup(js_State *J, const char *s); + const char *js_intern(js_State *J, const char *s); + void jsS_dumpstrings(js_State *J); + void jsS_freestrings(js_State *J); +diff --git a/jsregexp.c b/jsregexp.c +index 2a056b7..a2d5156 100644 +--- a/thirdparty/mujs/jsregexp.c ++++ b/thirdparty/mujs/jsregexp.c +@@ -21,7 +21,7 @@ void js_newregexp(js_State *J, const char *pattern, int flags) + js_syntaxerror(J, "regular expression: %s", error); + + obj->u.r.prog = prog; +- obj->u.r.source = pattern; ++ obj->u.r.source = js_strdup(J, pattern); + obj->u.r.flags = flags; + obj->u.r.last = 0; + js_pushobject(J, obj); +diff --git a/jsrun.c b/jsrun.c +index 2648c4c..ee80845 100644 +--- a/thirdparty/mujs/jsrun.c ++++ b/thirdparty/mujs/jsrun.c +@@ -45,6 +45,14 @@ void *js_realloc(js_State *J, void *ptr, int size) + return ptr; + } + ++char *js_strdup(js_State *J, const char *s) ++{ ++ int n = strlen(s) + 1; ++ char *p = js_malloc(J, n); ++ memcpy(p, s, n); ++ return p; ++} ++ + void js_free(js_State *J, void *ptr) + { + J->alloc(J->actx, ptr, 0); +diff --git a/jsvalue.h b/jsvalue.h +index 6cfbd89..8fb5016 100644 +--- a/thirdparty/mujs/jsvalue.h ++++ b/thirdparty/mujs/jsvalue.h +@@ -71,7 +71,7 @@ struct js_String + struct js_Regexp + { + void *prog; +- const char *source; ++ char *source; + unsigned short flags; + unsigned short last; + }; +-- +2.10.2 + diff --git a/gnu/packages/patches/mupdf-CVE-2016-7505.patch b/gnu/packages/patches/mupdf-CVE-2016-7505.patch new file mode 100644 index 0000000000..15e4f374d6 --- /dev/null +++ b/gnu/packages/patches/mupdf-CVE-2016-7505.patch @@ -0,0 +1,32 @@ +Fix CVE-2016-7505: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7505 +http://bugs.ghostscript.com/show_bug.cgi?id=697140 + +Patch copied from upstream source repository: +http://git.ghostscript.com/?p=mujs.git;a=commitdiff;h=8c805b4eb19cf2af689c860b77e6111d2ee439d5 + +From 8c805b4eb19cf2af689c860b77e6111d2ee439d5 Mon Sep 17 00:00:00 2001 +From: Tor Andersson <tor.andersson@artifex.com> +Date: Wed, 21 Sep 2016 15:21:04 +0200 +Subject: [PATCH] Fix bug 697140: Overflow check in ascii division in strtod. + +--- + jsdtoa.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/jsdtoa.c b/jsdtoa.c +index 2e52368..920c1a7 100644 +--- a/thirdparty/mujs/jsdtoa.c ++++ b/thirdparty/mujs/jsdtoa.c +@@ -735,6 +735,7 @@ xx: + n -= c<<b; + *p++ = c + '0'; + (*na)++; ++ if (*na >= Ndig) break; /* abort if overflowing */ + } + *p = 0; + } +-- +2.10.2 + diff --git a/gnu/packages/patches/mupdf-CVE-2016-7506.patch b/gnu/packages/patches/mupdf-CVE-2016-7506.patch new file mode 100644 index 0000000000..733249acaa --- /dev/null +++ b/gnu/packages/patches/mupdf-CVE-2016-7506.patch @@ -0,0 +1,42 @@ +Fix CVE-2016-7506: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7506 +http://bugs.ghostscript.com/show_bug.cgi?id=697141 + +Patch copied from upstream source repository: +http://git.ghostscript.com/?p=mujs.git;a=commitdiff;h=5000749f5afe3b956fc916e407309de840997f4a + +From 5000749f5afe3b956fc916e407309de840997f4a Mon Sep 17 00:00:00 2001 +From: Tor Andersson <tor.andersson@artifex.com> +Date: Wed, 21 Sep 2016 16:02:11 +0200 +Subject: [PATCH] Fix bug 697141: buffer overrun in regexp string substitution. + +A '$' escape at the end of the string would read past the zero terminator +when looking for the escaped character. +--- + jsstring.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/jsstring.c b/jsstring.c +index 66f6a89..0209a8e 100644 +--- a/thirdparty/mujs/jsstring.c ++++ b/thirdparty/mujs/jsstring.c +@@ -421,6 +421,7 @@ loop: + while (*r) { + if (*r == '$') { + switch (*(++r)) { ++ case 0: --r; /* end of string; back up and fall through */ + case '$': js_putc(J, &sb, '$'); break; + case '`': js_putm(J, &sb, source, s); break; + case '\'': js_puts(J, &sb, s + n); break; +@@ -516,6 +517,7 @@ static void Sp_replace_string(js_State *J) + while (*r) { + if (*r == '$') { + switch (*(++r)) { ++ case 0: --r; /* end of string; back up and fall through */ + case '$': js_putc(J, &sb, '$'); break; + case '&': js_putm(J, &sb, s, s + n); break; + case '`': js_putm(J, &sb, source, s); break; +-- +2.10.2 + diff --git a/gnu/packages/patches/mupdf-CVE-2016-7563.patch b/gnu/packages/patches/mupdf-CVE-2016-7563.patch new file mode 100644 index 0000000000..288c9ab2df --- /dev/null +++ b/gnu/packages/patches/mupdf-CVE-2016-7563.patch @@ -0,0 +1,37 @@ +Fix CVE-2016-7563: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7563 +http://bugs.ghostscript.com/show_bug.cgi?id=697136 + +Patch copied from upstream source repository: +http://git.ghostscript.com/?p=mujs.git;a=commitdiff;h=f8234d830e17fc5e8fe09eb76d86dad3f6233c59 + +From f8234d830e17fc5e8fe09eb76d86dad3f6233c59 Mon Sep 17 00:00:00 2001 +From: Tor Andersson <tor.andersson@artifex.com> +Date: Tue, 20 Sep 2016 17:11:32 +0200 +Subject: [PATCH] Fix bug 697136. + +We were unconditionally reading the next character if we encountered +a '*' in a multi-line comment; possibly reading past the end of +the input. +--- + jslex.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/jslex.c b/jslex.c +index 7b80800..cbd0eeb 100644 +--- a/thirdparty/mujs/jslex.c ++++ b/thirdparty/mujs/jslex.c +@@ -225,7 +225,8 @@ static int lexcomment(js_State *J) + if (jsY_accept(J, '/')) + return 0; + } +- jsY_next(J); ++ else ++ jsY_next(J); + } + return -1; + } +-- +2.10.2 + diff --git a/gnu/packages/patches/mupdf-CVE-2016-7564.patch b/gnu/packages/patches/mupdf-CVE-2016-7564.patch new file mode 100644 index 0000000000..c2ce33d1df --- /dev/null +++ b/gnu/packages/patches/mupdf-CVE-2016-7564.patch @@ -0,0 +1,34 @@ +Fix CVE-2016-7564: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7564 +http://bugs.ghostscript.com/show_bug.cgi?id=697137 + +Patch copied from upstream source repository: +http://git.ghostscript.com/?p=mujs.git;a=commitdiff;h=a3a4fe840b80706c706e86160352af5936f292d8 + +From a3a4fe840b80706c706e86160352af5936f292d8 Mon Sep 17 00:00:00 2001 +From: Tor Andersson <tor.andersson@artifex.com> +Date: Tue, 20 Sep 2016 17:19:06 +0200 +Subject: [PATCH] Fix bug 697137: off by one in string length calculation. + +We were not allocating space for the terminating zero byte. +--- + jsfunction.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/jsfunction.c b/jsfunction.c +index 8b5b18e..28f7aa7 100644 +--- a/thirdparty/mujs/jsfunction.c ++++ b/thirdparty/mujs/jsfunction.c +@@ -61,7 +61,7 @@ static void Fp_toString(js_State *J) + n += strlen(F->name); + for (i = 0; i < F->numparams; ++i) + n += strlen(F->vartab[i]) + 1; +- s = js_malloc(J, n); ++ s = js_malloc(J, n + 1); + strcpy(s, "function "); + strcat(s, F->name); + strcat(s, "("); +-- +2.10.2 + diff --git a/gnu/packages/patches/mupdf-CVE-2016-9017.patch b/gnu/packages/patches/mupdf-CVE-2016-9017.patch new file mode 100644 index 0000000000..1e2b7c3258 --- /dev/null +++ b/gnu/packages/patches/mupdf-CVE-2016-9017.patch @@ -0,0 +1,46 @@ +Fix CVE-2016-9017: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9107 +http://bugs.ghostscript.com/show_bug.cgi?id=697171 + +Patch copied from upstream source repository: +http://git.ghostscript.com/?p=mujs.git;a=commitdiff;h=a5c747f1d40e8d6659a37a8d25f13fb5acf8e767 + +From a5c747f1d40e8d6659a37a8d25f13fb5acf8e767 Mon Sep 17 00:00:00 2001 +From: Tor Andersson <tor.andersson@artifex.com> +Date: Tue, 25 Oct 2016 14:08:27 +0200 +Subject: [PATCH] Fix 697171: missed an operand in the bytecode debugger dump. + +--- + jscompile.h | 2 +- + jsdump.c | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/jscompile.h b/jscompile.h +index 802cc9e..3054d13 100644 +--- a/thirdparty/mujs/jscompile.h ++++ b/thirdparty/mujs/jscompile.h +@@ -21,7 +21,7 @@ enum js_OpCode + + OP_NEWARRAY, + OP_NEWOBJECT, +- OP_NEWREGEXP, ++ OP_NEWREGEXP, /* -S,opts- <regexp> */ + + OP_UNDEF, + OP_NULL, +diff --git a/jsdump.c b/jsdump.c +index 1c51c29..37ad88c 100644 +--- a/thirdparty/mujs/jsdump.c ++++ b/thirdparty/mujs/jsdump.c +@@ -750,6 +750,7 @@ void jsC_dumpfunction(js_State *J, js_Function *F) + case OP_INITVAR: + case OP_DEFVAR: + case OP_GETVAR: ++ case OP_HASVAR: + case OP_SETVAR: + case OP_DELVAR: + case OP_GETPROP_S: +-- +2.10.2 + diff --git a/gnu/packages/patches/mupdf-CVE-2016-9136.patch b/gnu/packages/patches/mupdf-CVE-2016-9136.patch new file mode 100644 index 0000000000..1f68839a52 --- /dev/null +++ b/gnu/packages/patches/mupdf-CVE-2016-9136.patch @@ -0,0 +1,32 @@ +Fix CVE-2016-9136: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9136 +http://bugs.ghostscript.com/show_bug.cgi?id=697244 + +Patch copied from upstream source repository: +http://git.ghostscript.com/?p=mujs.git;a=commitdiff;h=a0ceaf5050faf419401fe1b83acfa950ec8a8a89 +From a0ceaf5050faf419401fe1b83acfa950ec8a8a89 Mon Sep 17 00:00:00 2001 +From: Tor Andersson <tor.andersson@artifex.com> +Date: Mon, 31 Oct 2016 13:05:37 +0100 +Subject: [PATCH] Fix 697244: Check for incomplete escape sequence at end of + input. + +--- + jslex.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/jslex.c b/jslex.c +index cbd0eeb..aaafdac 100644 +--- a/thirdparty/mujs/jslex.c ++++ b/thirdparty/mujs/jslex.c +@@ -377,6 +377,7 @@ static int lexescape(js_State *J) + return 0; + + switch (J->lexchar) { ++ case 0: jsY_error(J, "unterminated escape sequence"); + case 'u': + jsY_next(J); + if (!jsY_ishex(J->lexchar)) return 1; else { x |= jsY_tohex(J->lexchar) << 12; jsY_next(J); } +-- +2.10.2 + diff --git a/gnu/packages/patches/ruby-yard-fix-skip-of-markdown-tests.patch b/gnu/packages/patches/ruby-yard-fix-skip-of-markdown-tests.patch new file mode 100644 index 0000000000..f592f5cd51 --- /dev/null +++ b/gnu/packages/patches/ruby-yard-fix-skip-of-markdown-tests.patch @@ -0,0 +1,17 @@ +The tests currently fail due to use of 'skip' rather than 'pending' to skip a +test usually not skipped by upstream. This patch has been proposed upstream +at https://github.com/lsegal/yard/pull/1033 + +diff --git a/spec/templates/helpers/html_helper_spec.rb b/spec/templates/helpers/html_helper_spec.rb +index 84624c3..9c4fc2b 100644 +--- a/spec/templates/helpers/html_helper_spec.rb ++++ b/spec/templates/helpers/html_helper_spec.rb +@@ -184,7 +184,7 @@ describe YARD::Templates::Helpers::HtmlHelper do + it "creates tables (markdown specific)" do + log.enter_level(Logger::FATAL) do + unless markup_class(:markdown).to_s == "RedcarpetCompat" +- skip "This test depends on a markdown engine that supports tables" ++ pending "This test depends on a markdown engine that supports tables" + end + end + diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index bfb457fcb3..9c6e9a967e 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -491,7 +491,14 @@ extracting content or merging files.") (patches (search-patches "mupdf-build-with-openjpeg-2.1.patch" "mupdf-CVE-2016-6265.patch" "mupdf-CVE-2016-6525.patch" - "mupdf-CVE-2016-8674.patch")) + "mupdf-CVE-2016-7504.patch" + "mupdf-CVE-2016-7505.patch" + "mupdf-CVE-2016-7506.patch" + "mupdf-CVE-2016-7563.patch" + "mupdf-CVE-2016-7564.patch" + "mupdf-CVE-2016-8674.patch" + "mupdf-CVE-2016-9017.patch" + "mupdf-CVE-2016-9136.patch")) (modules '((guix build utils))) (snippet ;; Delete all the bundled libraries except for mujs, which is @@ -778,3 +785,106 @@ the framebuffer.") (description "@command{pdf2svg} is a simple command-line PDF to SVG converter using the Poppler and Cairo libraries.") (license license:gpl2+))) + +(define-public python-pypdf2 + (package + (name "python-pypdf2") + (version "1.26.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "PyPDF2" version)) + (sha256 + (base32 + "11a3aqljg4sawjijkvzhs3irpw0y67zivqpbjpm065ha5wpr13z2")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after + 'unpack 'patch-test-suite + (lambda _ + ;; The text-file needs to be opened in binary mode for Python 3, + ;; so patch in the "b" + (substitute* "Tests/tests.py" + (("pdftext_file = open\\(.* 'crazyones.txt'\\), 'r" line) + (string-append line "b"))) + #t)) + (replace 'check + (lambda _ + (zero? (system* "python" "-m" "unittest" "Tests.tests"))))))) + (home-page "http://mstamy2.github.com/PyPDF2") + (synopsis "Pure Python PDF toolkit") + (description "PyPDF2 is a pure Python PDF library capable of: + +@enumerate +@item extracting document information (title, author, …) +@item splitting documents page by page +@item merging documents page by page +@item cropping pages +@item merging multiple pages into a single page +@item encrypting and decrypting PDF files +@end enumerate + +By being pure Python, it should run on any Python platform without any +dependencies on external libraries. It can also work entirely on +@code{StringIO} objects rather than file streams, allowing for PDF +manipulation in memory. It is therefore a useful tool for websites that +manage or manipulate PDFs.") + (license license:bsd-3))) + +(define-public python2-pypdf2 + (package-with-python2 python-pypdf2)) + +(define-public python2-pypdf + (package + (name "python2-pypdf") + (version "1.13") + (source (origin + (method url-fetch) + (uri (pypi-uri "pyPdf" version)) + (sha256 + (base32 + "0fqfvamir7k41w84c73rghzkiv891gdr17q5iz4hgbf6r71y9v9s")))) + (build-system python-build-system) + (arguments + `(#:tests? #f ; no tests + #:python ,python-2)) + (home-page "http://pybrary.net/pyPdf/") + (synopsis "Pure Python PDF toolkit") + (description "PyPDF2 is a pure Python PDF toolkit. + +Note: This module isn't maintained anymore. For new projects please use +python-pypdf2 instead.") + (license license:bsd-3))) + +(define-public pdfposter + (package + (name "pdfposter") + (version "0.6.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "pdftools.pdfposter" version ".tar.bz2")) + (sha256 + (base32 + "1i9jqawf279va089ykicglcq4zlsnwgcnsdzaa8vnm836lqhywma")))) + (build-system python-build-system) + (arguments + `(#:tests? #f ; no test suite, only for visual control + #:python ,python-2)) + (inputs + ;; pdfposter 0.6.0 still uses the old pyPdf + `(("python2-pypdf" ,python2-pypdf))) + (native-inputs + `(("python2-setuptools" ,python2-setuptools))) + (home-page "https://pythonhosted.org/pdftools.pdfposter/") + (synopsis "Scale and tile PDF images/pages to print on multiple pages") + (description "@command{pdfposter} can be used to create a large poster by +building it from multple pages and/or printing it on large media. It expects +as input a PDF file, normally printing on a single page. The output is again +a PDF file, maybe containing multiple pages together building the poster. The +input page will be scaled to obtain the desired size. + +This is much like @command{poster} does for Postscript files, but working with +PDF. Since sometimes @command{poster} does not like your files converted from +PDF. Indeed @command{pdfposter} was inspired by @command{poster}.") + (license license:gpl3+))) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 7beca849c8..a044a32b32 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -3506,6 +3506,31 @@ just write a method to handle handles, and methods for handling strings and file names are added for you.") (license (package-license perl)))) +(define-public perl-modern-perl + (package + (name "perl-modern-perl") + (version "1.20150127") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/C/CH/CHROMATIC/Modern-Perl-" + version + ".tar.gz")) + (sha256 + (base32 + "0iv2crfxl3xh6mq36g1gv9fr8iqq3kpbj8afxy5qi60hh7v3xhcl")))) + (build-system perl-build-system) + (native-inputs + `(("perl-module-build" ,perl-module-build))) + (home-page + "http://search.cpan.org/dist/Modern-Perl") + (synopsis + "Enable all of the features of Modern Perl with one import") + (description "@code{Modern::Perl} provides a simple way to enable +multiple, by now, standard libraries in a Perl program.") + (license (package-license perl)))) + (define-public perl-module-build-tiny (package (name "perl-module-build-tiny") diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index eb08a451b8..23934196db 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -2521,9 +2521,8 @@ version numbers.") (base32 "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn")))) (build-system python-build-system) - (inputs - `(("python-setuptools" ,python-setuptools) - ("python-vcversioner" ,python-vcversioner))) + (native-inputs + `(("python-vcversioner" ,python-vcversioner))) (home-page "http://github.com/Julian/jsonschema") (synopsis "Implementation of JSON Schema for Python") (description @@ -2535,9 +2534,11 @@ version numbers.") (let ((jsonschema (package-with-python2 (strip-python2-variant python-jsonschema)))) (package (inherit jsonschema) - (inputs - `(("python2-functools32" ,python2-functools32) - ,@(package-inputs jsonschema)))))) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs jsonschema))) + (propagated-inputs + `(("python2-functools32" ,python2-functools32)))))) (define-public python-unidecode (package @@ -4078,7 +4079,19 @@ both of which are installed automatically if you install this library.") (synopsis "Various utility functions for SQLAlchemy") (description "SQLAlchemy-utils provides various utility functions and custom data types -for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.") +for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python. + +You might also want to install the following optional dependencies: +@enumerate +@item @code{python-passlib} +@item @code{python-babel} +@item @code{python-cryptography} +@item @code{python-pytz} +@item @code{python-psycopg2} +@item @code{python-furl} +@item @code{python-flask-babel} +@end enumerate +") (properties `((python2-variant . ,(delay python2-sqlalchemy-utils)))) (license license:bsd-3))) @@ -4190,14 +4203,14 @@ services for your Python modules and applications.") (define-public python-pillow (package (name "python-pillow") - (version "3.3.1") + (version "3.3.3") (source (origin (method url-fetch) (uri (pypi-uri "Pillow" version)) (sha256 (base32 - "1w9x3dfrg8b5lqhpjl0fczfyf9842wbqwgxbjjq4vfpxv5jwm49l")))) + "0xkv0p1d73gz0a1qaasf0ai4262g8f334j07vd60bjrxs2wr3nmj")))) (build-system python-build-system) (native-inputs `(("python-setuptools" ,python-setuptools) @@ -6583,14 +6596,14 @@ responses, rather than doing any computation.") (define-public python-cryptography-vectors (package (name "python-cryptography-vectors") - (version "1.3.4") + (version "1.5.3") (source (origin (method url-fetch) (uri (pypi-uri "cryptography_vectors" version)) (sha256 (base32 - "15h1iz2klnpb4f8djxy7cpbnyn3wbjp7bnj4pz6s7w6plghbq524")))) + "1bnd1bricyhxa27rhr0ljk0kacxzvysd3ar2j2hlv13a2k6zw4z5")))) (build-system python-build-system) (native-inputs `(("python-setuptools" ,python-setuptools))) @@ -6607,14 +6620,14 @@ responses, rather than doing any computation.") (define-public python-cryptography (package (name "python-cryptography") - (version "1.3.4") + (version "1.5.3") (source (origin (method url-fetch) (uri (pypi-uri "cryptography" version)) (sha256 (base32 - "1a85l548w5vvq3yhz0az7ajg2ijixzp6gagapw6wgrqvq28ghgs2")))) + "1raanvkdfw5ai56ymlij6ghc4k126fs7jx948ig7yn4vj6ndv0ng")))) (build-system python-build-system) (arguments `(#:phases @@ -6645,7 +6658,8 @@ responses, rather than doing any computation.") ("python-pretend" ,python-pretend) ("python-pyasn1" ,python-pyasn1) ("python-pyasn1-modules" ,python-pyasn1-modules) - ("python-pytest" ,python-pytest))) + ("python-pytz" ,python-pytz) + ("python-pytest" ,python-pytest-2.9.2))) (home-page "https://github.com/pyca/cryptography") (synopsis "Cryptographic recipes and primitives for Python") (description @@ -12303,3 +12317,84 @@ asynchronous messaging environments.") (define-public python2-axolotl (package-with-python2 python-axolotl)) + +(define-public python-termstyle + (package + (name "python-termstyle") + (version "0.1.11") + (source + (origin + (method url-fetch) + (uri (pypi-uri "termstyle" version)) + (sha256 + (base32 + "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g")))) + (build-system python-build-system) + (home-page "http://github.com/gfxmonk/termstyle") + (synopsis "Console text coloring for Python") + (description "This package provides console text coloring for Python.") + (license license:bsd-3))) + +(define-public python-rednose + (package + (name "python-rednose") + (version "1.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "rednose" version)) + (sha256 + (base32 + "0b0bsna217lr1nykyhl5fgjly15zhdvqd4prg4wy1zrgfv7al6m0")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-deps + (lambda _ + ;; See <https://github.com/JBKahn/rednose/issues/12> + (substitute* "setup.py" + (("python-termstyle") "termstyle")) + #t))))) + (propagated-inputs + `(("python-colorama" ,python-colorama) + ("python-termstyle" ,python-termstyle))) + (native-inputs + `(("python-six" ,python-six) + ("python-nose" ,python-nose))) + (home-page "https://github.com/JBKahn/rednose") + (synopsis "Colored output for Python nosetests") + (description "This package provides colored output for the +@command{nosetests} command of the Python Nose unit test framework.") + (license license:bsd-3))) + +(define-public python-flask-restplus + (package + (name "python-flask-restplus") + (version "0.9.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "flask-restplus" version)) + (sha256 + (base32 + "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4")))) + (build-system python-build-system) + (propagated-inputs + `(("python-aniso8601" ,python-aniso8601) + ("python-flask" ,python-flask) + ("python-jsonschema" ,python-jsonschema) + ("python-pytz" ,python-pytz) + ("python-six" ,python-six))) + (native-inputs + `(("python-tzlocal" ,python-tzlocal) + ("python-blinker" ,python-blinker) + ("python-nose" ,python-nose) + ("python-rednose" ,python-rednose))) + (home-page "https://github.com/noirbizarre/flask-restplus") + (synopsis "Framework for documented API development with Flask") + (description "This package provides a framework for API development with +the Flask web framework in Python. It is similar to package +@code{python-flask-restful} but supports the @code{python-swagger} +documentation builder.") + (license license:expat))) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 8559b17492..b442356530 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -1171,3 +1171,117 @@ different kinds of sliders, and much more.") (license:non-copyleft "http://qwt.sourceforge.net/qwtlicense.html") ;; textengines/mathml/qwt_mml_document.{cpp,h} is dual LGPL2.1/GPL3 (either). license:lgpl2.1 license:gpl3)))) + +(define-public qtwebkit + (package + (name "qtwebkit") + (version "5.7.0") + (source + (origin + (method url-fetch) + (uri (string-append "http://download.qt.io/community_releases/" + (version-major+minor version) + "/" version "/qtwebkit-opensource-src-" version + ".tar.xz")) + ;; Note: since Qt 5.6, Qt no longer officially supports qtwebkit: + ;; <http://lists.qt-project.org/pipermail/development/2016-May/025923.html>. + (sha256 + (base32 + "1prlpl3zslzpr1iv7m3irvxjxn3v8nlxh21v9k2kaq4fpwy2b8y7")))) + (build-system gnu-build-system) + (native-inputs + `(("perl" ,perl) + ("python" ,python-2.7) + ("ruby" ,ruby) + ("bison" ,bison) + ("flex" ,flex) + ("gperf" ,gperf) + ("pkg-config" ,pkg-config))) + (inputs + `(("icu" ,icu4c) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libwebp" ,libwebp) + ("sqlite" ,sqlite) + ("fontconfig" ,fontconfig) + ("libxrender", libxrender) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtmultimedia" ,qtmultimedia) + ("libxml2" ,libxml2) + ("libxslt" ,libxslt) + ("libx11" ,libx11) + ("libxcomposite" ,libxcomposite))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (setenv "QMAKEPATH" + (string-append (getcwd) "/Tools/qmake:" + (getenv "QMAKEPATH"))) + (system* "qmake")))) + ;; prevent webkit from trying to install into the qtbase store directory, + ;; and replace references to the build directory in linker options: + (add-before 'build 'patch-installpaths + (lambda* (#:key outputs inputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (qtbase (assoc-ref inputs "qtbase")) + (builddir (getcwd)) + (linkbuild (string-append "-L" builddir)) + (linkout (string-append "-L" out)) + (makefiles + (map-in-order + (lambda (i) + (let* ((in (car i)) + (mf (string-append (dirname in) "/" + (cdr i)))) + ;; by default, these Makefiles are + ;; generated during install, but we need + ;; to generate them now + (system* "qmake" in "-o" mf) + mf)) + '(("Source/api.pri" . "Makefile.api") + ("Source/widgetsapi.pri" + . "Makefile.widgetsapi") + ("Source/WebKit2/WebProcess.pro" + . "Makefile.WebProcess") + ("Source/WebKit2/PluginProcess.pro" + . "Makefile.PluginProcess") + ("Source/WebKit/qt/declarative/public.pri" + . "Makefile.declarative.public") + ("Source/WebKit/qt/declarative/experimental/experimental.pri" + . "Makefile.declarative.experimental") + ("Source/WebKit/qt/examples/platformplugin/platformplugin.pro" + . "Makefile"))))) + ;; Order of qmake calls and substitutions matters here. + (system* "qmake" "-prl" "Source/widgetsapi.pri" + "-o" "Source/Makefile") + (substitute* (find-files "lib" "libQt5.*\\.prl") + ((linkbuild) linkout)) + (substitute* (find-files "lib" + "libQt5WebKit.*\\.la") + (("libdir='.*'") + (string-append "libdir='" out "/lib'")) + ((linkbuild) linkout)) + (substitute* (find-files "lib/pkgconfig" + "Qt5WebKit.*\\.pc") + (((string-append "prefix=" qtbase)) + (string-append "prefix=" out)) + ((linkbuild) linkout)) + ;; Makefiles must be modified after .prl/.la/.pc + ;; files, lest they get rebuilt: + (substitute* makefiles + (((string-append "\\$\\(INSTALL_ROOT\\)" qtbase)) + out ) + (((string-append "-Wl,-rpath," builddir)) + (string-append "-Wl,-rpath," out))))))))) + (home-page "https://www.webkit.org") + (synopsis "Web browser engine and classes to render and interact with web +content") + (description "QtWebKit provides a Web browser engine that makes it easy to +embed content from the World Wide Web into your Qt application. At the same +time Web content can be enhanced with native controls.") + + (license license:lgpl2.1+))) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 60f1992281..42beda3d44 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -178,13 +178,13 @@ a focus on simplicity and productivity.") (define-public ruby-hoe (package (name "ruby-hoe") - (version "3.13.1") + (version "3.15.2") (source (origin (method url-fetch) (uri (rubygems-uri "hoe" version)) (sha256 (base32 - "1mac13krdrasn9819dd65xj27kklfy0xdbj3p6s2ij4vlcb46h8q"))) ) + "1riyf9j9vp7dzgpw5xj9xx1vqkdmg6lr7qiprmn91hcdp81kaszp"))) ) (build-system ruby-build-system) (synopsis "Ruby project management helper") (description @@ -199,13 +199,13 @@ announcement.") (define-public ruby-rake-compiler (package (name "ruby-rake-compiler") - (version "0.9.5") + (version "1.0.1") (source (origin (method url-fetch) (uri (rubygems-uri "rake-compiler" version)) (sha256 (base32 - "1k8im2vzj849xdgjk6wafspkiwwapqwm738majchb4dnhnsk64cx")))) + "1lf91nf1fcnmsh54mxz06wyfmjkwh58vljr35zns5cwbg8fwmi20")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; needs cucumber @@ -262,13 +262,13 @@ an extensible architecture with a swappable backend.") (define-public ruby-rspec-core (package (name "ruby-rspec-core") - (version "3.5.1") + (version "3.5.4") (source (origin (method url-fetch) (uri (rubygems-uri "rspec-core" version)) (sha256 (base32 - "0brfq51fwkkh5g6vw7smky5fvip46pryi243jmin0nzn7iwh9j5g")))) + "1nacs062qbr98fx6czf1vwppn1js956nv2c8vfwj6i65axdfs46i")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; avoid dependency cycles @@ -423,13 +423,13 @@ expectations and mocks frameworks.") (define-public bundler (package (name "bundler") - (version "1.13.5") + (version "1.13.6") (source (origin (method url-fetch) (uri (rubygems-uri "bundler" version)) (sha256 (base32 - "0fxr7aq7qhlga423mygy7q96cwxmvqlcy676v2x5swlw8rlha2in")))) + "1xyhy9cn8w9passp64p6hb3df2fpiqbds6rj7xha1335xpgj5zgs")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; avoid dependency cycles @@ -710,16 +710,17 @@ interfaces.") (define-public ruby-lumberjack (package (name "ruby-lumberjack") - (version "1.0.9") + (version "1.0.10") (source (origin (method url-fetch) (uri (rubygems-uri "lumberjack" version)) (sha256 (base32 - "162frm2bwy58pj8ccsdqa4a6i0csrhb9h5l3inhkl1ivgfc8814l")))) + "0ily8j83q959w19zb7qm6m7y53sdj9afxj4x6mn2adl4i7vpdsv4")))) (build-system ruby-build-system) (native-inputs - `(("ruby-rspec" ,ruby-rspec))) + `(("ruby-rspec" ,ruby-rspec) + ("ruby-timecop" ,ruby-timecop))) (synopsis "Logging utility library for Ruby") (description "Lumberjack is a simple logging utility that can be a drop in replacement for Logger or ActiveSupport::BufferedLogger. It provides support @@ -1839,13 +1840,13 @@ net/http library.") (define-public ruby-arel (package (name "ruby-arel") - (version "7.1.1") + (version "7.1.4") (source (origin (method url-fetch) (uri (rubygems-uri "arel" version)) (sha256 (base32 - "0d6kfsh7qf5gls0n1nrppxv89zyli27kw8nklpq2by3z7cxjcvjg")))) + "0l757dkkaxk5fq3368l79jpyzq9a9driricjamhiwhwvh0h7xcyx")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; no tests (home-page "https://github.com/rails/arel") @@ -2115,7 +2116,7 @@ aware transformations between times in different time zones.") (define-public ruby-tzinfo-data (package (name "ruby-tzinfo-data") - (version "1.2016.7") + (version "1.2016.9") (source (origin (method url-fetch) @@ -2128,7 +2129,7 @@ aware transformations between times in different time zones.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0vh75hkfmqk4hdjv6nm7acw64izwpnv7slkmh2kj7qlfz133yh9l")) + "0i8vz2j7wmcpr4pd066qvlg4if5blscjrgxk2imavfa49nq5lp06")) ;; Remove the known test failure. ;; https://github.com/tzinfo/tzinfo-data/issues/10 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128 @@ -3047,43 +3048,44 @@ features such as filtering and fine grained logging.") (license license:expat))) (define-public ruby-yard - (package - (name "ruby-yard") - (version "0.8.7.6") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "yard" version)) - (sha256 - (base32 - "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "specs" - #:phases - (modify-phases %standard-phases - (add-before 'check 'set-HOME-and-disable-failing-test - (lambda _ - ;; $HOME needs to be set to somewhere writeable for tests to run - (setenv "HOME" "/tmp") - ;; Disable tests which fails on Ruby 2.3. See - ;; https://github.com/lsegal/yard/issues/927 - (substitute* "spec/parser/ruby/ruby_parser_spec.rb" - (("comment.type.should == :comment") "") - (("comment.docstring_hash_flag.should be_true") "") - (("comment.docstring.strip.should == .*") "")) - #t))))) - (native-inputs - `(("ruby-rspec" ,ruby-rspec-2) - ("ruby-rack" ,ruby-rack))) - (synopsis "Documentation generation tool for Ruby") - (description - "YARD is a documentation generation tool for the Ruby programming + ;; Use git reference because gem is >100 commits out of date and the tests + ;; do not pass with the released gem. + (let ((commit "d816482a0d4850506c3bcccc9434550c536c28c6")) + (package + (name "ruby-yard") + (version (string-append "0.9.5-1." (string-take commit 8))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lsegal/yard.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1j16c85x22if7y0fzi3c900p9wzkx2riq1y7vsj92a0zvwsxai4i")) + (patches (search-patches "ruby-yard-fix-skip-of-markdown-tests.patch")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-before 'check 'set-HOME-and-disable-failing-test + (lambda _ + ;; $HOME needs to be set to somewhere writeable for tests to run + (setenv "HOME" "/tmp") + #t))))) + (native-inputs + `(("ruby-rspec" ,ruby-rspec-2) + ("ruby-rack" ,ruby-rack))) + (synopsis "Documentation generation tool for Ruby") + (description + "YARD is a documentation generation tool for the Ruby programming language. It enables the user to generate consistent, usable documentation that can be exported to a number of formats very easily, and also supports extending for custom Ruby constructs such as custom class level definitions.") - (home-page "http://yardoc.org") - (license license:expat))) + (home-page "http://yardoc.org") + (license license:expat)))) (define-public ruby-clap (package @@ -3301,14 +3303,14 @@ neither too verbose nor too minimal.") (define-public ruby-sqlite3 (package (name "ruby-sqlite3") - (version "1.3.11") + (version "1.3.12") (source (origin (method url-fetch) (uri (rubygems-uri "sqlite3" version)) (sha256 (base32 - "19r06wglnm6479ffj9dl0fa4p5j2wi6dj7k6k3d0rbx7036cv3ny")))) + "0hld87rvwyy31xsxzhicv2lj3g3kmvmwfxj09kw13g6lacdjz4bx")))) (build-system ruby-build-system) (arguments `(#:phases @@ -3333,14 +3335,14 @@ engine.") (define-public ruby-shoulda-context (package (name "ruby-shoulda-context") - (version "1.2.1") + (version "1.2.2") (source (origin (method url-fetch) (uri (rubygems-uri "shoulda-context" version)) (sha256 (base32 - "06wv2ika5zrbxn0m3qxwk0zkbspxids3zmlq3xxays5qmvl1qb55")))) + "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc")))) (build-system ruby-build-system) (arguments `(#:phases @@ -3469,14 +3471,14 @@ support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and (define-public ruby-domain-name (package (name "ruby-domain-name") - (version "0.5.20160826") + (version "0.5.20161021") (source (origin (method url-fetch) (uri (rubygems-uri "domain_name" version)) (sha256 (base32 - "0rg7gvp45xmb5qz8ydp7ivw05hhplh6k7mbawrpvkysl2c77w5xx")))) + "1y5c96gzyh6z4nrnkisljqngfvljdba36dww657ka0x7khzvx7jl")))) (build-system ruby-build-system) (arguments `(#:phases @@ -3509,14 +3511,14 @@ Suffix List.") (define-public ruby-http-cookie (package (name "ruby-http-cookie") - (version "1.0.2") + (version "1.0.3") (source (origin (method url-fetch) (uri (rubygems-uri "http-cookie" version)) (sha256 (base32 - "0cz2fdkngs3jc5w32a6xcl511hy03a7zdiy988jk1sf3bf5v3hdw")))) + "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g")))) (build-system ruby-build-system) (arguments `(#:phases @@ -4043,14 +4045,14 @@ generation.") (define-public ruby-sequel (package (name "ruby-sequel") - (version "4.39.0") + (version "4.40.0") (source (origin (method url-fetch) (uri (rubygems-uri "sequel" version)) (sha256 (base32 - "01zqd6mi9wvhbg76b91k35jppha0c944ar9f816gi400cf9817bg")))) + "0r39dv3yprai0cy7hslfxswjr4fg783xwxskmbih8ry24f18lbk0")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks. diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 9501f2235c..700a8957cc 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -2155,20 +2155,6 @@ encoder/decoder, round-off-error-free sum and cumsum, etc.") "1czvkaz1ji3jyj6qrvbswisqs9d05ljqc4vjkfdrf6hygix7azd0")))) (properties `((upstream-name . "rmarkdown"))) (build-system r-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - ;; See https://github.com/rstudio/rmarkdown/pull/800 - ;; The resource files are in the store and have mode 444. After - ;; copying the files R fails to remove them again because it doesn't - ;; have write access to them. - (add-after 'unpack 'copy-files-without-mode - (lambda _ - (substitute* "R/render.R" - (("file.copy\\(from = from," prefix) - (string-append prefix - " copy.mode = FALSE, "))) - #t))))) (propagated-inputs `(("r-catools" ,r-catools) ("r-evaluate" ,r-evaluate) diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm new file mode 100644 index 0000000000..f4668de0c0 --- /dev/null +++ b/gnu/packages/syndication.scm @@ -0,0 +1,75 @@ +;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages syndication) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix download) + #:use-module (guix packages) + #:use-module (guix build-system gnu) + #:use-module (gnu packages curl) + #:use-module (gnu packages databases) + #:use-module (gnu packages gettext) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages ruby) + #:use-module (gnu packages xml) + #:use-module (gnu packages web)) + +(define-public newsbeuter + (package + (name "newsbeuter") + (version "2.9") + (source + (origin + (method url-fetch) + (uri (string-append "https://newsbeuter.org/downloads/newsbeuter-" + version ".tar.gz")) + (sha256 + (base32 + "1j1x0hgwxz11dckk81ncalgylj5y5fgw5bcmp9qb5hq9kc0vza3l")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'configure + (lambda _ + (substitute* "config.sh" + ;; try to remove this at the next release + (("ncursesw5") "ncursesw6")) + #t))) + #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out"))) + #:test-target "test")) + (native-inputs + `(("gettext" ,gnu-gettext) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("ruby" ,ruby))) ; for tests + (inputs + `(("curl" ,curl) + ("json-c" ,json-c) + ("ncurses" ,ncurses) + ("stfl" ,stfl) + ("sqlite" ,sqlite) + ("libxml2" ,libxml2))) + (home-page "https://newsbeuter.org/") + (synopsis "Text mode rss feed reader with podcast support") + (description "Newsbeuter is an innovative RSS feed reader for the text +console. It supports OPML import/exports, HTML rendering, podcast (podbeuter), +offline reading, searching and storing articles to your filesystem, and many +more features. Its user interface is coherent, easy to use, and might look +common to users of @command{mutt} and @command{slrn}.") + (license (list license:gpl2+ ; filter/* + license:x11)))) diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index c8114c2077..9186e4693a 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch> +;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -439,7 +440,9 @@ PDF documents.") "texmaker.pro")))))))) (inputs `(("poppler-qt5" ,poppler-qt5) - ("qt" ,qt) + ("qtbase" ,qtbase) + ("qtscript" ,qtscript) + ("qtwebkit" ,qtwebkit) ("zlib" ,zlib))) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/uml.scm b/gnu/packages/uml.scm new file mode 100644 index 0000000000..8f6e1d8a5e --- /dev/null +++ b/gnu/packages/uml.scm @@ -0,0 +1,91 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 Theodoros Foradis <theodoros.for@openmailbox.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages uml) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system ant) + #:use-module (gnu packages graphviz) + #:use-module (gnu packages java)) + +(define-public plantuml + (package + (name "plantuml") + (version "8048") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/plantuml/plantuml-" + version ".tar.gz")) + (sha256 + (base32 + "1vipxd6p7isb1k1qqh4hrpfcj27hx1nll2yp0rfwpvps1w2d936i")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests + #:build-target "dist" + #:phases + (modify-phases %standard-phases + (add-before 'build 'delete-extra-from-classpath + (lambda _ + (substitute* "build.xml" + (("1.6") "1.7") + (("<attribute name=\"Class-Path\"") "<!--") + (("j2v8_macosx_x86_64-3.1.7.jar\" />") "-->")) + #t)) + (add-after 'delete-extra-from-classpath 'patch-usr-bin-dot + (lambda* (#:key inputs #:allow-other-keys) + (let ((dot (string-append (assoc-ref inputs "graphviz") + "/bin/dot"))) + (substitute* + "src/net/sourceforge/plantuml/cucadiagram/dot/GraphvizLinux.java" + (("/usr/bin/dot") dot))) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (install-file "plantuml.jar" (string-append + (assoc-ref outputs "out") + "/share/java")) + #t)) + (add-after 'install 'make-wrapper + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (wrapper (string-append out "/bin/plantuml"))) + (mkdir-p (string-append out "/bin")) + (with-output-to-file wrapper + (lambda _ + (display + (string-append + "#!/bin/sh\n\n" + (assoc-ref inputs "jre") "/bin/java -jar " + out "/share/java/plantuml.jar \"$@\"\n")))) + (chmod wrapper #o555)) + #t))))) + (inputs + `(("graphviz" ,graphviz) + ("jre" ,icedtea))) + (home-page "http://plantuml.com/") + (synopsis "Draw UML diagrams from simple textual description") + (description + "Plantuml is a tool to generate sequence, usecase, class, activity, +component, state, deployment and object UML diagrams, using a simple and +human readable text description. Contains @code{salt}, a tool that can design +simple graphical interfaces.") + (license license:gpl3+))) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 1f7d60148c..e06a611164 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -313,7 +313,7 @@ everything from small to very large projects with speed and efficiency.") (define-public libgit2 (package (name "libgit2") - (version "0.24.2") + (version "0.24.3") (source (origin (method url-fetch) (uri (string-append "https://github.com/libgit2/libgit2/" @@ -321,7 +321,7 @@ everything from small to very large projects with speed and efficiency.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1rkmfjiv5h80ycra42w9idbcrgj9rz581k5c06badys3650agw00")))) + "0m37b2jq8g70bmxlgrhbj4p23c893vxwmlmw1v5ywfxz3njyc90a")))) (build-system cmake-build-system) (arguments `(#:phases diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index 172d6105bb..b283e975d5 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -31,6 +31,7 @@ #:use-module (gnu packages gawk) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) + #:use-module (gnu packages groff) #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages linux) @@ -48,7 +49,7 @@ (define-public vim (package (name "vim") - (version "8.0.0069") + (version "8.0.0073") (source (origin (method url-fetch) (uri (string-append "https://github.com/vim/vim/archive/v" @@ -56,7 +57,7 @@ (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1xxg0m296jqcg7wxxw1zcr0i10j1a85aw6ainpql2h4jrqbwqvy9")))) + "1snbzgj89scjs0v3m86p53wvpal9jgs1s6i3hv7jyknpnjvqv5q5")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -147,3 +148,62 @@ configuration files.") ("ruby" ,ruby) ("tcl" ,tcl) ,@(package-inputs vim))))) + +(define-public vifm + (package + (name "vifm") + (version "0.8.2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/vifm/vifm/vifm-" + version ".tar.bz2")) + (sha256 + (base32 + "07r15kq7kjl3a41sd11ncpsii866xxps4f90zh3lv8jqcrv6silb")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'patch-source-shebangs 'patch-test-shebangs + (lambda _ + (substitute* (find-files "tests" "\\.c$") + (("/bin/sh") (which "sh"))) + #t))))) + (native-inputs + `(("groff" ,groff) ; for the documentation + ("perl" ,perl))) + (inputs + `(("libx11" ,libx11) + ("ncurses" ,ncurses))) + (home-page "http://vifm.info/") + (synopsis "Flexible vi-like file manager using ncurses") + (description "Vifm is a file manager providing a @command{vi}-like usage +experience. It has similar keybindings and modes (e.g. normal, command line, +visual). The interface uses ncurses, thus vifm can be used in text-only +environments. It supports a wide range of features, some of which are known +from the @command{vi}-editor: +@enumerate +@item utf8 support +@item user mappings (almost like in @code{vi}) +@item ranges in command +@item line commands +@item user defined commands (with support for ranges) +@item registers +@item operation undoing/redoing +@item fuse file systems support +@item trash +@item multiple files renaming +@item support of filename modifiers +@item colorschemes support +@item file name color according to file type +@item path specific colorscheme customization +@item bookmarks +@item operation backgrounding +@item customizable file viewers +@item handy @code{less}-like preview mode +@item filtering out and searching for files using regular expressions +@item one or two panes view +@end enumerate +With the package comes a plugin to use vifm as a vim file selector.") + (license license:gpl2+))) diff --git a/gnu/packages/wordnet.scm b/gnu/packages/wordnet.scm index 357c19351b..42076645c4 100644 --- a/gnu/packages/wordnet.scm +++ b/gnu/packages/wordnet.scm @@ -23,6 +23,7 @@ #:use-module (guix licenses) #:use-module (guix download) #:use-module (gnu packages) + #:use-module (gnu packages gcc) #:use-module (gnu packages tcl)) (define-public wordnet @@ -51,22 +52,7 @@ ;; Provide the `result' field in `Tcl_Interp'. ;; See <https://bugs.gentoo.org/show_bug.cgi?id=452034>. - ;; - ;; The 'DEFAULTPATH' string literal, which - ;; contains the output path, only appears as - ;; the operand of one 'strcpy' call. As a - ;; consequence, GCC does not store the string - ;; literal as is but instead introduces "gaps" - ;; for alignment reasons presumably---like - ;; "/gnu/sto?????re/8jp8b??????ky105…". This - ;; makes this string invisible to the GC, which - ;; in turns causes problems when running a - ;; grafted WordNet because that grafted WordNet - ;; keeps referring to the ungrafted variant, - ;; which is not protected from GC. Thus, - ;; disable use of '__builtin_strcpy' to avoid - ;; that. - "CFLAGS=-DUSE_INTERP_RESULT -O2 -fno-builtin-strcpy") + "CFLAGS=-DUSE_INTERP_RESULT -O2") #:phases (modify-phases %standard-phases (add-after 'install 'post-install @@ -93,6 +79,12 @@ #t)))))) (outputs '("out" "tk")) ; for the Tcl/Tk GUI + + ;; Build with a patched GCC to work around <http://bugs.gnu.org/24703>. + ;; (Specifically the 'DEFAULTPATH' string literal is what we want to + ;; prevent from being chunked so that grafting can "see" it and patch it.) + (native-inputs `(("gcc@6" ,gcc-6))) + (inputs `(("tk" ,tk) ("tcl" ,tcl))) (home-page "http://wordnet.princeton.edu/") diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 94a017d1d5..505d585e66 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -134,6 +134,7 @@ project (but it is usable outside of the Gnome platform).") (define-public libxslt (package (name "libxslt") + (replacement libxslt/fixed) (version "1.1.29") (source (origin (method url-fetch) @@ -155,6 +156,14 @@ project (but it is usable outside of the Gnome platform).") based on libxml for XML parsing, tree manipulation and XPath support.") (license license:x11))) +(define libxslt/fixed + (package + (inherit libxslt) + (name "libxslt") + (source (origin + (inherit (package-source libxslt)) + (patches (search-patches "libxslt-CVE-2016-4738.patch")))))) + (define-public perl-graph-readwrite (package (name "perl-graph-readwrite") diff --git a/gnu/services/kerberos.scm b/gnu/services/kerberos.scm new file mode 100644 index 0000000000..144c71bba0 --- /dev/null +++ b/gnu/services/kerberos.scm @@ -0,0 +1,67 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 John Darrington <jmd@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu services kerberos) + #:use-module (gnu packages admin) + #:use-module (gnu services) + #:use-module (gnu system pam) + #:use-module (guix gexp) + #:use-module (guix records) + #:export (pam-krb5-configuration + pam-krb5-configuration? + pam-krb5-service-type)) + +(define-record-type* <pam-krb5-configuration> + pam-krb5-configuration make-pam-krb5-configuration + pam-krb5-configuration? + (pam-krb5 pam-krb5-configuration-pam-krb5 + (default pam-krb5)) + (minimum-uid pam-krb5-configuration-minimum-uid + (default 1000))) + +(define (pam-krb5-pam-service config) + "Return a PAM service for Kerberos authentication." + (lambda (pam) + (define pam-krb5-module + #~(string-append #$(pam-krb5-configuration-pam-krb5 config) "/lib/security/pam_krb5.so")) + + (let ((pam-krb5-sufficient + (pam-entry + (control "sufficient") + (module pam-krb5-module) + (arguments (list + (format #f "minimum_uid=~a" + (pam-krb5-configuration-minimum-uid config))))))) + (pam-service + (inherit pam) + (auth (cons* pam-krb5-sufficient + (pam-service-auth pam))) + (session (cons* pam-krb5-sufficient + (pam-service-session pam))) + (account (cons* pam-krb5-sufficient + (pam-service-account pam))))))) + +(define (pam-krb5-pam-services config) + (list (pam-krb5-pam-service config))) + +(define pam-krb5-service-type + (service-type (name 'pam-krb5) + (extensions + (list + (service-extension pam-root-service-type + pam-krb5-pam-services))))) diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index b51d57f079..4cc1221eb8 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -40,6 +40,7 @@ file-system-dependencies file-system->spec + spec->file-system specification->file-system-mapping uuid @@ -107,6 +108,16 @@ initrd code." (($ <file-system> device title mount-point type flags options _ _ check?) (list device title mount-point type flags options check?)))) +(define (spec->file-system sexp) + "Deserialize SEXP, a list, to the corresponding <file-system> object." + (match sexp + ((device title mount-point type flags options check?) + (file-system + (device device) (title title) + (mount-point mount-point) (type type) + (flags flags) (options options) + (check? check?))))) + (define (specification->file-system-mapping spec writable?) "Read the SPEC and return the corresponding <file-system-mapping>. SPEC is a string of the form \"SOURCE\" or \"SOURCE=TARGET\". The former specifies diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm index 5c9d0f15a1..4657b06b5f 100644 --- a/gnu/system/grub.scm +++ b/gnu/system/grub.scm @@ -51,6 +51,7 @@ grub-configuration grub-configuration? grub-configuration-device + grub-configuration-grub menu-entry menu-entry? diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm index d3c0036f47..24e61c3ead 100644 --- a/gnu/system/linux-container.scm +++ b/gnu/system/linux-container.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 David Thompson <davet@gnu.org> +;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +25,7 @@ #:use-module (guix gexp) #:use-module (guix derivations) #:use-module (guix monads) + #:use-module (guix modules) #:use-module (gnu build linux-container) #:use-module (gnu services) #:use-module (gnu system) @@ -87,19 +89,15 @@ that will be shared with the host system." #:container? #t))) (define script - (with-imported-modules '((guix config) - (guix utils) - (guix combinators) - (guix build utils) - (guix build syscalls) - (guix build bournish) - (gnu build file-systems) - (gnu build linux-container)) + (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 '#$specs + (call-with-container (map spec->file-system '#$specs) (lambda () (setenv "HOME" "/root") (setenv "TMPDIR" "/tmp") diff --git a/guix/build/download.scm b/guix/build/download.scm index 4259f52b7a..8e32b3d7ff 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -32,6 +32,7 @@ #:use-module (srfi srfi-11) #:use-module (srfi srfi-19) #:use-module (srfi srfi-26) + #:autoload (ice-9 ftw) (scandir) #:use-module (ice-9 match) #:use-module (ice-9 format) #:export (open-socket-for-uri @@ -273,14 +274,78 @@ out if the connection could not be established in less than TIMEOUT seconds." session record port using PORT as its underlying communication port." (hashq-set! %tls-ports record-port port)) -(define (tls-wrap port server) +(define %x509-certificate-directory + ;; The directory where X.509 authority PEM certificates are stored. + (make-parameter (or (getenv "GUIX_TLS_CERTIFICATE_DIRECTORY") + (getenv "SSL_CERT_DIR")))) ;like OpenSSL + +(define (make-credendials-with-ca-trust-files directory) + "Return certificate credentials with X.509 authority certificates read from +DIRECTORY. Those authority certificates are checked when +'peer-certificate-status' is later called." + (let ((cred (make-certificate-credentials)) + (files (or (scandir directory + (lambda (file) + (string-suffix? ".pem" file))) + '()))) + (for-each (lambda (file) + (set-certificate-credentials-x509-trust-file! + cred (string-append directory "/" file) + x509-certificate-format/pem)) + (or files '())) + cred)) + +(define (peer-certificate session) + "Return the certificate of the remote peer in SESSION." + (match (session-peer-certificate-chain session) + ((first _ ...) + (import-x509-certificate first x509-certificate-format/der)))) + +(define (assert-valid-server-certificate session server) + "Return #t if the certificate of the remote peer for SESSION is a valid +certificate for SERVER, where SERVER is the expected host name of peer." + (define cert + (peer-certificate session)) + + ;; First check whether the server's certificate matches SERVER. + (unless (x509-certificate-matches-hostname? cert server) + (throw 'tls-certificate-error 'host-mismatch cert server)) + + ;; Second check its validity and reachability from the set of authority + ;; certificates loaded via 'set-certificate-credentials-x509-trust-file!'. + (match (peer-certificate-status session) + (() ;certificate is valid + #t) + ((statuses ...) + (throw 'tls-certificate-error 'invalid-certificate cert server + statuses)))) + +(define (print-tls-certificate-error port key args default-printer) + "Print the TLS certificate error represented by ARGS in an intelligible +way." + (match args + (('host-mismatch cert server) + (format port + "X.509 server certificate for '~a' does not match: ~a~%" + server (x509-certificate-dn cert))) + (('invalid-certificate cert server statuses) + (format port + "X.509 certificate of '~a' could not be verified:~%~{ ~a~%~}" + server + (map certificate-status->string statuses))))) + +(set-exception-printer! 'tls-certificate-error + print-tls-certificate-error) + +(define* (tls-wrap port server #:key (verify-certificate? #t)) "Return PORT wrapped in a TLS connection to SERVER. SERVER must be a DNS host name without trailing dot." (define (log level str) (format (current-error-port) "gnutls: [~a|~a] ~a" (getpid) level str)) - (let ((session (make-session connection-end/client))) + (let ((session (make-session connection-end/client)) + (ca-certs (%x509-certificate-directory))) ;; Some servers such as 'cloud.github.com' require the client to support ;; the 'SERVER NAME' extension. However, 'set-session-server-name!' is @@ -301,13 +366,27 @@ host name without trailing dot." ;; <https://tools.ietf.org/html/rfc7568>. (set-session-priorities! session "NORMAL:%COMPAT:-VERS-SSL3.0") - (set-session-credentials! session (make-certificate-credentials)) + (set-session-credentials! session + (if (and verify-certificate? ca-certs) + (make-credendials-with-ca-trust-files + ca-certs) + (make-certificate-credentials))) ;; Uncomment the following lines in case of debugging emergency. ;;(set-log-level! 10) ;;(set-log-procedure! log) (handshake session) + + ;; Verify the server's certificate if needed. + (when verify-certificate? + (catch 'tls-certificate-error + (lambda () + (assert-valid-server-certificate session server)) + (lambda args + (close-port port) + (apply throw args)))) + (let ((record (session-record-port session))) ;; Since we use `fileno' above, the file descriptor behind PORT would be ;; closed when PORT is GC'd. If we used `port->fdes', it would instead @@ -374,9 +453,13 @@ ETIMEDOUT error is raised." (apply throw args) (loop (cdr addresses)))))))) -(define* (open-connection-for-uri uri #:key timeout) +(define* (open-connection-for-uri uri + #:key + timeout + (verify-certificate? #t)) "Like 'open-socket-for-uri', but also handle HTTPS connections. The -resulting port must be closed with 'close-connection'." +resulting port must be closed with 'close-connection'. When +VERIFY-CERTIFICATE? is true, verify HTTPS server certificates." (define https? (eq? 'https (uri-scheme uri))) @@ -403,7 +486,8 @@ resulting port must be closed with 'close-connection'." (setvbuf s _IOFBF %http-receive-buffer-size) (if https? - (tls-wrap s (uri-host uri)) + (tls-wrap s (uri-host uri) + #:verify-certificate? verify-certificate?) s))))) (define (close-connection port) @@ -588,10 +672,11 @@ Return the resulting target URI." #:query (uri-query ref) #:fragment (uri-fragment ref))))) -(define* (http-fetch uri file #:key timeout) +(define* (http-fetch uri file #:key timeout (verify-certificate? #t)) "Fetch data from URI and write it to FILE; when TIMEOUT is true, bail out if the connection could not be established in less than TIMEOUT seconds. Return -FILE on success." +FILE on success. When VERIFY-CERTIFICATE? is true, verify HTTPS +certificates; otherwise simply ignore them." (define post-2.0.7? (or (> (string->number (major-version)) 2) @@ -618,7 +703,10 @@ FILE on success." (_ '())))) (let*-values (((connection) - (open-connection-for-uri uri #:timeout timeout)) + (open-connection-for-uri uri + #:timeout timeout + #:verify-certificate? + verify-certificate?)) ((resp bv-or-port) ;; XXX: `http-get*' was introduced in 2.0.7, and replaced by ;; #:streaming? in 2.0.8. We know we're using it within the @@ -659,7 +747,9 @@ FILE on success." (format #t "following redirection to `~a'...~%" (uri->string uri)) (close connection) - (http-fetch uri file #:timeout timeout))) + (http-fetch uri file + #:timeout timeout + #:verify-certificate? verify-certificate?))) (else (error "download failed" (uri->string uri) code (response-reason-phrase resp)))))) @@ -699,7 +789,7 @@ Return a list of URIs." (define* (url-fetch url file #:key - (timeout 10) + (timeout 10) (verify-certificate? #t) (mirrors '()) (content-addressed-mirrors '()) (hashes '())) "Fetch FILE from URL; URL may be either a single string, or a list of @@ -713,7 +803,10 @@ HASHES must be a list of algorithm/hash pairs, where each algorithm is a symbol such as 'sha256 and each hash is a bytevector. CONTENT-ADDRESSED-MIRRORS must be a list of procedures that, given a hash algorithm and a hash, return a URL where the specified data can be retrieved -or #f." +or #f. + +When VERIFY-CERTIFICATE? is true, validate HTTPS server certificates; +otherwise simply ignore them." (define uri (append-map (cut maybe-expand-mirrors <> mirrors) (match url @@ -725,9 +818,13 @@ or #f." file (uri->string uri)) (case (uri-scheme uri) ((http https) - (false-if-exception* (http-fetch uri file #:timeout timeout))) + (false-if-exception* (http-fetch uri file + #:verify-certificate? + verify-certificate? + #:timeout timeout))) ((ftp) - (false-if-exception* (ftp-fetch uri file #:timeout timeout))) + (false-if-exception* (ftp-fetch uri file + #:timeout timeout))) (else (format #t "skipping URI with unsupported scheme: ~s~%" uri) diff --git a/guix/download.scm b/guix/download.scm index 80507f952a..0c275053c5 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -372,7 +372,11 @@ in the store." #:hashes (value-from-environment "guix download hashes") #:content-addressed-mirrors - (primitive-load #$%content-addressed-mirror-file)))))) + (primitive-load #$%content-addressed-mirror-file) + + ;; No need to validate certificates since we know the + ;; hash of the expected result. + #:verify-certificate? #f))))) (let ((uri (and (string? url) (string->uri url)))) (if (or (and (string? url) (not uri)) @@ -430,10 +434,12 @@ own. This helper makes it easier to deal with \"tar bombs\"." #:local-build? #t))) (define* (download-to-store store url #:optional (name (basename url)) - #:key (log (current-error-port)) recursive?) + #:key (log (current-error-port)) recursive? + (verify-certificate? #t)) "Download from URL to STORE, either under NAME or URL's basename if omitted. Write progress reports to LOG. RECURSIVE? has the same effect as -the same-named parameter of 'add-to-store'." +the same-named parameter of 'add-to-store'. VERIFY-CERTIFICATE? determines +whether or not to validate HTTPS server certificates." (define uri (string->uri url)) @@ -444,7 +450,10 @@ the same-named parameter of 'add-to-store'." (lambda (temp port) (let ((result (parameterize ((current-output-port log)) - (build:url-fetch url temp #:mirrors %mirrors)))) + (build:url-fetch url temp + #:mirrors %mirrors + #:verify-certificate? + verify-certificate?)))) (close port) (and result (add-to-store store name recursive? "sha256" temp))))))) diff --git a/guix/http-client.scm b/guix/http-client.scm index a8324be09f..cc3acc9587 100644 --- a/guix/http-client.scm +++ b/guix/http-client.scm @@ -223,7 +223,7 @@ or if EOF is reached." 'shutdown (const #f)) (define* (http-fetch uri #:key port (text? #f) (buffered? #t) - keep-alive?) + keep-alive? (verify-certificate? #t)) "Return an input port containing the data at URI, and the expected number of bytes available or #f. If TEXT? is true, the data at URI is considered to be textual. Follow any HTTP redirection. When BUFFERED? is #f, return an @@ -231,11 +231,15 @@ unbuffered port, suitable for use in `filtered-port'. When KEEP-ALIVE? is true, send a 'Connection: keep-alive' HTTP header, in which case PORT may be reused for future HTTP requests. +When VERIFY-CERTIFICATE? is true, verify HTTPS server certificates. + Raise an '&http-get-error' condition if downloading fails." (let loop ((uri (if (string? uri) (string->uri uri) uri))) - (let ((port (or port (open-connection-for-uri uri))) + (let ((port (or port (open-connection-for-uri uri + #:verify-certificate? + verify-certificate?))) (auth-header (match (uri-userinfo uri) ((? string? str) (list (cons 'Authorization diff --git a/guix/scripts/download.scm b/guix/scripts/download.scm index bcb4eaa043..ec30b05ac0 100644 --- a/guix/scripts/download.scm +++ b/guix/scripts/download.scm @@ -41,7 +41,8 @@ (define %default-options ;; Alist of default option values. - `((format . ,bytevector->nix-base32-string))) + `((format . ,bytevector->nix-base32-string) + (verify-certificate? . #t))) (define (show-help) (display (_ "Usage: guix download [OPTION] URL @@ -52,6 +53,9 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex' and 'hexadecimal' can be used as well).\n")) (format #t (_ " -f, --format=FMT write the hash in the given format")) + (format #t (_ " + --no-check-certificate + do not validate the certificate of HTTPS servers ")) (newline) (display (_ " -h, --help display this help and exit")) @@ -77,6 +81,9 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16' (alist-cons 'format fmt-proc (alist-delete 'format result)))) + (option '("no-check-certificate") #f #f + (lambda (opt name arg result) + (alist-cons 'verify-certificate? #f result))) (option '(#\h "help") #f #f (lambda args @@ -120,7 +127,10 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16' (parameterize ((current-terminal-columns (terminal-columns))) (download-to-store store (uri->string uri) - (basename (uri-path uri))))))) + (basename (uri-path uri)) + #:verify-certificate? + (assoc-ref opts + 'verify-certificate?)))))) (hash (call-with-input-file (or path (leave (_ "~a: download failed~%") diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index 0c69bfc9d3..6dea67ca22 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -427,7 +427,7 @@ host file systems to mount inside the container." (file-systems (append %container-file-systems (map mapping->file-system mappings)))) (exit/status - (call-with-container (map file-system->spec file-systems) + (call-with-container file-systems (lambda () ;; Setup global shell. (mkdir-p "/bin") diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index d6281eae64..6e6f550941 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -369,7 +369,8 @@ for connections to complete; when TIMEOUT is #f, wait as long as needed." ;; This can happen if the server returns an invalid HTTP header, ;; as is the case with the 'Date' header at sqlite.org. (values 'invalid-http-response #f)) - ((getaddrinfo-error system-error gnutls-error) + ((getaddrinfo-error system-error + gnutls-error tls-certificate-error) (values key args)) (else (apply throw key args)))))) @@ -397,6 +398,13 @@ for connections to complete; when TIMEOUT is #f, wait as long as needed." (_ (values 'unknown-protocol #f))))) +(define (tls-certificate-error-string args) + "Return a string explaining the 'tls-certificate-error' arguments ARGS." + (call-with-output-string + (lambda (port) + (print-exception port #f + 'tls-certificate-error args)))) + (define (validate-uri uri package field) "Return #t if the given URI can be reached, otherwise return #f and emit a warning for PACKAGE mentionning the FIELD." @@ -457,6 +465,10 @@ suspiciously small file (~a bytes)") (cons status argument)))) field) #f) + ((tls-certificate-error) + (emit-warning package + (format #f (_ "TLS certificate error: ~a") + (tls-certificate-error-string argument)))) ((invalid-http-response gnutls-error) ;; Probably a misbehaving server; ignore. #f) @@ -672,14 +684,22 @@ from ~s: ~a (~s)~%") (http-get-error-reason c)) (warning (_ "assuming no CVE vulnerabilities~%")) '())) - (catch 'getaddrinfo-error + (catch #t (lambda () (current-vulnerabilities)) - (lambda (key errcode) - (warning (_ "failed to lookup NIST host: ~a~%") - (gai-strerror errcode)) - (warning (_ "assuming no CVE vulnerabilities~%")) - '())))) + (match-lambda* + (('getaddrinfo-error errcode) + (warning (_ "failed to lookup NIST host: ~a~%") + (gai-strerror errcode)) + (warning (_ "assuming no CVE vulnerabilities~%")) + '()) + (('tls-certificate-error args ...) + (warning (_ "TLS certificate error: ~a") + (tls-certificate-error-string args)) + (warning (_ "assuming no CVE vulnerabilities~%")) + '()) + (args + (apply throw args)))))) (define package-vulnerabilities (let ((lookup (delay (vulnerabilities->lookup-proc diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index 3d6fde0188..524b019a31 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -210,10 +210,12 @@ provide." (close-connection port)))) (begin (when (or (not port) (port-closed? port)) - (set! port (open-connection-for-uri uri)) + (set! port (open-connection-for-uri uri + #:verify-certificate? #f)) (unless (or buffered? (not (file-port? port))) (setvbuf port _IONBF))) - (http-fetch uri #:text? #f #:port port)))))) + (http-fetch uri #:text? #f #:port port + #:verify-certificate? #f)))))) (else (leave (_ "unsupported substitute URI scheme: ~a~%") (uri->string uri))))) @@ -246,6 +248,7 @@ failure, return #f and #f." #f)) ((http https) (let ((port (open-connection-for-uri uri + #:verify-certificate? #f #:timeout %fetch-timeout))) (guard (c ((http-get-error? c) (warning (_ "while fetching '~a': ~a (~s)~%") @@ -256,6 +259,7 @@ failure, return #f and #f." (warning (_ "ignoring substitute server at '~s'~%") url) (values #f #f))) (values (read-cache-info (http-fetch uri + #:verify-certificate? #f #:port port #:keep-alive? #t)) port)))))) @@ -518,7 +522,7 @@ indicates that PATH is unavailable at CACHE-URL." (build-request (string->uri url) #:method 'GET))) (define* (http-multiple-get base-uri proc seed requests - #:key port) + #:key port (verify-certificate? #t)) "Send all of REQUESTS to the server at BASE-URI. Call PROC for each response, passing it the request object, the response, a port from which to read the response body, and the previous result, starting with SEED, à la @@ -529,7 +533,9 @@ initial connection on which HTTP requests are sent." (result seed)) ;; (format (current-error-port) "connecting (~a requests left)..." ;; (length requests)) - (let ((p (or port (open-connection-for-uri base-uri)))) + (let ((p (or port (open-connection-for-uri base-uri + #:verify-certificate? + verify-certificate?)))) ;; For HTTPS, P is not a file port and does not support 'setvbuf'. (when (file-port? p) (setvbuf p _IOFBF (expt 2 16))) @@ -627,9 +633,14 @@ if file doesn't exist, and the narinfo otherwise." ((http https) (let ((requests (map (cut narinfo-request url <>) paths))) (update-progress!) + + ;; Note: Do not check HTTPS server certificates to avoid depending on + ;; the X.509 PKI. We can do it because we authenticate narinfos, + ;; which provides a much stronger guarantee. (let ((result (http-multiple-get uri handle-narinfo-response '() requests + #:verify-certificate? #f #:port port))) (close-connection port) (newline (current-error-port)) diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index df9b37d544..71ddccfa61 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -44,7 +44,6 @@ #:use-module (gnu services) #:use-module (gnu services shepherd) #:use-module (gnu services herd) - #:use-module (gnu packages grub) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-19) @@ -617,7 +616,8 @@ building anything." #:image-size image-size #:full-boot? full-boot? #:mappings mappings)) - (grub (package->derivation grub)) + (grub (package->derivation (grub-configuration-grub + (operating-system-bootloader os)))) (grub.cfg (if (eq? 'container action) (return #f) (operating-system-grub.cfg os diff --git a/po/guix/fr.po b/po/guix/fr.po index 6e83d018c9..f641339e05 100644 --- a/po/guix/fr.po +++ b/po/guix/fr.po @@ -2,6 +2,7 @@ # Copyright (C) 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the guix package. # Rémy Chevalier <remychevalier@laposte.net>, 2013, 2014. +# Frédéric Marchal <fmarchal@perso.be>, 2016 # # Note de Frédéric Marchal: Le nom « shepherd » est le nom d'un démon (voir # https://www.gnu.org/software/shepherd/). Je ne l'ai pas traduit dans les @@ -12,7 +13,7 @@ msgstr "" "Project-Id-Version: guix 0.11.0\n" "Report-Msgid-Bugs-To: ludo@gnu.org\n" "POT-Creation-Date: 2016-07-29 10:16+0200\n" -"PO-Revision-Date: 2016-11-05 10:20+0200\n" +"PO-Revision-Date: 2016-11-11 10:43+0100\n" "Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n" "Language-Team: French <traduc@traduc.org>\n" "Language: fr\n" @@ -2601,128 +2602,123 @@ msgstr "Ce programme est un démon qui tourne en tâche de fond. Il répond aux #: nix/nix-daemon/guix-daemon.cc:87 msgid "SYSTEM" -msgstr "" +msgstr "SYSTÈME" #: nix/nix-daemon/guix-daemon.cc:88 msgid "assume SYSTEM as the current system type" -msgstr "" +msgstr "suppose que SYSTÈME est le type de système actuel" #: nix/nix-daemon/guix-daemon.cc:89 nix/nix-daemon/guix-daemon.cc:92 msgid "N" -msgstr "" +msgstr "N" #: nix/nix-daemon/guix-daemon.cc:90 msgid "use N CPU cores to build each derivation; 0 means as many as available" -msgstr "" +msgstr "utilise N cœurs CPU pour compiler chaque dérivation; 0 signifie autant que disponible" #: nix/nix-daemon/guix-daemon.cc:93 msgid "allow at most N build jobs" -msgstr "" +msgstr "autorise au plus N tâches de compilation" #: nix/nix-daemon/guix-daemon.cc:95 msgid "disable chroot builds" -msgstr "" +msgstr "désactive les compilations chroot" #: nix/nix-daemon/guix-daemon.cc:96 msgid "DIR" -msgstr "" +msgstr "RÉP" #: nix/nix-daemon/guix-daemon.cc:97 msgid "add DIR to the build chroot" -msgstr "" +msgstr "ajoute RÉP au chroot de compilation" #: nix/nix-daemon/guix-daemon.cc:98 msgid "GROUP" -msgstr "" +msgstr "GROUPE" #: nix/nix-daemon/guix-daemon.cc:99 msgid "perform builds as a user of GROUP" -msgstr "" +msgstr "réalise les compilations en tant qu'un utilisateur du GROUPE" #: nix/nix-daemon/guix-daemon.cc:101 msgid "do not use substitutes" -msgstr "" +msgstr "ne pas utiliser de substituts" #: nix/nix-daemon/guix-daemon.cc:102 msgid "URLS" -msgstr "" +msgstr "URLS" #: nix/nix-daemon/guix-daemon.cc:103 msgid "use URLS as the default list of substitute providers" -msgstr "" +msgstr "utilise URLS comme liste par défaut de fournisseurs de substituts" #: nix/nix-daemon/guix-daemon.cc:105 msgid "do not use the 'build hook'" -msgstr "" +msgstr "n'utilise pas le « build hook »" #: nix/nix-daemon/guix-daemon.cc:107 msgid "cache build failures" -msgstr "" +msgstr "garde les fonctionnalités de compilation en cache" #: nix/nix-daemon/guix-daemon.cc:109 msgid "build each derivation N times in a row" -msgstr "" +msgstr "compile chaque dérivation N fois de suite" #: nix/nix-daemon/guix-daemon.cc:111 msgid "do not keep build logs" -msgstr "" +msgstr "ne conserve pas les journaux de compilation" #: nix/nix-daemon/guix-daemon.cc:113 msgid "disable compression of the build logs" -msgstr "" +msgstr "désactive la compression des journaux de compilation" #: nix/nix-daemon/guix-daemon.cc:118 msgid "disable automatic file \"deduplication\" in the store" -msgstr "" +msgstr "désactive la « déduplication » automatique des fichiers dans le stockage" #: nix/nix-daemon/guix-daemon.cc:128 msgid "impersonate Linux 2.6" -msgstr "" +msgstr "se faire passer pour Linux 2.6" #: nix/nix-daemon/guix-daemon.cc:132 msgid "tell whether the GC must keep outputs of live derivations" -msgstr "" +msgstr "indique si le GC doit garder les sorties des dérivations en temps réel" #: nix/nix-daemon/guix-daemon.cc:135 msgid "tell whether the GC must keep derivations corresponding to live outputs" -msgstr "" +msgstr "indique si le GC doit garder les dérivations correspondant aux sorties en temps réel" #: nix/nix-daemon/guix-daemon.cc:138 msgid "SOCKET" -msgstr "" +msgstr "SOCKET" #: nix/nix-daemon/guix-daemon.cc:139 msgid "listen for connections on SOCKET" -msgstr "" +msgstr "écoute sur SOCKET pour des connexions" #: nix/nix-daemon/guix-daemon.cc:141 msgid "produce debugging output" -msgstr "" +msgstr "produit une sortie de déboguage" #: nix/nix-daemon/guix-daemon.cc:201 #, c-format msgid "error: %s: invalid number of rounds\n" -msgstr "" +msgstr "erreur: %s: nombre de tours invalide\n" #: nix/nix-daemon/guix-daemon.cc:220 nix/nix-daemon/guix-daemon.cc:396 #, c-format msgid "error: %s\n" -msgstr "" +msgstr "erreur: %s\n" #: nix/nix-daemon/guix-daemon.cc:281 #, c-format msgid "error: libgcrypt version mismatch\n" -msgstr "" +msgstr "erreur: désaccord de version de libgcrypt\n" #: nix/nix-daemon/guix-daemon.cc:372 #, c-format msgid "warning: daemon is running as root, so using `--build-users-group' is highly recommended\n" -msgstr "" - -#, fuzzy -#~| msgid "wrong arguments" -#~ msgid "too many arguments\n" -#~ msgstr "arguments non valides" +msgstr "avertissement: le daemon fonctionne en tant que root, l'utilisation de « --build-users-group » est fortement recommandée\n" #~ msgid "looking for the latest release of GNU ~a..." #~ msgstr "recherche de la dernière version de GNU ~a..." diff --git a/tests/containers.scm b/tests/containers.scm index 698bef3e47..ccd122ac79 100644 --- a/tests/containers.scm +++ b/tests/containers.scm @@ -20,6 +20,7 @@ #:use-module (guix utils) #:use-module (guix build syscalls) #:use-module (gnu build linux-container) + #:use-module (gnu system file-systems) #:use-module (srfi srfi-64) #:use-module (ice-9 match)) @@ -80,7 +81,10 @@ (skip-if-unsupported) (test-assert "call-with-container, mnt namespace" (zero? - (call-with-container '(("none" device "/testing" "tmpfs" () #f #f)) + (call-with-container (list (file-system + (device "none") + (mount-point "/testing") + (type "tmpfs"))) (lambda () (assert-exit (file-exists? "/testing"))) #:namespaces '(user mnt)))) @@ -91,8 +95,11 @@ ;; An exception should be raised; see <http://bugs.gnu.org/23306>. (catch 'system-error (lambda () - (call-with-container '(("/does-not-exist" device "/foo" - "none" (bind-mount) #f #f)) + (call-with-container (list (file-system + (device "/does-not-exist") + (mount-point "/foo") + (type "none") + (flags '(bind-mount)))) (const #t) #:namespaces '(user mnt))) (lambda args diff --git a/tests/cpan.scm b/tests/cpan.scm index 80ff044abd..e37fc437fc 100644 --- a/tests/cpan.scm +++ b/tests/cpan.scm @@ -61,7 +61,9 @@ (test-assert "cpan->guix-package" ;; Replace network resources with sample data. (mock ((guix build download) url-fetch - (lambda* (url file-name #:key (mirrors '())) + (lambda* (url file-name + #:key + (mirrors '()) verify-certificate?) (with-output-to-file file-name (lambda () (display diff --git a/tests/cran.scm b/tests/cran.scm index 896c5af06c..f92934c468 100644 --- a/tests/cran.scm +++ b/tests/cran.scm @@ -89,7 +89,9 @@ Date/Publication: 2015-07-14 14:15:16 (test-assert "description->package" ;; Replace network resources with sample data. (mock ((guix build download) url-fetch - (lambda* (url file-name #:key (mirrors '())) + (lambda* (url file-name + #:key + (mirrors '()) verify-certificate?) (with-output-to-file file-name (lambda () (display |