Merge branch 'master' into core-updates

This commit is contained in:
Ludovic Courtès 2015-09-13 21:28:01 +02:00
commit 75710da667
131 changed files with 6648 additions and 1338 deletions

3
.gitignore vendored
View File

@ -120,8 +120,7 @@ GTAGS
/emacs/Makefile
/emacs/guix-autoloads.el
/emacs/guix-helper.scm
/emacs/guix-init.el
/emacs/guix-profiles.el
/emacs/guix-config.el
/doc/os-config-bare-bones.texi
/doc/os-config-desktop.texi
/doc/*.1

View File

@ -58,6 +58,7 @@ MODULES = \
guix/build-system/perl.scm \
guix/build-system/python.scm \
guix/build-system/waf.scm \
guix/build-system/r.scm \
guix/build-system/ruby.scm \
guix/build-system/trivial.scm \
guix/ftp-client.scm \
@ -77,6 +78,7 @@ MODULES = \
guix/build/gnu-dist.scm \
guix/build/perl-build-system.scm \
guix/build/python-build-system.scm \
guix/build/r-build-system.scm \
guix/build/ruby-build-system.scm \
guix/build/waf-build-system.scm \
guix/build/haskell-build-system.scm \
@ -97,6 +99,7 @@ MODULES = \
guix/import/gnu.scm \
guix/import/snix.scm \
guix/import/cabal.scm \
guix/import/cran.scm \
guix/import/hackage.scm \
guix/import/elpa.scm \
guix/scripts/download.scm \
@ -112,6 +115,7 @@ MODULES = \
guix/scripts/refresh.scm \
guix/scripts/system.scm \
guix/scripts/lint.scm \
guix/scripts/import/cran.scm \
guix/scripts/import/gnu.scm \
guix/scripts/import/nix.scm \
guix/scripts/import/hackage.scm \
@ -198,6 +202,7 @@ SCM_TESTS = \
tests/packages.scm \
tests/snix.scm \
tests/hackage.scm \
tests/cran.scm \
tests/elpa.scm \
tests/store.scm \
tests/monads.scm \
@ -226,7 +231,8 @@ MODULES += \
SCM_TESTS += \
tests/pypi.scm \
tests/cpan.scm
tests/cpan.scm \
tests/gem.scm
endif

View File

@ -205,8 +205,7 @@ AM_CONDITIONAL([HAVE_EMACS], [test "x$EMACS" != "xno"])
emacsuidir="${guilemoduledir}/guix/emacs"
AC_SUBST([emacsuidir])
AC_CONFIG_FILES([emacs/guix-init.el
emacs/guix-profiles.el
AC_CONFIG_FILES([emacs/guix-config.el
emacs/guix-helper.scm])
AC_OUTPUT

View File

@ -1,29 +1,22 @@
@node Emacs Interface
@section Emacs Interface
@chapter Emacs Interface
@cindex Emacs
GNU Guix comes with a visual user interface for GNU@tie{}Emacs, known
as ``guix.el''. It can be used for routine package management tasks,
pretty much like the @command{guix package} command (@pxref{Invoking
guix package}). Specifically, ``guix.el'' makes it easy to:
@itemize
@item browse and display packages and generations;
@item search, install, upgrade and remove packages;
@item display packages from previous generations;
@item do some other useful things.
@end itemize
GNU Guix comes with several useful modules (known as ``guix.el'') for
GNU@tie{}Emacs which are intended to make an Emacs user interaction with
Guix convenient and fun.
@menu
* Initial Setup: Emacs Initial Setup. Preparing @file{~/.emacs}.
* Usage: Emacs Usage. Using the interface.
* Configuration: Emacs Configuration. Configuring the interface.
* Package Management: Emacs Package Management. Managing packages and generations.
* Popup Interface: Emacs Popup Interface. Magit-like interface for guix commands.
* Prettify Mode: Emacs Prettify. Abbreviating @file{/gnu/store/@dots{}} file names.
* Completions: Emacs Completions. Completing @command{guix} shell command.
@end menu
@node Emacs Initial Setup
@subsection Initial Setup
@section Initial Setup
On the Guix System Distribution (@pxref{GNU Distribution}), ``guix.el''
is ready to use, provided Guix is installed system-wide, which is the
@ -43,6 +36,12 @@ later;
@uref{http://nongnu.org/geiser/, Geiser}, version 0.3 or later: it is
used for interacting with the Guile process.
@item
@uref{https://github.com/magit/magit/, magit-popup library}. You
already have this library if you use Magit 2.1.0 or later. This library
is an optional dependency---it is required only for @kbd{M-x@tie{}guix}
command (@pxref{Emacs Popup Interface}).
@end itemize
When it is done ``guix.el'' may be configured by requiring a special
@ -105,22 +104,32 @@ emacs, The GNU Emacs Manual}).
You can activate Emacs packages installed in your profile whenever you
want using @kbd{M-x@tie{}guix-emacs-load-autoloads}.
@node Emacs Usage
@subsection Usage
@node Emacs Package Management
@section Package Management
Once ``guix.el'' has been successfully configured, you should be able to
use commands for displaying packages and generations. This information
can be displayed in a ``list'' or ``info'' buffer.
use a visual interface for routine package management tasks, pretty much
like the @command{guix package} command (@pxref{Invoking guix package}).
Specifically, it makes it easy to:
@itemize
@item browse and display packages and generations;
@item search, install, upgrade and remove packages;
@item display packages from previous generations;
@item do some other useful things.
@end itemize
@menu
* Commands: Emacs Commands. @kbd{M-x guix-@dots{}}
* General information: Emacs General info. Common for both interfaces.
* ``List'' buffer: Emacs List buffer. List-like interface.
* ``Info'' buffer: Emacs Info buffer. Help-like interface.
* Configuration: Emacs Configuration. Configuring the interface.
@end menu
@node Emacs Commands
@subsubsection Commands
@subsection Commands
All commands for displaying packages and generations use the current
profile, which can be changed with
@ -191,7 +200,7 @@ Once @command{guix pull} has succeeded, the Guix REPL is restared. This
allows you to keep using the Emacs interface with the updated Guix.
@node Emacs General info
@subsubsection General information
@subsection General information
The following keys are available for both ``list'' and ``info'' types of
buffers:
@ -235,7 +244,7 @@ was restarted, you may want to revert ``list'' buffer (by pressing
@kbd{g}).
@node Emacs List buffer
@subsubsection ``List'' buffer
@subsection ``List'' buffer
An interface of a ``list'' buffer is similar to the interface provided
by ``package.el'' (@pxref{Package Menu,,, emacs, The GNU Emacs Manual}).
@ -310,7 +319,7 @@ with another marked generation.
@end table
@node Emacs Info buffer
@subsubsection ``Info'' buffer
@subsection ``Info'' buffer
The interface of an ``info'' buffer is similar to the interface of
@code{help-mode} (@pxref{Help Mode,,, emacs, The GNU Emacs Manual}).
@ -484,12 +493,49 @@ Various settings for ``info'' buffers.
@end table
@node Emacs Prettify
@subsection Guix Prettify Mode
@node Emacs Popup Interface
@section Popup Interface
Along with ``guix.el'', GNU@tie{}Guix comes with ``guix-prettify.el''.
It provides a minor mode for abbreviating store file names by replacing
hash sequences of symbols with ``@dots{}'':
If you ever used Magit, you know what ``popup interface'' is
(@pxref{Top,,, magit-popup, Magit-Popup User Manual}). Even if you are
not acquainted with Magit, there should be no worries as it is very
intuitive.
So @kbd{M-x@tie{}guix} command provides a top-level popup interface for
all available guix commands. When you select an option, you'll be
prompted for a value in the minibuffer. Many values have completions,
so don't hesitate to press @key{TAB} key. Multiple values (for example,
packages or lint checkers) should be separated by commas.
After specifying all options and switches for a command, you may choose
one of the available actions. The following default actions are
available for all commands:
@itemize
@item
Run the command in the Guix REPL. It is faster than running
@code{guix@tie{}@dots{}} command directly in shell, as there is no
need to run another guile process and to load required modules there.
@item
Run the command in a shell buffer. You can set
@code{guix-run-in-shell-function} variable to fine tune the shell buffer
you want to use.
@item
Add the command line to the kill ring (@pxref{Kill Ring,,, emacs, The
GNU Emacs Manual}).
@end itemize
@node Emacs Prettify
@section Guix Prettify Mode
GNU@tie{}Guix also comes with ``guix-prettify.el''. It provides a minor
mode for abbreviating store file names by replacing hash sequences of
symbols with ``@dots{}'':
@example
/gnu/store/72f54nfp6g1hz873w8z3gfcah0h4nl9p-foo-0.1
@ -526,7 +572,7 @@ mode hooks (@pxref{Hooks,,, emacs, The GNU Emacs Manual}), for example:
@node Emacs Completions
@subsection Shell Completions
@section Shell Completions
Another feature that becomes available after configuring Emacs interface
(@pxref{Emacs Initial Setup}) is completing of @command{guix}

View File

@ -70,6 +70,7 @@ package management tool written for the GNU system.
* Introduction:: What is Guix about?
* Installation:: Installing Guix.
* Package Management:: Package installation, upgrade, etc.
* Emacs Interface:: Using Guix from Emacs.
* Programming Interface:: Using Guix in Scheme.
* Utilities:: Package management commands.
* GNU Distribution:: Software for your friendly GNU system.
@ -101,13 +102,20 @@ Package Management
* Features:: How Guix will make your life brighter.
* Invoking guix package:: Package installation, removal, etc.
* Emacs Interface:: Package management from Emacs.
* Substitutes:: Downloading pre-built binaries.
* Packages with Multiple Outputs:: Single source package, multiple outputs.
* Invoking guix gc:: Running the garbage collector.
* Invoking guix pull:: Fetching the latest Guix and distribution.
* Invoking guix archive:: Exporting and importing store files.
Emacs Interface
* Initial Setup: Emacs Initial Setup. Preparing @file{~/.emacs}.
* Package Management: Emacs Package Management. Managing packages and generations.
* Popup Interface: Emacs Popup Interface. Magit-like interface for guix commands.
* Prettify Mode: Emacs Prettify. Abbreviating @file{/gnu/store/@dots{}} file names.
* Completions: Emacs Completions. Completing @command{guix} shell command.
Programming Interface
* Defining Packages:: Defining new packages.
@ -964,14 +972,13 @@ features.
This chapter describes the main features of Guix, as well as the package
management tools it provides. Two user interfaces are provided for
routine package management tasks: a command-line interface
(@pxref{Invoking guix package, @code{guix package}}), and a visual user
interface in Emacs (@pxref{Emacs Interface}).
routine package management tasks: A command-line interface described below
(@pxref{Invoking guix package, @code{guix package}}), as well as a visual user
interface in Emacs described in a subsequent chapter (@pxref{Emacs Interface}).
@menu
* Features:: How Guix will make your life brighter.
* Invoking guix package:: Package installation, removal, etc.
* Emacs Interface:: Package management from Emacs.
* Substitutes:: Downloading pre-built binaries.
* Packages with Multiple Outputs:: Single source package, multiple outputs.
* Invoking guix gc:: Running the garbage collector.
@ -1455,8 +1462,6 @@ Finally, since @command{guix package} may actually start build
processes, it supports all the common build options that @command{guix
build} supports (@pxref{Invoking guix build, common build options}).
@include emacs.texi
@node Substitutes
@section Substitutes
@ -1898,6 +1903,8 @@ automatically builds them. The build process may be controlled with the
same options that can be passed to the @command{guix build} command
(@pxref{Invoking guix build, common build options}).
@c *********************************************************************
@include emacs.texi
@c *********************************************************************
@node Programming Interface
@ -2484,6 +2491,16 @@ passes flags specified by the @code{#:make-maker-flags} or
Which Perl package is used can be specified with @code{#:perl}.
@end defvr
@defvr {Scheme Variable} r-build-system
This variable is exported by @code{(guix build-system r)}. It
implements the build procedure used by @uref{http://r-project.org, R}
packages, which essentially is little more than running @code{R CMD
INSTALL --library=/gnu/store/@dots{}} in an environment where
@code{R_LIBS_SITE} contains the paths to all R package inputs. Tests
are run after installation using the R function
@code{tools::testInstalledPackage}.
@end defvr
@defvr {Scheme Variable} ruby-build-system
This variable is exported by @code{(guix build-system ruby)}. It
implements the RubyGems build procedure used by Ruby packages, which
@ -3612,7 +3629,7 @@ Make @var{file} a symlink to the result, and register it as a garbage
collector root.
@item --log-file
Return the build log file names for the given
Return the build log file names or URLs for the given
@var{package-or-derivation}s, or raise an error if build logs are
missing.
@ -3626,7 +3643,19 @@ guix build --log-file guile
guix build --log-file -e '(@@ (gnu packages guile) guile-2.0)'
@end example
If a log is unavailable locally, and unless @code{--no-substitutes} is
passed, the command looks for a corresponding log on one of the
substitute servers (as specified with @code{--substitute-urls}.)
So for instance, let's say you want to see the build log of GDB on MIPS
but you're actually on an @code{x86_64} machine:
@example
$ guix build --log-file gdb -s mips64el-linux
http://hydra.gnu.org/log/@dots{}-gdb-7.10
@end example
You can freely access a huge library of build logs!
@end table
@cindex common build options
@ -3932,6 +3961,21 @@ Perl module:
guix import cpan Acme::Boolean
@end example
@item cran
@cindex CRAN
Import meta-data from @uref{http://cran.r-project.org/, CRAN}, the
central repository for the @uref{http://r-project.org, GNU@tie{}R
statistical and graphical environment}.
Information is extracted from the HTML package description.
The command command below imports meta-data for the @code{Cairo}
R package:
@example
guix import cran Cairo
@end example
@item nix
Import meta-data from a local copy of the source of the
@uref{http://nixos.org/nixpkgs/, Nixpkgs distribution}@footnote{This
@ -4385,6 +4429,16 @@ the values listed above.
@item --list-types
List the supported graph types.
@item --expression=@var{expr}
@itemx -e @var{expr}
Consider the package @var{expr} evaluates to.
This is useful to precisely refer to a package, as in this example:
@example
guix graph -e '(@@@@ (gnu packages commencement) gnu-make-final)'
@end example
@end table
@ -5477,7 +5531,7 @@ special-case and is automatically added whether or not it is specified.
A @dfn{locale} defines cultural conventions for a particular language
and region of the world (@pxref{Locales,,, libc, The GNU C Library
Reference Manual}). Each locale has a name that typically has the form
@code{@var{language}_@var{territory}.@var{charset}}---e.g.,
@code{@var{language}_@var{territory}.@var{codeset}}---e.g.,
@code{fr_LU.utf8} designates the locale for the French language, with
cultural conventions from Luxembourg, and using the UTF-8 encoding.
@ -5538,9 +5592,17 @@ IANA}.
@end deftp
@defvr {Scheme Variable} %default-locale-definitions
An arbitrary list of commonly used locales, used as the default value of
the @code{locale-definitions} field of @code{operating-system}
An arbitrary list of commonly used UTF-8 locales, used as the default
value of the @code{locale-definitions} field of @code{operating-system}
declarations.
@cindex locale name
@cindex normalized codeset in locale names
These locale definitions use the @dfn{normalized codeset} for the part
that follows the dot in the name (@pxref{Using gettextized software,
normalized codeset,, libc, The GNU C Library Reference Manual}). So for
instance it has @code{uk_UA.utf8} but @emph{not}, say,
@code{uk_UA.UTF-8}.
@end defvr
@node Services
@ -6009,6 +6071,7 @@ adds or adjust services for a typical ``desktop'' setup.
In particular, it adds a graphical login manager (@pxref{X Window,
@code{slim-service}}), a network management tool (@pxref{Networking
Services, @code{wicd-service}}), energy and color management services,
the @code{elogind} login and seat manager, the Polkit privilege service,
the GeoClue location service, an NTP client (@pxref{Networking
Services}), the Avahi daemon, and has the name service switch service
configured to be able to use @code{nss-mdns} (@pxref{Name Service
@ -6037,6 +6100,87 @@ and policy files. For example, to allow avahi-daemon to use the system bus,
@var{services} must be equal to @code{(list avahi)}.
@end deffn
@deffn {Monadic Procedure} elogind-service @
[#:elogind @var{elogind}] [#:config @var{config}]
Return a service that runs the @code{elogind} login and
seat management daemon. @uref{https://github.com/andywingo/elogind,
Elogind} exposes a D-Bus interface that can be used to know which users
are logged in, know what kind of sessions they have open, suspend the
system, inhibit system suspend, reboot the system, and other tasks.
Elogind handles most system-level power events for a computer, for
example suspending the system when a lid is closed, or shutting it down
when the power button is pressed.
The @var{config} keyword argument specifies the configuration for
elogind, and should be the result of a @code{(elogind-configuration
(@var{parameter} @var{value})...)} invocation. Available parameters and
their default values are:
@table @code
@item kill-user-processes?
@code{#f}
@item kill-only-users
@code{()}
@item kill-exclude-users
@code{("root")}
@item inhibit-delay-max-seconds
@code{5}
@item handle-power-key
@code{poweroff}
@item handle-suspend-key
@code{suspend}
@item handle-hibernate-key
@code{hibernate}
@item handle-lid-switch
@code{suspend}
@item handle-lid-switch-docked
@code{ignore}
@item power-key-ignore-inhibited?
@code{#f}
@item suspend-key-ignore-inhibited?
@code{#f}
@item hibernate-key-ignore-inhibited?
@code{#f}
@item lid-switch-ignore-inhibited?
@code{#t}
@item holdoff-timeout-seconds
@code{30}
@item idle-action
@code{ignore}
@item idle-action-seconds
@code{(* 30 60)}
@item runtime-directory-size-percent
@code{10}
@item runtime-directory-size
@code{#f}
@item remove-ipc?
@code{#t}
@item suspend-state
@code{("mem" "standby" "freeze")}
@item suspend-mode
@code{()}
@item hibernate-state
@code{("disk")}
@item hibernate-mode
@code{("platform" "shutdown")}
@item hybrid-sleep-state
@code{("disk")}
@item hybrid-sleep-mode
@code{("suspend" "platform" "shutdown")}
@end table
@end deffn
@deffn {Monadic Procedure} polkit-service @
[#:polkit @var{polkit}]
Return a service that runs the Polkit privilege manager.
@uref{http://www.freedesktop.org/wiki/Software/polkit/, Polkit} allows
system administrators to grant access to privileged operations in a
structured way. For example, polkit rules can allow a logged-in user
whose session is active to shut down the machine, if there are no other
users active.
@end deffn
@deffn {Monadic Procedure} upower-service [#:upower @var{upower}] @
[#:watts-up-pro? #f] @
[#:poll-batteries? #t] @

View File

@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2014 Alex Kost <alezost@gmail.com>
# Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
#
# This file is part of GNU Guix.
#
@ -21,13 +21,20 @@ AUTOLOADS = emacs/guix-autoloads.el
ELFILES = \
emacs/guix-backend.el \
emacs/guix-base.el \
emacs/guix-command.el \
emacs/guix-emacs.el \
emacs/guix-external.el \
emacs/guix-help-vars.el \
emacs/guix-history.el \
emacs/guix-info.el \
emacs/guix-init.el \
emacs/guix-list.el \
emacs/guix-messages.el \
emacs/guix-pcomplete.el \
emacs/guix-popup.el \
emacs/guix-prettify.el \
emacs/guix-profiles.el \
emacs/guix-read.el \
emacs/guix-utils.el \
emacs/guix.el
@ -37,9 +44,7 @@ dist_lisp_DATA = \
$(ELFILES) \
$(AUTOLOADS)
nodist_lisp_DATA = \
emacs/guix-init.el \
emacs/guix-profiles.el
nodist_lisp_DATA = emacs/guix-config.el
$(AUTOLOADS): $(ELFILES)
$(EMACS) --batch --eval \

View File

@ -52,26 +52,16 @@
;;; Code:
(require 'geiser-mode)
(require 'guix-config)
(require 'guix-emacs)
(defvar guix-load-path
(file-name-directory (or load-file-name
(locate-library "guix")))
(defvar guix-load-path guix-emacs-interface-directory
"Directory with scheme files for \"guix.el\" package.")
(defvar guix-helper-file
(expand-file-name "guix-helper.scm" guix-load-path)
"Auxiliary scheme file for loading.")
(defvar guix-guile-program (or geiser-guile-binary "guile")
"Name of the guile executable used for Guix REPL.
May be either a string (the name of the executable) or a list of
strings of the form:
(NAME . ARGS)
Where ARGS is a list of arguments to the guile program.")
;;; REPL

View File

@ -1,6 +1,6 @@
;;; guix-base.el --- Common definitions -*- lexical-binding: t -*-
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
@ -89,7 +89,7 @@ Each element of the list has a form:
(defun guix-get-param-title (entry-type param)
"Return title of an ENTRY-TYPE entry parameter PARAM."
(or (guix-get-key-val guix-param-titles
(or (guix-assq-value guix-param-titles
entry-type param)
(prog1 (symbol-name param)
(message "Couldn't find title for '%S %S'."
@ -102,15 +102,15 @@ Each element of the list has a form:
(defun guix-get-full-name (entry &optional output)
"Return name specification of the package ENTRY and OUTPUT."
(guix-get-name-spec (guix-get-key-val entry 'name)
(guix-get-key-val entry 'version)
(guix-get-name-spec (guix-assq-value entry 'name)
(guix-assq-value entry 'version)
output))
(defun guix-entry-to-specification (entry)
"Return name specification by the package or output ENTRY."
(guix-get-name-spec (guix-get-key-val entry 'name)
(guix-get-key-val entry 'version)
(guix-get-key-val entry 'output)))
(guix-get-name-spec (guix-assq-value entry 'name)
(guix-assq-value entry 'version)
(guix-assq-value entry 'output)))
(defun guix-entries-to-specifications (entries)
"Return name specifications by the package or output ENTRIES."
@ -120,13 +120,13 @@ Each element of the list has a form:
(defun guix-get-installed-outputs (entry)
"Return list of installed outputs for the package ENTRY."
(mapcar (lambda (installed-entry)
(guix-get-key-val installed-entry 'output))
(guix-get-key-val entry 'installed)))
(guix-assq-value installed-entry 'output))
(guix-assq-value entry 'installed)))
(defun guix-get-entry-by-id (id entries)
"Return entry from ENTRIES by entry ID."
(cl-find-if (lambda (entry)
(equal id (guix-get-key-val entry 'id)))
(equal id (guix-assq-value entry 'id)))
entries))
(defun guix-get-package-id-and-output-by-output-id (oid)
@ -172,13 +172,36 @@ If PATH is relative, it is considered to be relative to
(move-to-column col)
(recenter 1))))
(defun guix-edit-package (id)
"Edit (go to location of) package with ID."
(let ((loc (guix-eval-read (guix-make-guile-expression
'package-location-string id))))
(if loc
(guix-find-location loc)
(message "Couldn't find package location."))))
(defun guix-package-location (id-or-name)
"Return location of a package with ID-OR-NAME.
For the meaning of location, see `guix-find-location'."
(guix-eval-read (guix-make-guile-expression
'package-location-string id-or-name)))
;;; Receivable lists of packages, lint checkers, etc.
(guix-memoized-defun guix-graph-type-names ()
"Return a list of names of available graph node types."
(guix-eval-read (guix-make-guile-expression 'graph-type-names)))
(guix-memoized-defun guix-lint-checker-names ()
"Return a list of names of available lint checkers."
(guix-eval-read (guix-make-guile-expression 'lint-checker-names)))
(guix-memoized-defun guix-package-names ()
"Return a list of names of available packages."
(sort
;; Work around <https://github.com/jaor/geiser/issues/64>:
;; list of strings is parsed much slower than list of lists,
;; so we use 'package-names-lists' instead of 'package-names'.
;; (guix-eval-read (guix-make-guile-expression 'package-names))
(mapcar #'car
(guix-eval-read (guix-make-guile-expression
'package-names-lists)))
#'string<))
;;; Buffers and auto updating.
@ -392,7 +415,6 @@ following keywords are available:
(prefix (concat "guix-" entry-type-str "-" buf-type-str))
(group (intern prefix))
(mode-map-str (concat prefix "-mode-map"))
(mode-map (intern mode-map-str))
(parent-mode (intern (concat "guix-" buf-type-str "-mode")))
(mode (intern (concat prefix "-mode")))
(mode-init-fun (intern (concat prefix "-mode-initialize")))
@ -910,11 +932,11 @@ ENTRIES is a list of package entries to get info about packages."
(outputs (cdr spec))
(entry (guix-get-entry-by-id id entries)))
(when entry
(let ((location (guix-get-key-val entry 'location)))
(let ((location (guix-assq-value entry 'location)))
(concat (guix-get-full-name entry)
(when outputs
(concat ":"
(mapconcat #'identity outputs ",")))
(guix-concat-strings outputs ",")))
(when location
(concat "\t(" location ")")))))))
specs)))
@ -1060,6 +1082,63 @@ FILE. With a prefix argument, also prompt for PROFILE."
(concat "--manifest=" file))
operation-buffer)))
;;; Executing guix commands
(defcustom guix-run-in-shell-function #'guix-run-in-shell
"Function used to run guix command.
The function is called with a single argument - a command line string."
:type '(choice (function-item guix-run-in-shell)
(function-item guix-run-in-eshell)
(function :tag "Other function"))
:group 'guix)
(defcustom guix-shell-buffer-name "*shell*"
"Default name of a shell buffer used for running guix commands."
:type 'string
:group 'guix)
(declare-function comint-send-input "comint" t)
(defun guix-run-in-shell (string)
"Run command line STRING in `guix-shell-buffer-name' buffer."
(shell guix-shell-buffer-name)
(goto-char (point-max))
(insert string)
(comint-send-input))
(declare-function eshell-send-input "esh-mode" t)
(defun guix-run-in-eshell (string)
"Run command line STRING in eshell buffer."
(eshell)
(goto-char (point-max))
(insert string)
(eshell-send-input))
(defun guix-run-command-in-shell (args)
"Execute 'guix ARGS ...' command in a shell buffer."
(funcall guix-run-in-shell-function
(guix-command-string args)))
(defun guix-run-command-in-repl (args)
"Execute 'guix ARGS ...' command in Guix REPL."
(guix-eval-in-repl
(apply #'guix-make-guile-expression
'guix-command args)))
(defun guix-command-output (args)
"Return string with 'guix ARGS ...' output."
(guix-eval-read
(apply #'guix-make-guile-expression
'guix-command-output args)))
(defun guix-help-string (&optional commands)
"Return string with 'guix COMMANDS ... --help' output."
(guix-eval-read
(apply #'guix-make-guile-expression
'help-string commands)))
;;; Pull

671
emacs/guix-command.el Normal file
View File

@ -0,0 +1,671 @@
;;; guix-command.el --- Popup interface for guix commands -*- lexical-binding: t -*-
;; Copyright © 2015 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file provides a magit-like popup interface for running guix
;; commands in Guix REPL. The entry point is "M-x guix". When it is
;; called the first time, "guix --help" output is parsed and
;; `guix-COMMAND-action' functions are generated for each available guix
;; COMMAND. Then a window with these commands is popped up. When a
;; particular COMMAND is called, "guix COMMAND --help" output is parsed,
;; and a user get a new popup window with available options for this
;; command and so on.
;; To avoid hard-coding all guix options, actions, etc., as much data is
;; taken from "guix ... --help" outputs as possible. But this data is
;; still incomplete: not all long options have short analogs, also
;; special readers should be used for some options (for example, to
;; complete package names while prompting for a package). So after
;; parsing --help output, the arguments are "improved". All arguments
;; (switches, options and actions) are `guix-command-argument'
;; structures.
;; Only "M-x guix" command is available after this file is loaded. The
;; rest commands/actions/popups are generated on the fly only when they
;; are needed (that's why there is a couple of `eval'-s in this file).
;; COMMANDS argument is used by many functions in this file. It means a
;; list of guix commands without "guix" itself, e.g.: ("build"),
;; ("import" "gnu"). The empty list stands for the plain "guix" without
;; subcommands.
;; All actions in popup windows are divided into 2 groups:
;;
;; - 'Popup' actions - used to pop up another window. For example, every
;; action in the 'guix' or 'guix import' window is a popup action. They
;; are defined by `guix-command-define-popup-action' macro.
;;
;; - 'Execute' actions - used to do something with the command line (to
;; run a command in Guix REPL or to copy it into kill-ring) constructed
;; with the current popup. They are defined by
;; `guix-command-define-execute-action' macro.
;;; Code:
(require 'cl-lib)
(require 'guix-popup)
(require 'guix-utils)
(require 'guix-help-vars)
(require 'guix-read)
(require 'guix-base)
(require 'guix-external)
(defgroup guix-commands nil
"Settings for guix popup windows."
:group 'guix)
(defvar guix-command-complex-with-shared-arguments
'("system")
"List of guix commands which have subcommands with shared options.
I.e., 'guix foo --help' is the same as 'guix foo bar --help'.")
(defun guix-command-action-name (&optional commands &rest name-parts)
"Return name of action function for guix COMMANDS."
(guix-command-symbol (append commands name-parts (list "action"))))
;;; Command arguments
(cl-defstruct (guix-command-argument
(:constructor guix-command-make-argument)
(:copier guix-command-copy-argument))
name char doc fun switch? option? action?)
(cl-defun guix-command-modify-argument
(argument &key
(name nil name-bound?)
(char nil char-bound?)
(doc nil doc-bound?)
(fun nil fun-bound?)
(switch? nil switch?-bound?)
(option? nil option?-bound?)
(action? nil action?-bound?))
"Return a modified version of ARGUMENT."
(declare (indent 1))
(let ((copy (guix-command-copy-argument argument)))
(and name-bound? (setf (guix-command-argument-name copy) name))
(and char-bound? (setf (guix-command-argument-char copy) char))
(and doc-bound? (setf (guix-command-argument-doc copy) doc))
(and fun-bound? (setf (guix-command-argument-fun copy) fun))
(and switch?-bound? (setf (guix-command-argument-switch? copy) switch?))
(and option?-bound? (setf (guix-command-argument-option? copy) option?))
(and action?-bound? (setf (guix-command-argument-action? copy) action?))
copy))
(defun guix-command-modify-argument-from-alist (argument alist)
"Return a modified version of ARGUMENT or nil if it wasn't modified.
Each assoc from ALIST have a form (NAME . PLIST). NAME is an
argument name. PLIST is a property list of argument parameters
to be modified."
(let* ((name (guix-command-argument-name argument))
(plist (guix-assoc-value alist name)))
(when plist
(apply #'guix-command-modify-argument
argument plist))))
(defmacro guix-command-define-argument-improver (name alist)
"Define NAME variable and function to modify an argument from ALIST."
(declare (indent 1))
`(progn
(defvar ,name ,alist)
(defun ,name (argument)
(guix-command-modify-argument-from-alist argument ,name))))
(guix-command-define-argument-improver
guix-command-improve-action-argument
'(("graph" :char ?G)
("environment" :char ?E)
("publish" :char ?u)
("pull" :char ?P)
("size" :char ?z)))
(guix-command-define-argument-improver
guix-command-improve-common-argument
'(("--help" :switch? nil)
("--version" :switch? nil)))
(guix-command-define-argument-improver
guix-command-improve-target-argument
'(("--target" :char ?T)))
(guix-command-define-argument-improver
guix-command-improve-system-type-argument
'(("--system" :fun guix-read-system-type)))
(guix-command-define-argument-improver
guix-command-improve-load-path-argument
'(("--load-path" :fun read-directory-name)))
(guix-command-define-argument-improver
guix-command-improve-search-paths-argument
'(("--search-paths" :char ?P)))
(guix-command-define-argument-improver
guix-command-improve-substitute-urls-argument
'(("--substitute-urls" :char ?U)))
(guix-command-define-argument-improver
guix-command-improve-hash-argument
'(("--format" :fun guix-read-hash-format)))
(guix-command-define-argument-improver
guix-command-improve-key-policy-argument
'(("--key-download" :fun guix-read-key-policy)))
(defvar guix-command-improve-common-build-argument
'(("--no-substitutes" :char ?s)
("--no-build-hook" :char ?h)
("--max-silent-time" :char ?x)))
(defun guix-command-improve-common-build-argument (argument)
(guix-command-modify-argument-from-alist
argument
(append guix-command-improve-load-path-argument
guix-command-improve-substitute-urls-argument
guix-command-improve-common-build-argument)))
(guix-command-define-argument-improver
guix-command-improve-archive-argument
'(("--generate-key" :char ?k)))
(guix-command-define-argument-improver
guix-command-improve-build-argument
'(("--no-grafts" :char ?g)
("--root" :fun guix-read-file-name)
("--sources" :char ?S :fun guix-read-source-type :switch? nil)
("--with-source" :fun guix-read-file-name)))
(guix-command-define-argument-improver
guix-command-improve-environment-argument
'(("--exec" :fun read-shell-command)
("--load" :fun guix-read-file-name)))
(guix-command-define-argument-improver
guix-command-improve-gc-argument
'(("--list-dead" :char ?D)
("--list-live" :char ?L)
("--referrers" :char ?f)
("--verify" :fun guix-read-verify-options-string)))
(guix-command-define-argument-improver
guix-command-improve-graph-argument
'(("--type" :fun guix-read-graph-type)))
(guix-command-define-argument-improver
guix-command-improve-import-argument
'(("cran" :char ?r)))
(guix-command-define-argument-improver
guix-command-improve-import-elpa-argument
'(("--archive" :fun guix-read-elpa-archive)))
(guix-command-define-argument-improver
guix-command-improve-lint-argument
'(("--checkers" :fun guix-read-lint-checker-names-string)))
(guix-command-define-argument-improver
guix-command-improve-package-argument
;; Unlike all other options, --install/--remove do not have a form
;; '--install=foo,bar' but '--install foo bar' instead, so we need
;; some tweaks.
'(("--install"
:name "--install " :fun guix-read-package-names-string
:switch? nil :option? t)
("--remove"
:name "--remove " :fun guix-read-package-names-string
:switch? nil :option? t)
("--install-from-file" :fun guix-read-file-name)
("--manifest" :fun guix-read-file-name)
("--do-not-upgrade" :char ?U)
("--roll-back" :char ?R)
("--show" :char ?w :fun guix-read-package-name)))
(guix-command-define-argument-improver
guix-command-improve-refresh-argument
'(("--select" :fun guix-read-refresh-subset)
("--key-server" :char ?S)))
(guix-command-define-argument-improver
guix-command-improve-size-argument
'(("--map-file" :fun guix-read-file-name)))
(guix-command-define-argument-improver
guix-command-improve-system-argument
'(("vm-image" :char ?V)
("--on-error" :char ?E)
("--no-grub" :char ?g)
("--full-boot" :char ?b)))
(defvar guix-command-argument-improvers
'((()
guix-command-improve-action-argument)
(("archive")
guix-command-improve-common-build-argument
guix-command-improve-target-argument
guix-command-improve-system-type-argument
guix-command-improve-archive-argument)
(("build")
guix-command-improve-common-build-argument
guix-command-improve-target-argument
guix-command-improve-system-type-argument
guix-command-improve-build-argument)
(("download")
guix-command-improve-hash-argument)
(("hash")
guix-command-improve-hash-argument)
(("environment")
guix-command-improve-common-build-argument
guix-command-improve-search-paths-argument
guix-command-improve-system-type-argument
guix-command-improve-environment-argument)
(("gc")
guix-command-improve-gc-argument)
(("graph")
guix-command-improve-graph-argument)
(("import")
guix-command-improve-import-argument)
(("import" "gnu")
guix-command-improve-key-policy-argument)
(("import" "elpa")
guix-command-improve-import-elpa-argument)
(("lint")
guix-command-improve-lint-argument)
(("package")
guix-command-improve-common-build-argument
guix-command-improve-search-paths-argument
guix-command-improve-package-argument)
(("refresh")
guix-command-improve-key-policy-argument
guix-command-improve-refresh-argument)
(("size")
guix-command-improve-system-type-argument
guix-command-improve-substitute-urls-argument
guix-command-improve-size-argument)
(("system")
guix-command-improve-common-build-argument
guix-command-improve-system-argument))
"Alist of guix commands and argument improvers for them.")
(defun guix-command-improve-argument (argument improvers)
"Return ARGUMENT modified with IMPROVERS."
(or (guix-any (lambda (improver)
(funcall improver argument))
improvers)
argument))
(defun guix-command-improve-arguments (arguments commands)
"Return ARGUMENTS for 'guix COMMANDS ...' modified for popup interface."
(let ((improvers (cons 'guix-command-improve-common-argument
(guix-assoc-value guix-command-argument-improvers
commands))))
(mapcar (lambda (argument)
(guix-command-improve-argument argument improvers))
arguments)))
(defun guix-command-parse-arguments (&optional commands)
"Return a list of parsed 'guix COMMANDS ...' arguments."
(with-temp-buffer
(insert (guix-help-string commands))
(let (args)
(guix-while-search guix-help-parse-option-regexp
(let* ((short (match-string-no-properties 1))
(name (match-string-no-properties 2))
(arg (match-string-no-properties 3))
(doc (match-string-no-properties 4))
(char (if short
(elt short 1) ; short option letter
(elt name 2))) ; first letter of the long option
;; If "--foo=bar" or "--foo[=bar]" then it is 'option'.
(option? (not (string= "" arg)))
;; If "--foo" or "--foo[=bar]" then it is 'switch'.
(switch? (or (string= "" arg)
(eq ?\[ (elt arg 0)))))
(push (guix-command-make-argument
:name name
:char char
:doc doc
:switch? switch?
:option? option?)
args)))
(guix-while-search guix-help-parse-command-regexp
(let* ((name (match-string-no-properties 1))
(char (elt name 0)))
(push (guix-command-make-argument
:name name
:char char
:fun (guix-command-action-name commands name)
:action? t)
args)))
args)))
(defun guix-command-rest-argument (&optional commands)
"Return '--' argument for COMMANDS."
(cl-flet ((argument (&rest args)
(apply #'guix-command-make-argument
:name "-- " :char ?= :option? t args)))
(let ((command (car commands)))
(cond
((member command '("archive" "build" "graph" "edit"
"environment" "lint" "refresh"))
(argument :doc "Packages" :fun 'guix-read-package-names-string))
((string= command "download")
(argument :doc "URL"))
((string= command "gc")
(argument :doc "Paths" :fun 'guix-read-file-name))
((member command '("hash" "system"))
(argument :doc "File" :fun 'guix-read-file-name))
((string= command "size")
(argument :doc "Package" :fun 'guix-read-package-name))
((equal commands '("import" "nix"))
(argument :doc "Nixpkgs Attribute"))
;; Other 'guix import' subcommands, but not 'import' itself.
((and (cdr commands)
(string= command "import"))
(argument :doc "Package name"))))))
(defun guix-command-additional-arguments (&optional commands)
"Return additional arguments for COMMANDS."
(let ((rest-arg (guix-command-rest-argument commands)))
(and rest-arg (list rest-arg))))
;; Ideally only `guix-command-arguments' function should exist with the
;; contents of `guix-command-all-arguments', but we need to make a
;; special case for `guix-command-complex-with-shared-arguments' commands.
(defun guix-command-all-arguments (&optional commands)
"Return list of all arguments for 'guix COMMANDS ...'."
(let ((parsed (guix-command-parse-arguments commands)))
(append (guix-command-improve-arguments parsed commands)
(guix-command-additional-arguments commands))))
(guix-memoized-defalias guix-command-all-arguments-memoize
guix-command-all-arguments)
(defun guix-command-arguments (&optional commands)
"Return list of arguments for 'guix COMMANDS ...'."
(let ((command (car commands)))
(if (member command
guix-command-complex-with-shared-arguments)
;; Take actions only for 'guix system', and switches+options for
;; 'guix system foo'.
(funcall (if (null (cdr commands))
#'cl-remove-if-not
#'cl-remove-if)
#'guix-command-argument-action?
(guix-command-all-arguments-memoize (list command)))
(guix-command-all-arguments commands))))
(defun guix-command-switch->popup-switch (switch)
"Return popup switch from command SWITCH argument."
(list (guix-command-argument-char switch)
(or (guix-command-argument-doc switch)
"Unknown")
(guix-command-argument-name switch)))
(defun guix-command-option->popup-option (option)
"Return popup option from command OPTION argument."
(list (guix-command-argument-char option)
(or (guix-command-argument-doc option)
"Unknown")
(let ((name (guix-command-argument-name option)))
(if (string-match-p " \\'" name) ; ends with space
name
(concat name "=")))
(or (guix-command-argument-fun option)
'read-from-minibuffer)))
(defun guix-command-action->popup-action (action)
"Return popup action from command ACTION argument."
(list (guix-command-argument-char action)
(or (guix-command-argument-doc action)
(guix-command-argument-name action)
"Unknown")
(guix-command-argument-fun action)))
(defun guix-command-sort-arguments (arguments)
"Sort ARGUMENTS by name in alphabetical order."
(sort arguments
(lambda (a1 a2)
(let ((name1 (guix-command-argument-name a1))
(name2 (guix-command-argument-name a2)))
(cond ((null name1) nil)
((null name2) t)
(t (string< name1 name2)))))))
(defun guix-command-switches (arguments)
"Return switches from ARGUMENTS."
(cl-remove-if-not #'guix-command-argument-switch? arguments))
(defun guix-command-options (arguments)
"Return options from ARGUMENTS."
(cl-remove-if-not #'guix-command-argument-option? arguments))
(defun guix-command-actions (arguments)
"Return actions from ARGUMENTS."
(cl-remove-if-not #'guix-command-argument-action? arguments))
(defun guix-command-post-process-args (args)
"Adjust appropriately command line ARGS returned from popup command."
;; XXX We need to split "--install foo bar" and similar strings into
;; lists of strings. But some commands (e.g., 'guix hash') accept a
;; file name as the 'rest' argument, and as file names may contain
;; spaces, splitting by spaces will break such names. For example, the
;; following argument: "-- /tmp/file with spaces" will be transformed
;; into the following list: ("--" "/tmp/file" "with" "spaces") instead
;; of the wished ("--" "/tmp/file with spaces").
(let* (rest
(rx (rx string-start
(or "-- " "--install " "--remove ")))
(args (mapcar (lambda (arg)
(if (string-match-p rx arg)
(progn (push (split-string arg) rest)
nil)
arg))
args)))
(if rest
(apply #'append (delq nil args) rest)
args)))
;;; 'Execute' actions
(defvar guix-command-default-execute-arguments
(list
(guix-command-make-argument
:name "repl" :char ?r :doc "Run in Guix REPL")
(guix-command-make-argument
:name "shell" :char ?s :doc "Run in shell")
(guix-command-make-argument
:name "copy" :char ?c :doc "Copy command line"))
"List of default 'execute' action arguments.")
(defvar guix-command-additional-execute-arguments
`((("graph")
,(guix-command-make-argument
:name "view" :char ?v :doc "View graph")))
"Alist of guix commands and additional 'execute' action arguments.")
(defun guix-command-execute-arguments (commands)
"Return a list of 'execute' action arguments for COMMANDS."
(mapcar (lambda (arg)
(guix-command-modify-argument arg
:action? t
:fun (guix-command-action-name
commands (guix-command-argument-name arg))))
(append guix-command-default-execute-arguments
(guix-assoc-value
guix-command-additional-execute-arguments commands))))
(defvar guix-command-special-executors
'((("environment")
("repl" . guix-run-environment-command-in-repl))
(("pull")
("repl" . guix-run-pull-command-in-repl))
(("graph")
("view" . guix-run-view-graph)))
"Alist of guix commands and alists of special executers for them.
See also `guix-command-default-executors'.")
(defvar guix-command-default-executors
'(("repl" . guix-run-command-in-repl)
("shell" . guix-run-command-in-shell)
("copy" . guix-copy-command-as-kill))
"Alist of default executers for action names.")
(defun guix-command-executor (commands name)
"Return function to run command line arguments for guix COMMANDS."
(or (guix-assoc-value guix-command-special-executors commands name)
(guix-assoc-value guix-command-default-executors name)))
(defun guix-run-environment-command-in-repl (args)
"Run 'guix ARGS ...' environment command in Guix REPL."
;; As 'guix environment' usually tries to run another process, it may
;; be fun but not wise to run this command in Geiser REPL.
(when (or (member "--dry-run" args)
(member "--search-paths" args)
(when (y-or-n-p
(format "'%s' command will spawn an external process.
Do you really want to execute this command in Geiser REPL? "
(guix-command-string args)))
(message "May \"M-x shell-mode\" be with you!")
t))
(guix-run-command-in-repl args)))
(defun guix-run-pull-command-in-repl (args)
"Run 'guix ARGS ...' pull command in Guix REPL.
Perform pull-specific actions after operation, see
`guix-after-pull-hook' and `guix-update-after-pull'."
(guix-eval-in-repl
(apply #'guix-make-guile-expression 'guix-command args)
nil 'pull))
(defun guix-run-view-graph (args)
"Run 'guix ARGS ...' graph command, make the image and open it."
(let* ((graph-file (guix-dot-file-name))
(dot-args (guix-dot-arguments graph-file)))
(if (guix-eval-read (guix-make-guile-expression
'pipe-guix-output args dot-args))
(guix-find-file graph-file)
(error "Couldn't create a graph"))))
;;; Generating popups, actions, etc.
(defmacro guix-command-define-popup-action (name &optional commands)
"Define NAME function to generate (if needed) and run popup for COMMANDS."
(declare (indent 1) (debug t))
(let* ((popup-fun (guix-command-symbol `(,@commands "popup")))
(doc (format "Call `%s' (generate it if needed)."
popup-fun)))
`(defun ,name (&optional arg)
,doc
(interactive "P")
(unless (fboundp ',popup-fun)
(guix-command-generate-popup ',popup-fun ',commands))
(,popup-fun arg))))
(defmacro guix-command-define-execute-action (name executor
&optional commands)
"Define NAME function to execute the current action for guix COMMANDS.
EXECUTOR function is called with the current command line arguments."
(declare (indent 1) (debug t))
(let* ((arguments-fun (guix-command-symbol `(,@commands "arguments")))
(doc (format "Call `%s' with the current popup arguments."
executor)))
`(defun ,name (&rest args)
,doc
(interactive (,arguments-fun))
(,executor (append ',commands
(guix-command-post-process-args args))))))
(defun guix-command-generate-popup-actions (actions &optional commands)
"Generate 'popup' commands from ACTIONS arguments for guix COMMANDS."
(dolist (action actions)
(let ((fun (guix-command-argument-fun action)))
(unless (fboundp fun)
(eval `(guix-command-define-popup-action ,fun
,(append commands
(list (guix-command-argument-name action)))))))))
(defun guix-command-generate-execute-actions (actions &optional commands)
"Generate 'execute' commands from ACTIONS arguments for guix COMMANDS."
(dolist (action actions)
(let ((fun (guix-command-argument-fun action)))
(unless (fboundp fun)
(eval `(guix-command-define-execute-action ,fun
,(guix-command-executor
commands (guix-command-argument-name action))
,commands))))))
(defun guix-command-generate-popup (name &optional commands)
"Define NAME popup with 'guix COMMANDS ...' interface."
(let* ((command (car commands))
(man-page (concat "guix" (and command (concat "-" command))))
(doc (format "Popup window for '%s' command."
(guix-concat-strings (cons "guix" commands)
" ")))
(args (guix-command-arguments commands))
(switches (guix-command-sort-arguments
(guix-command-switches args)))
(options (guix-command-sort-arguments
(guix-command-options args)))
(popup-actions (guix-command-sort-arguments
(guix-command-actions args)))
(execute-actions (unless popup-actions
(guix-command-execute-arguments commands)))
(actions (or popup-actions execute-actions)))
(if popup-actions
(guix-command-generate-popup-actions popup-actions commands)
(guix-command-generate-execute-actions execute-actions commands))
(eval
`(guix-define-popup ,name
,doc
'guix-commands
:man-page ,man-page
:switches ',(mapcar #'guix-command-switch->popup-switch switches)
:options ',(mapcar #'guix-command-option->popup-option options)
:actions ',(mapcar #'guix-command-action->popup-action actions)
:max-action-columns 4))))
;;;###autoload (autoload 'guix "guix-command" "Popup window for 'guix'." t)
(guix-command-define-popup-action guix)
(defalias 'guix-edit-action #'guix-edit)
(defvar guix-command-font-lock-keywords
(eval-when-compile
`((,(rx "("
(group "guix-command-define-"
(or "popup-action"
"execute-action"
"argument-improver"))
symbol-end
(zero-or-more blank)
(zero-or-one
(group (one-or-more (or (syntax word) (syntax symbol))))))
(1 font-lock-keyword-face)
(2 font-lock-function-name-face nil t)))))
(font-lock-add-keywords 'emacs-lisp-mode guix-command-font-lock-keywords)
(provide 'guix-command)
;;; guix-command.el ends here

40
emacs/guix-config.el.in Normal file
View File

@ -0,0 +1,40 @@
;;; guix-config.el --- Compile-time configuration of Guix.
;; Copyright © 2015 Mathieu Lirzin <mthl@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 this program. If not, see <http://www.gnu.org/licenses/>.
;;; Code:
(defconst guix-emacs-interface-directory
(replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@"))
(defconst guix-state-directory
;; This must match `NIX_STATE_DIR' as defined in `daemon.am'.
(or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix"))
(defvar guix-guile-program "@GUILE@"
"Name of the guile executable used for Guix REPL.
May be either a string (the name of the executable) or a list of
strings of the form:
(NAME . ARGS)
Where ARGS is a list of arguments to the guile program.")
(provide 'guix-config)
;;; guix-config.el ends here

72
emacs/guix-external.el Normal file
View File

@ -0,0 +1,72 @@
;;; guix-external.el --- External programs -*- lexical-binding: t -*-
;; Copyright © 2015 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file provides auxiliary code for running external programs.
;;; Code:
(defgroup guix-external nil
"Settings for external programs."
:group 'guix)
(defcustom guix-dot-program (executable-find "dot")
"Name of the 'dot' executable."
:type 'string
:group 'guix-external)
(defcustom guix-dot-default-arguments
'("-Tpng")
"Default arguments for 'dot' program."
:type '(repeat string)
:group 'guix-external)
(defcustom guix-dot-file-name-function #'guix-png-file-name
"Function used to define a file name of a temporary 'dot' file.
The function is called without arguments."
:type '(choice (function-item guix-png-file-name)
(function :tag "Other function"))
:group 'guix-external)
(defun guix-dot-arguments (output-file &rest args)
"Return a list of dot arguments for writing a graph into OUTPUT-FILE.
If ARGS is nil, use `guix-dot-default-arguments'."
(or guix-dot-program
(error (concat "Couldn't find 'dot'.\n"
"Set guix-dot-program to a proper value")))
(apply #'list
guix-dot-program
(concat "-o" output-file)
(or args guix-dot-default-arguments)))
(defun guix-dot-file-name ()
"Call `guix-dot-file-name-function'."
(funcall guix-dot-file-name-function))
(defun guix-png-file-name ()
"Return '.png' file name in the `temporary-file-directory'."
(concat (make-temp-name
(concat (file-name-as-directory temporary-file-directory)
"graph-"))
".png"))
(provide 'guix-external)
;;; guix-external.el ends here

108
emacs/guix-help-vars.el Normal file
View File

@ -0,0 +1,108 @@
;;; guix-help-vars.el --- Variables related to --help output
;; Copyright © 2015 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file provides regular expressions to parse various "guix
;; ... --help" outputs and lists of non-receivable items (system types,
;; hash formats, etc.).
;;; Code:
;;; Regexps for parsing "guix ..." outputs
(defvar guix-help-parse-option-regexp
(rx bol " "
(zero-or-one (group "-" (not (any "- ")))
",")
(one-or-more " ")
(group "--" (one-or-more (or wordchar "-")))
(group (zero-or-one "[")
(zero-or-one "="))
(zero-or-more (not space))
(one-or-more space)
(group (one-or-more any)))
"Common regexp used to find command options.")
(defvar guix-help-parse-command-regexp
(rx bol " "
(group wordchar (one-or-more (or wordchar "-"))))
"Regexp used to find guix commands.
'Command' means any option not prefixed with '-'. For example,
guix subcommand, system action, importer, etc.")
(defvar guix-help-parse-long-option-regexp
(rx (or " " ", ")
(group "--" (one-or-more (or wordchar "-"))
(zero-or-one "=")))
"Regexp used to find long options.")
(defvar guix-help-parse-short-option-regexp
(rx bol (one-or-more blank)
"-" (group (not (any "- "))))
"Regexp used to find short options.")
(defvar guix-help-parse-package-regexp
(rx bol (group (one-or-more (not blank))))
"Regexp used to find names of the packages.")
(defvar guix-help-parse-list-regexp
(rx bol (zero-or-more blank) "- "
(group (one-or-more (or wordchar "-"))))
"Regexp used to find various lists (lint checkers, graph types).")
(defvar guix-help-parse-regexp-group 1
"Parenthesized expression of regexps used to find commands and
options.")
;;; Non-receivable lists of system types, hash formats, etc.
(defvar guix-help-system-types
'("x86_64-linux" "i686-linux" "armhf-linux" "mips64el-linux")
"List of supported systems.")
(defvar guix-help-source-types
'("package" "all" "transitive")
"List of supported sources types.")
(defvar guix-help-hash-formats
'("nix-base32" "base32" "base16" "hex" "hexadecimal")
"List of supported hash formats.")
(defvar guix-help-refresh-subsets
'("core" "non-core")
"List of supported 'refresh' subsets.")
(defvar guix-help-key-policies
'("interactive" "always" "never")
"List of supported key download policies.")
(defvar guix-help-verify-options
'("repair" "contents")
"List of supported 'verify' options")
(defvar guix-help-elpa-archives
'("gnu" "melpa" "melpa-stable")
"List of supported ELPA archives.")
(provide 'guix-help-vars)
;;; guix-help-vars.el ends here

View File

@ -178,12 +178,12 @@ The order of displayed parameters is the same as in this list.")
(defun guix-info-get-insert-methods (entry-type param)
"Return list of insert methods for parameter PARAM of ENTRY-TYPE.
See `guix-info-insert-methods' for details."
(guix-get-key-val guix-info-insert-methods
(guix-assq-value guix-info-insert-methods
entry-type param))
(defun guix-info-get-displayed-params (entry-type)
"Return parameters of ENTRY-TYPE that should be displayed."
(guix-get-key-val guix-info-displayed-params
(guix-assq-value guix-info-displayed-params
entry-type))
(defun guix-info-get-indent (&optional level)
@ -232,7 +232,7 @@ Use `guix-info-insert-ENTRY-TYPE-function' or
"Insert title and value of a PARAM at point.
ENTRY is alist with parameters and their values.
ENTRY-TYPE is a type of ENTRY."
(let ((val (guix-get-key-val entry param)))
(let ((val (guix-assq-value entry param)))
(unless (and guix-info-ignore-empty-vals (null val))
(let* ((title (guix-get-param-title entry-type param))
(insert-methods (guix-info-get-insert-methods entry-type param))
@ -492,12 +492,12 @@ filling them to fit the window."
(defun guix-package-info-insert-heading (entry)
"Insert the heading for package ENTRY.
Show package name, version, and `guix-package-info-heading-params'."
(guix-format-insert (concat (guix-get-key-val entry 'name) " "
(guix-get-key-val entry 'version))
(guix-format-insert (concat (guix-assq-value entry 'name) " "
(guix-assq-value entry 'version))
'guix-package-info-heading)
(insert "\n\n")
(mapc (lambda (param)
(let ((val (guix-get-key-val entry param))
(let ((val (guix-assq-value entry param))
(face (guix-get-symbol (symbol-name param)
'info 'package)))
(when val
@ -587,10 +587,10 @@ If nil, insert installed info in a default way.")
(defun guix-package-info-insert-outputs (outputs entry)
"Insert OUTPUTS from package ENTRY at point."
(and (guix-get-key-val entry 'obsolete)
(and (guix-assq-value entry 'obsolete)
(guix-package-info-insert-obsolete-text))
(and (guix-get-key-val entry 'non-unique)
(guix-get-key-val entry 'installed)
(and (guix-assq-value entry 'non-unique)
(guix-assq-value entry 'installed)
(guix-package-info-insert-non-unique-text
(guix-get-full-name entry)))
(insert "\n")
@ -617,11 +617,11 @@ If nil, insert installed info in a default way.")
Make some fancy text with buttons and additional stuff if the
current OUTPUT is installed (if there is such output in
`installed' parameter of a package ENTRY)."
(let* ((installed (guix-get-key-val entry 'installed))
(obsolete (guix-get-key-val entry 'obsolete))
(let* ((installed (guix-assq-value entry 'installed))
(obsolete (guix-assq-value entry 'obsolete))
(installed-entry (cl-find-if
(lambda (entry)
(string= (guix-get-key-val entry 'output)
(string= (guix-assq-value entry 'output)
output))
installed))
(action-type (if installed-entry 'delete 'install)))
@ -655,8 +655,8 @@ ENTRY is an alist with package info."
(current-buffer)))
(concat type-str " '" full-name "'")
'action-type type
'id (or (guix-get-key-val entry 'package-id)
(guix-get-key-val entry 'id))
'id (or (guix-assq-value entry 'package-id)
(guix-assq-value entry 'id))
'output output)))
(defun guix-package-info-insert-output-path (path &optional _)
@ -720,7 +720,7 @@ PACKAGE-ID is an ID of the package which source to show."
(entries (cl-substitute-if
new-entry
(lambda (entry)
(equal (guix-get-key-val entry 'id)
(equal (guix-assq-value entry 'id)
entry-id))
guix-entries
:count 1)))
@ -746,9 +746,9 @@ SOURCE is a list of URLs."
(guix-info-insert-indent)
(if (null source)
(guix-format-insert nil)
(let* ((source-file (guix-get-key-val entry 'source-file))
(entry-id (guix-get-key-val entry 'id))
(package-id (or (guix-get-key-val entry 'package-id)
(let* ((source-file (guix-assq-value entry 'source-file))
(entry-id (guix-assq-value entry 'id))
(package-id (or (guix-assq-value entry 'package-id)
entry-id)))
(if (null source-file)
(guix-info-insert-action-button
@ -798,13 +798,13 @@ If nil, insert output in a default way.")
"Insert output VERSION and obsolete text if needed at point."
(guix-info-insert-val-default version
'guix-package-info-version)
(and (guix-get-key-val entry 'obsolete)
(and (guix-assq-value entry 'obsolete)
(guix-package-info-insert-obsolete-text)))
(defun guix-output-info-insert-output (output entry)
"Insert OUTPUT and action buttons at point."
(let* ((installed (guix-get-key-val entry 'installed))
(obsolete (guix-get-key-val entry 'obsolete))
(let* ((installed (guix-assq-value entry 'installed))
(obsolete (guix-assq-value entry 'obsolete))
(action-type (if installed 'delete 'install)))
(guix-info-insert-val-default
output
@ -874,7 +874,7 @@ If nil, insert generation in a default way.")
(guix-switch-to-generation guix-profile (button-get btn 'number)
(current-buffer)))
"Switch to this generation (make it the current one)"
'number (guix-get-key-val entry 'number))))
'number (guix-assq-value entry 'number))))
(provide 'guix-info)

View File

@ -1,9 +1,5 @@
(require 'guix-autoloads)
(defvar guix-load-path
(replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@")
"Directory with scheme files for \"guix.el\" package.")
(defcustom guix-package-enable-at-startup t
"If non-nil, activate Emacs packages installed in a user profile.
Set this variable to nil before requiring `guix-init' file to

View File

@ -1,6 +1,6 @@
;;; guix-list.el --- List buffers for displaying entries -*- lexical-binding: t -*-
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
@ -110,13 +110,13 @@ parameters and their values).")
(defun guix-list-get-param-title (entry-type param)
"Return title of an ENTRY-TYPE entry parameter PARAM."
(or (guix-get-key-val guix-list-column-titles
(or (guix-assq-value guix-list-column-titles
entry-type param)
(guix-get-param-title entry-type param)))
(defun guix-list-get-column-format (entry-type)
"Return column format for ENTRY-TYPE."
(guix-get-key-val guix-list-column-format entry-type))
(guix-assq-value guix-list-column-format entry-type))
(defun guix-list-get-displayed-params (entry-type)
"Return list of parameters of ENTRY-TYPE that should be displayed."
@ -170,7 +170,7 @@ ENTRIES should have a form of `guix-entries'."
Values are taken from ENTRIES which should have the form of
`guix-entries'."
(mapcar (lambda (entry)
(list (guix-get-key-val entry 'id)
(list (guix-assq-value entry 'id)
(guix-list-get-tabulated-entry entry entry-type)))
entries))
@ -180,8 +180,8 @@ Parameters are taken from ENTRY of ENTRY-TYPE."
(guix-list-make-tabulated-vector
entry-type
(lambda (param _)
(let ((val (guix-get-key-val entry param))
(fun (guix-get-key-val guix-list-column-value-methods
(let ((val (guix-assq-value entry param))
(fun (guix-assq-value guix-list-column-value-methods
entry-type param)))
(if fun
(funcall fun val entry)
@ -221,7 +221,7 @@ VAL may be nil."
(guix-package-list-mode
(guix-list-current-id))
(guix-output-list-mode
(guix-get-key-val (guix-list-current-entry) 'package-id))))
(guix-assq-value (guix-list-current-entry) 'package-id))))
(defun guix-list-for-each-line (fun &rest args)
"Call FUN with ARGS for each entry line."
@ -262,7 +262,7 @@ ARGS is a list of additional values.")
(defsubst guix-list-get-mark (name)
"Return mark character by its NAME."
(or (guix-get-key-val guix-list-mark-alist name)
(or (guix-assq-value guix-list-mark-alist name)
(error "Mark '%S' not found" name)))
(defsubst guix-list-get-mark-string (name)
@ -355,7 +355,7 @@ With ARG, unmark all lines."
"Put marks according to `guix-list-mark-alist'."
(guix-list-for-each-line
(lambda ()
(let ((mark-name (car (guix-get-key-val guix-list-marked
(let ((mark-name (car (guix-assq-value guix-list-marked
(guix-list-current-id)))))
(tabulated-list-put-tag
(guix-list-get-mark-string (or mark-name 'empty)))))))
@ -472,7 +472,7 @@ With prefix (if ARG is non-nil), describe entries marked with any mark."
(defun guix-list-edit-package ()
"Go to the location of the current package."
(interactive)
(guix-edit-package (guix-list-current-package-id)))
(guix-edit (guix-list-current-package-id)))
;;; Displaying packages
@ -524,16 +524,16 @@ likely)."
Colorize it with `guix-package-list-installed' or
`guix-package-list-obsolete' if needed."
(guix-get-string name
(cond ((guix-get-key-val entry 'obsolete)
(cond ((guix-assq-value entry 'obsolete)
'guix-package-list-obsolete)
((guix-get-key-val entry 'installed)
((guix-assq-value entry 'installed)
'guix-package-list-installed))))
(defun guix-package-list-get-installed-outputs (installed &optional _)
"Return string with outputs from INSTALLED entries."
(guix-get-string
(mapcar (lambda (entry)
(guix-get-key-val entry 'output))
(guix-assq-value entry 'output))
installed)))
(defun guix-package-list-marking-check ()
@ -562,7 +562,7 @@ be separated with \",\")."
(interactive "P")
(guix-package-list-marking-check)
(let* ((entry (guix-list-current-entry))
(all (guix-get-key-val entry 'outputs))
(all (guix-assq-value entry 'outputs))
(installed (guix-get-installed-outputs entry))
(available (cl-set-difference all installed :test #'string=)))
(or available
@ -597,7 +597,7 @@ be separated with \",\")."
(installed (guix-get-installed-outputs entry)))
(or installed
(user-error "This package is not installed"))
(when (or (guix-get-key-val entry 'obsolete)
(when (or (guix-assq-value entry 'obsolete)
(y-or-n-p "This package is not obsolete. Try to upgrade it anyway? "))
(guix-package-list-mark-outputs
'upgrade installed
@ -611,14 +611,14 @@ accept an entry as argument."
(guix-package-list-marking-check)
(let ((obsolete (cl-remove-if-not
(lambda (entry)
(guix-get-key-val entry 'obsolete))
(guix-assq-value entry 'obsolete))
guix-entries)))
(guix-list-for-each-line
(lambda ()
(let* ((id (guix-list-current-id))
(entry (cl-find-if
(lambda (entry)
(equal id (guix-get-key-val entry 'id)))
(equal id (guix-assq-value entry 'id)))
obsolete)))
(when entry
(funcall fun entry)))))))
@ -682,7 +682,7 @@ The specification is suitable for `guix-process-package-actions'."
(interactive)
(guix-package-list-marking-check)
(let* ((entry (guix-list-current-entry))
(installed (guix-get-key-val entry 'installed)))
(installed (guix-assq-value entry 'installed)))
(if installed
(user-error "This output is already installed")
(guix-list--mark 'install t))))
@ -692,7 +692,7 @@ The specification is suitable for `guix-process-package-actions'."
(interactive)
(guix-package-list-marking-check)
(let* ((entry (guix-list-current-entry))
(installed (guix-get-key-val entry 'installed)))
(installed (guix-assq-value entry 'installed)))
(if installed
(guix-list--mark 'delete t)
(user-error "This output is not installed"))))
@ -702,10 +702,10 @@ The specification is suitable for `guix-process-package-actions'."
(interactive)
(guix-package-list-marking-check)
(let* ((entry (guix-list-current-entry))
(installed (guix-get-key-val entry 'installed)))
(installed (guix-assq-value entry 'installed)))
(or installed
(user-error "This output is not installed"))
(when (or (guix-get-key-val entry 'obsolete)
(when (or (guix-assq-value entry 'obsolete)
(y-or-n-p "This output is not obsolete. Try to upgrade it anyway? "))
(guix-list--mark 'upgrade t))))
@ -777,8 +777,8 @@ VAL is a boolean value."
"Switch current profile to the generation at point."
(interactive)
(let* ((entry (guix-list-current-entry))
(current (guix-get-key-val entry 'current))
(number (guix-get-key-val entry 'number)))
(current (guix-assq-value entry 'current))
(number (guix-assq-value entry 'number)))
(if current
(user-error "This generation is already the current one")
(guix-switch-to-generation guix-profile number (current-buffer)))))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -45,6 +45,7 @@
(use-modules
(ice-9 vlist)
(ice-9 match)
(ice-9 popen)
(srfi srfi-1)
(srfi srfi-2)
(srfi srfi-11)
@ -57,6 +58,8 @@
(guix licenses)
(guix utils)
(guix ui)
(guix scripts graph)
(guix scripts lint)
(guix scripts package)
(guix scripts pull)
(gnu packages))
@ -68,7 +71,14 @@
(define (list-maybe obj)
(if (list? obj) obj (list obj)))
(define full-name->name+version package-name->name+version)
(define (full-name->name+version spec)
"Given package specification SPEC with or without output,
return two values: name and version. For example, for SPEC
\"foo-0.9.1b:lib\", return \"foo\" and \"0.9.1b\"."
(let-values (((name version output)
(package-specification->name+version+output spec)))
(values name version)))
(define (name+version->full-name name version)
(string-append name "-" version))
@ -244,6 +254,10 @@ Example:
(filter-map (match-lambda
((_ (? package? package))
(package-full-name package))
((_ (? package? package) output)
(make-package-specification (package-name package)
(package-version package)
output))
(_ #f))
inputs))
@ -279,7 +293,7 @@ Example:
(license . ,package-license-names)
(source . ,package-source-names)
(synopsis . ,package-synopsis)
(description . ,package-description)
(description . ,package-description-string)
(home-url . ,package-home-page)
(outputs . ,package-outputs)
(non-unique . ,(negate package-unique?))
@ -887,9 +901,10 @@ GENERATIONS is a list of generation numbers."
(with-store store
(delete-generations store profile generations)))
(define (package-location-string package-id)
"Return a location string of a package PACKAGE-ID."
(and-let* ((package (package-by-id package-id))
(define (package-location-string id-or-name)
"Return a location string of a package with ID-OR-NAME."
(and-let* ((package (or (package-by-id id-or-name)
(first (packages-by-name id-or-name))))
(location (package-location package)))
(location->string location)))
@ -927,3 +942,54 @@ GENERATIONS is a list of generation numbers."
(build-derivations store derivations))
(format #t "The source store path: ~a~%"
(package-source-derivation->store-path derivation))))))
;;; Executing guix commands
(define (guix-command . args)
"Run 'guix ARGS ...' command."
(catch 'quit
(lambda () (apply run-guix args))
(const #t)))
(define (guix-command-output . args)
"Return string with 'guix ARGS ...' output."
(with-output-to-string
(lambda () (apply guix-command args))))
(define (help-string . commands)
"Return string with 'guix COMMANDS ... --help' output."
(apply guix-command-output `(,@commands "--help")))
(define (pipe-guix-output guix-args command-args)
"Run 'guix GUIX-ARGS ...' command and pipe its output to a shell command
defined by COMMAND-ARGS.
Return #t if the shell command was executed successfully."
(let ((pipe (apply open-pipe* OPEN_WRITE command-args)))
(with-output-to-port pipe
(lambda () (apply guix-command guix-args)))
(zero? (status:exit-val (close-pipe pipe)))))
;;; Lists of packages, lint checkers, etc.
(define (graph-type-names)
"Return a list of names of available graph node types."
(map node-type-name %node-types))
(define (lint-checker-names)
"Return a list of names of available lint checkers."
(map (lambda (checker)
(symbol->string (lint-checker-name checker)))
%checkers))
(define (package-names)
"Return a list of names of available packages."
(delete-duplicates
(fold-packages (lambda (pkg res)
(cons (package-name pkg) res))
'())))
;; See the comment to 'guix-package-names' function in "guix-popup.el".
(define (package-names-lists)
(map list (package-names)))

View File

@ -1,6 +1,6 @@
;;; guix-messages.el --- Minibuffer messages
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
@ -186,14 +186,14 @@
(defun guix-result-message (profile entries entry-type
search-type search-vals)
"Display an appropriate message after displaying ENTRIES."
(let* ((type-spec (guix-get-key-val guix-messages
(let* ((type-spec (guix-assq-value guix-messages
entry-type search-type))
(fun-or-count-spec (car type-spec)))
(if (functionp fun-or-count-spec)
(funcall fun-or-count-spec profile entries search-vals)
(let* ((count (length entries))
(count-key (if (> count 1) 'many count))
(msg-spec (guix-get-key-val type-spec count-key))
(msg-spec (guix-assq-value type-spec count-key))
(msg (car msg-spec))
(args (cdr msg-spec)))
(mapc (lambda (subst)

View File

@ -28,59 +28,7 @@
(require 'pcmpl-unix)
(require 'cl-lib)
(require 'guix-utils)
;;; Regexps for parsing various "guix ..." outputs
(defvar guix-pcomplete-parse-package-regexp
(rx bol (group (one-or-more (not blank))))
"Regexp used to find names of the packages.")
(defvar guix-pcomplete-parse-command-regexp
(rx bol " "
(group wordchar (one-or-more (or wordchar "-"))))
"Regexp used to find guix commands.
'Command' means any option not prefixed with '-'. For example,
guix subcommand, system action, importer, etc.")
(defvar guix-pcomplete-parse-long-option-regexp
(rx (or " " ", ")
(group "--" (one-or-more (or wordchar "-"))
(zero-or-one "=")))
"Regexp used to find long options.")
(defvar guix-pcomplete-parse-short-option-regexp
(rx bol (one-or-more blank)
"-" (group (not (any "- "))))
"Regexp used to find short options.")
(defvar guix-pcomplete-parse-list-regexp
(rx bol (zero-or-more blank) "- "
(group (one-or-more (or wordchar "-"))))
"Regexp used to find various lists (lint checkers, graph types).")
(defvar guix-pcomplete-parse-regexp-group 1
"Parenthesized expression of regexps used to find commands and
options.")
;;; Non-receivable completions
(defvar guix-pcomplete-systems
'("x86_64-linux" "i686-linux" "armhf-linux" "mips64el-linux")
"List of supported systems.")
(defvar guix-pcomplete-hash-formats
'("nix-base32" "base32" "base16" "hex" "hexadecimal")
"List of supported hash formats.")
(defvar guix-pcomplete-refresh-subsets
'("core" "non-core")
"List of supported 'refresh' subsets.")
(defvar guix-pcomplete-key-policies
'("interactive" "always" "never")
"List of supported key download policies.")
(require 'guix-help-vars)
;;; Interacting with guix
@ -105,9 +53,8 @@ Return a list of strings matching REGEXP.
GROUP specifies a parenthesized expression used in REGEXP."
(with-temp-buffer
(apply #'guix-pcomplete-run-guix args)
(goto-char (point-min))
(let (result)
(while (re-search-forward regexp nil t)
(guix-while-search regexp
(push (match-string-no-properties group) result))
(nreverse result))))
@ -129,7 +76,7 @@ function call is returned."
(let* ((args '("--help"))
(args (if command (cons command args) args))
(res (apply #'guix-pcomplete-run-guix-and-search
,regexp guix-pcomplete-parse-regexp-group args)))
,regexp guix-help-parse-regexp-group args)))
,(if filter
`(funcall ,filter res)
'res))))
@ -138,23 +85,23 @@ function call is returned."
"If COMMAND is nil, return a list of available guix commands.
If COMMAND is non-nil (it should be a string), return available
subcommands, actions, etc. for this guix COMMAND."
guix-pcomplete-parse-command-regexp)
guix-help-parse-command-regexp)
(guix-pcomplete-define-options-finder guix-pcomplete-long-options
"Return a list of available long options for guix COMMAND."
guix-pcomplete-parse-long-option-regexp)
guix-help-parse-long-option-regexp)
(guix-pcomplete-define-options-finder guix-pcomplete-short-options
"Return a string with available short options for guix COMMAND."
guix-pcomplete-parse-short-option-regexp
guix-help-parse-short-option-regexp
(lambda (list)
(mapconcat #'identity list "")))
(guix-concat-strings list "")))
(guix-memoized-defun guix-pcomplete-all-packages ()
"Return a list of all available Guix packages."
(guix-pcomplete-run-guix-and-search
guix-pcomplete-parse-package-regexp
guix-pcomplete-parse-regexp-group
guix-help-parse-package-regexp
guix-help-parse-regexp-group
"package" "--list-available"))
(guix-memoized-defun guix-pcomplete-installed-packages (&optional profile)
@ -163,22 +110,22 @@ subcommands, actions, etc. for this guix COMMAND."
(list (concat "--profile=" profile))))
(args (append '("package" "--list-installed") args)))
(apply #'guix-pcomplete-run-guix-and-search
guix-pcomplete-parse-package-regexp
guix-pcomplete-parse-regexp-group
guix-help-parse-package-regexp
guix-help-parse-regexp-group
args)))
(guix-memoized-defun guix-pcomplete-lint-checkers ()
"Return a list of all available lint checkers."
(guix-pcomplete-run-guix-and-search
guix-pcomplete-parse-list-regexp
guix-pcomplete-parse-regexp-group
guix-help-parse-list-regexp
guix-help-parse-regexp-group
"lint" "--list-checkers"))
(guix-memoized-defun guix-pcomplete-graph-types ()
"Return a list of all available graph types."
(guix-pcomplete-run-guix-and-search
guix-pcomplete-parse-list-regexp
guix-pcomplete-parse-regexp-group
guix-help-parse-list-regexp
guix-help-parse-regexp-group
"graph" "--list-types"))
@ -284,7 +231,7 @@ INPUT is the current partially completed string."
((option? "-L" "--load-path")
(complete* (pcomplete-dirs)))
((string= "--key-download" option)
(complete* guix-pcomplete-key-policies))
(complete* guix-help-key-policies))
((command? "package")
(cond
@ -313,7 +260,7 @@ INPUT is the current partially completed string."
((and (command? "archive" "build" "size")
(option? "-s" "--system"))
(complete* guix-pcomplete-systems))
(complete* guix-help-system-types))
((and (command? "build")
(option? "-r" "--root"))
@ -329,7 +276,7 @@ INPUT is the current partially completed string."
((and (command? "hash" "download")
(option? "-f" "--format"))
(complete* guix-pcomplete-hash-formats))
(complete* guix-help-hash-formats))
((and (command? "lint")
(option? "-c" "--checkers"))
@ -342,7 +289,7 @@ INPUT is the current partially completed string."
((and (command? "refresh")
(option? "-s" "--select"))
(complete* guix-pcomplete-refresh-subsets))
(complete* guix-help-refresh-subsets))
((and (command? "size")
(option? "-m" "--map-file"))

48
emacs/guix-popup.el Normal file
View File

@ -0,0 +1,48 @@
;;; guix-popup.el --- Popup windows library
;; Copyright © 2015 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file provides `guix-define-popup' macro which is just an alias
;; to `magit-define-popup'. According to the manual (info
;; "(magit-popup) Defining prefix and suffix commands") `magit-popup'
;; library will eventually be superseded by a more general library.
;;; Code:
(require 'magit-popup)
(defalias 'guix-define-popup 'magit-define-popup)
(defvar guix-popup-font-lock-keywords
(eval-when-compile
`((,(rx "("
(group "guix-define-popup")
symbol-end
(zero-or-more blank)
(zero-or-one
(group (one-or-more (or (syntax word) (syntax symbol))))))
(1 font-lock-keyword-face)
(2 font-lock-function-name-face nil t)))))
(font-lock-add-keywords 'emacs-lisp-mode guix-popup-font-lock-keywords)
(provide 'guix-popup)
;;; guix-popup.el ends here

View File

@ -1,6 +1,6 @@
;;; guix-prettify.el --- Prettify Guix store file names
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
@ -47,9 +47,12 @@
;;; Code:
(require 'guix-utils)
(defgroup guix-prettify nil
"Prettify Guix store file names."
:prefix "guix-prettify-"
:group 'guix
:group 'font-lock
:group 'convenience)
@ -136,13 +139,11 @@ enabling/disabling `guix-prettify-mode'. If nil, do nothing.")
(remove-text-properties (point-min)
(point-max)
'(composition nil))
(save-excursion
(goto-char (point-min))
(while (re-search-forward guix-prettify-regexp nil t)
(guix-while-search guix-prettify-regexp
(remove-text-properties
(match-beginning guix-prettify-regexp-group)
(match-end guix-prettify-regexp-group)
'(composition nil))))))))
'(composition nil)))))))
;;;###autoload
(define-minor-mode guix-prettify-mode

View File

@ -19,12 +19,14 @@
;;; Code:
(require 'guix-config)
(defvar guix-user-profile
(expand-file-name "~/.guix-profile")
"User profile.")
(defvar guix-default-profile
(concat (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix")
(concat guix-state-directory
"/profiles/per-user/"
(getenv "USER")
"/guix-profile")

176
emacs/guix-read.el Normal file
View File

@ -0,0 +1,176 @@
;;; guix-read.el --- Minibuffer readers
;; Copyright © 2015 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file provides functions to prompt a user for packages, system
;; types, hash formats and other guix related stuff.
;;; Code:
(require 'guix-help-vars)
(require 'guix-utils)
(require 'guix-base)
(defun guix-read-file-name (prompt &optional dir default-filename
mustmatch initial predicate)
"Read file name.
This function is similar to `read-file-name' except it also
expands the file name."
(expand-file-name (read-file-name prompt dir default-filename
mustmatch initial predicate)))
(defmacro guix-define-reader (name read-fun completions prompt)
"Define NAME function to read from minibuffer.
READ-FUN may be `completing-read', `completing-read-multiple' or
another function with the same arguments."
`(defun ,name (&optional prompt initial-contents)
(,read-fun ,(if prompt
`(or prompt ,prompt)
'prompt)
,completions nil nil initial-contents)))
(defmacro guix-define-readers (&rest args)
"Define reader functions.
ARGS should have a form [KEYWORD VALUE] ... The following
keywords are available:
- `completions-var' - variable used to get completions.
- `completions-getter' - function used to get completions.
- `single-reader', `single-prompt' - name of a function to read
a single value, and a prompt for it.
- `multiple-reader', `multiple-prompt' - name of a function to
read multiple values, and a prompt for it.
- `multiple-separator' - if specified, another
`<multiple-reader-name>-string' function returning a string
of multiple values separated the specified separator will be
defined."
(let (completions-var
completions-getter
single-reader
single-prompt
multiple-reader
multiple-prompt
multiple-separator)
;; Process the keyword args.
(while (keywordp (car args))
(pcase (pop args)
(`:completions-var (setq completions-var (pop args)))
(`:completions-getter (setq completions-getter (pop args)))
(`:single-reader (setq single-reader (pop args)))
(`:single-prompt (setq single-prompt (pop args)))
(`:multiple-reader (setq multiple-reader (pop args)))
(`:multiple-prompt (setq multiple-prompt (pop args)))
(`:multiple-separator (setq multiple-separator (pop args)))
(_ (pop args))))
(let ((completions
(cond ((and completions-var completions-getter)
`(or ,completions-var
(setq ,completions-var
(funcall ',completions-getter))))
(completions-var
completions-var)
(completions-getter
`(funcall ',completions-getter)))))
`(progn
,(when (and completions-var
(not (boundp completions-var)))
`(defvar ,completions-var nil))
,(when single-reader
`(guix-define-reader ,single-reader completing-read
,completions ,single-prompt))
,(when multiple-reader
`(guix-define-reader ,multiple-reader completing-read-multiple
,completions ,multiple-prompt))
,(when (and multiple-reader multiple-separator)
(let ((name (intern (concat (symbol-name multiple-reader)
"-string"))))
`(defun ,name (&optional prompt initial-contents)
(guix-concat-strings
(,multiple-reader prompt initial-contents)
,multiple-separator))))))))
(guix-define-readers
:completions-var guix-help-system-types
:single-reader guix-read-system-type
:single-prompt "System type: ")
(guix-define-readers
:completions-var guix-help-source-types
:single-reader guix-read-source-type
:single-prompt "Source type: ")
(guix-define-readers
:completions-var guix-help-hash-formats
:single-reader guix-read-hash-format
:single-prompt "Hash format: ")
(guix-define-readers
:completions-var guix-help-refresh-subsets
:single-reader guix-read-refresh-subset
:single-prompt "Refresh subset: ")
(guix-define-readers
:completions-var guix-help-key-policies
:single-reader guix-read-key-policy
:single-prompt "Key policy: ")
(guix-define-readers
:completions-var guix-help-elpa-archives
:single-reader guix-read-elpa-archive
:single-prompt "ELPA archive: ")
(guix-define-readers
:completions-var guix-help-verify-options
:multiple-reader guix-read-verify-options
:multiple-prompt "Verify option,s: "
:multiple-separator ",")
(guix-define-readers
:completions-getter guix-graph-type-names
:single-reader guix-read-graph-type
:single-prompt "Graph node type: ")
(guix-define-readers
:completions-getter guix-lint-checker-names
:multiple-reader guix-read-lint-checker-names
:multiple-prompt "Linter,s: "
:multiple-separator ",")
(guix-define-readers
:completions-getter guix-package-names
:single-reader guix-read-package-name
:single-prompt "Package: "
:multiple-reader guix-read-package-names
:multiple-prompt "Package,s: "
:multiple-separator " ")
(provide 'guix-read)
;;; guix-read.el ends here

View File

@ -128,6 +128,53 @@ split it into several short lines."
(fill-region (point-min) (point-max)))
(buffer-string)))
(defun guix-concat-strings (strings separator &optional location)
"Return new string by concatenating STRINGS with SEPARATOR.
If LOCATION is a symbol `head', add another SEPARATOR to the
beginning of the returned string; if `tail' - add SEPARATOR to
the end of the string; if nil, do not add SEPARATOR; otherwise
add both to the end and to the beginning."
(let ((str (mapconcat #'identity strings separator)))
(cond ((null location)
str)
((eq location 'head)
(concat separator str))
((eq location 'tail)
(concat str separator))
(t
(concat separator str separator)))))
(defun guix-shell-quote-argument (argument)
"Quote shell command ARGUMENT.
This function is similar to `shell-quote-argument', but less strict."
(if (equal argument "")
"''"
(replace-regexp-in-string
"\n" "'\n'"
(replace-regexp-in-string
(rx (not (any alnum "-=,./\n"))) "\\\\\\&" argument))))
(defun guix-command-symbol (&optional args)
"Return symbol by concatenating 'guix' and ARGS (strings)."
(intern (guix-concat-strings (cons "guix" args) "-")))
(defun guix-command-string (&optional args)
"Return 'guix ARGS ...' string with quoted shell arguments."
(let ((args (mapcar #'guix-shell-quote-argument args)))
(guix-concat-strings (cons "guix" args) " ")))
(defun guix-copy-as-kill (string &optional no-message?)
"Put STRING into `kill-ring'.
If NO-MESSAGE? is non-nil, do not display a message about it."
(kill-new string)
(unless no-message?
(message "'%s' has been added to kill ring." string)))
(defun guix-copy-command-as-kill (args &optional no-message?)
"Put 'guix ARGS ...' string into `kill-ring'.
See also `guix-copy-as-kill'."
(guix-copy-as-kill (guix-command-string args) no-message?))
(defun guix-completing-read-multiple (prompt table &optional predicate
require-match initial-input
hist def inherit-input-method)
@ -146,20 +193,56 @@ Return time value."
(require 'org)
(org-read-date nil t nil prompt))
(defun guix-get-key-val (alist &rest keys)
"Return value from ALIST by KEYS.
ALIST is alist of alists of alists ... which can be consecutively
accessed with KEYS."
(let ((val alist))
(dolist (key keys val)
(setq val (cdr (assq key val))))))
(defcustom guix-find-file-function #'find-file
"Function used to find a file.
The function is called by `guix-find-file' with a file name as a
single argument."
:type '(choice (function-item find-file)
(function-item org-open-file)
(function :tag "Other function"))
:group 'guix)
(defun guix-find-file (file)
"Find FILE if it exists."
(if (file-exists-p file)
(find-file file)
(funcall guix-find-file-function file)
(message "File '%s' does not exist." file)))
(defmacro guix-while-search (regexp &rest body)
"Evaluate BODY after each search for REGEXP in the current buffer."
(declare (indent 1) (debug t))
`(save-excursion
(goto-char (point-min))
(while (re-search-forward ,regexp nil t)
,@body)))
(defun guix-any (pred lst)
"Test whether any element from LST satisfies PRED.
If so, return the return value from the successful PRED call.
Return nil otherwise."
(when lst
(or (funcall pred (car lst))
(guix-any pred (cdr lst)))))
;;; Alist accessors
(defmacro guix-define-alist-accessor (name assoc-fun)
"Define NAME function to access alist values using ASSOC-FUN."
`(defun ,name (alist &rest keys)
,(format "Return value from ALIST by KEYS using `%s'.
ALIST is alist of alists of alists ... which can be consecutively
accessed with KEYS."
assoc-fun)
(if (or (null alist) (null keys))
alist
(apply #',name
(cdr (,assoc-fun (car keys) alist))
(cdr keys)))))
(guix-define-alist-accessor guix-assq-value assq)
(guix-define-alist-accessor guix-assoc-value assoc)
;;; Diff
@ -199,6 +282,27 @@ See `defun' for the meaning of arguments."
(mapconcat #'symbol-name arglist " ")
docstring)))
(defmacro guix-memoized-defalias (symbol definition &optional docstring)
"Set SYMBOL's function definition to memoized version of DEFINITION."
(declare (doc-string 3) (indent 1))
`(defalias ',symbol
(guix-memoize #',definition)
,(or docstring
(format "Memoized version of `%S'." definition))))
(defvar guix-memoized-font-lock-keywords
(eval-when-compile
`((,(rx "("
(group "guix-memoized-" (or "defun" "defalias"))
symbol-end
(zero-or-more blank)
(zero-or-one
(group (one-or-more (or (syntax word) (syntax symbol))))))
(1 font-lock-keyword-face)
(2 font-lock-function-name-face nil t)))))
(font-lock-add-keywords 'emacs-lisp-mode guix-memoized-font-lock-keywords)
(provide 'guix-utils)
;;; guix-utils.el ends here

View File

@ -1,6 +1,6 @@
;;; guix.el --- Interface for GNU Guix package manager
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
;; Package-Requires: ((geiser "0.3"))
;; Keywords: tools
@ -32,6 +32,7 @@
(require 'guix-list)
(require 'guix-info)
(require 'guix-utils)
(require 'guix-read)
(defgroup guix nil
"Interface for Guix package manager."
@ -193,6 +194,15 @@ Interactively with prefix, prompt for PROFILE."
(float-time from)
(float-time to)))
;;;###autoload
(defun guix-edit (id-or-name)
"Edit (go to location of) package with ID-OR-NAME."
(interactive (list (guix-read-package-name)))
(let ((loc (guix-package-location id-or-name)))
(if loc
(guix-find-location loc)
(message "Couldn't find package location."))))
(provide 'guix)
;;; guix.el ends here

View File

@ -239,6 +239,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/onc-rpc.scm \
gnu/packages/openbox.scm \
gnu/packages/openldap.scm \
gnu/packages/openstack.scm \
gnu/packages/orpheus.scm \
gnu/packages/ots.scm \
gnu/packages/package-management.scm \
@ -416,12 +417,6 @@ dist_patch_DATA = \
gnu/packages/patches/clucene-pkgconfig.patch \
gnu/packages/patches/cmake-fix-tests.patch \
gnu/packages/patches/coreutils-racy-tail-test.patch \
gnu/packages/patches/cpio-CVE-2014-9112-pt1.patch \
gnu/packages/patches/cpio-CVE-2014-9112-pt2.patch \
gnu/packages/patches/cpio-CVE-2014-9112-pt3.patch \
gnu/packages/patches/cpio-CVE-2014-9112-pt4.patch \
gnu/packages/patches/cpio-CVE-2014-9112-pt5.patch \
gnu/packages/patches/cpio-fix-symlink-bad-length-test.patch \
gnu/packages/patches/cpio-gets-undeclared.patch \
gnu/packages/patches/cpufrequtils-fix-aclocal.patch \
gnu/packages/patches/crda-optional-gcrypt.patch \
@ -476,6 +471,7 @@ dist_patch_DATA = \
gnu/packages/patches/glibc-locales.patch \
gnu/packages/patches/glibc-o-largefile.patch \
gnu/packages/patches/gmp-arm-asm-nothumb.patch \
gnu/packages/patches/gnucash-price-quotes-perl.patch \
gnu/packages/patches/gnutls-doc-fix.patch \
gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \
gnu/packages/patches/gobject-introspection-cc.patch \
@ -489,7 +485,9 @@ dist_patch_DATA = \
gnu/packages/patches/guile-arm-fixes.patch \
gnu/packages/patches/guile-default-utf8.patch \
gnu/packages/patches/guile-linux-syscalls.patch \
gnu/packages/patches/guile-present-coding.patch \
gnu/packages/patches/guile-relocatable.patch \
gnu/packages/patches/guile-rsvg-pkgconfig.patch \
gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
gnu/packages/patches/hop-bigloo-4.0b.patch \
gnu/packages/patches/hop-linker-flags.patch \
@ -576,6 +574,7 @@ dist_patch_DATA = \
gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \
gnu/packages/patches/patch-hurd-path-max.patch \
gnu/packages/patches/perl-autosplit-default-time.patch \
gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \
gnu/packages/patches/perl-module-pluggable-search.patch \
gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch \
@ -691,6 +690,7 @@ dist_patch_DATA = \
gnu/packages/patches/xf86-video-trident-remove-mibstore.patch \
gnu/packages/patches/xf86-video-vmware-glibc-2.20.patch \
gnu/packages/patches/xfce4-panel-plugins.patch \
gnu/packages/patches/xfce4-settings-defaults.patch \
gnu/packages/patches/xmodmap-asprintf.patch \
gnu/packages/patches/zathura-plugindir-environment-variable.patch

View File

@ -55,6 +55,9 @@ to ROOT, then make ROOT the new root directory for the process."
(define (scope dir)
(string-append root dir))
(define (touch file-name)
(call-with-output-file file-name (const #t)))
(define (bind-mount src dest)
(mount src dest "none" MS_BIND))
@ -89,8 +92,7 @@ to ROOT, then make ROOT the new root directory for the process."
(for-each (lambda (device)
(when (file-exists? device)
;; Create the mount point file.
(call-with-output-file (scope device)
(const #t))
(touch (scope device))
(bind-mount device (scope device))))
'("/dev/null"
"/dev/zero"
@ -101,6 +103,15 @@ to ROOT, then make ROOT the new root directory for the process."
"/dev/ptmx"
"/dev/fuse"))
;; Setup the container's /dev/console by bind mounting the pseudo-terminal
;; associated with standard input.
(let ((in (current-input-port))
(console (scope "/dev/console")))
(when (isatty? in)
(touch console)
(chmod console #o600)
(bind-mount (ttyname in) console)))
;; Setup standard input/output/error.
(symlink "/proc/self/fd" (scope "/dev/fd"))
(symlink "/proc/self/fd/0" (scope "/dev/stdin"))
@ -151,7 +162,8 @@ host user identifiers to map into the user namespace."
(define (namespaces->bit-mask namespaces)
"Return the number suitable for the 'flags' argument of 'clone' that
corresponds to the symbols in NAMESPACES."
(apply logior SIGCHLD
;; Use the same flags as fork(3) in addition to the namespace flags.
(apply logior SIGCHLD CLONE_CHILD_CLEARTID CLONE_CHILD_SETTID
(map (match-lambda
('mnt CLONE_NEWNS)
('uts CLONE_NEWUTS)

View File

@ -72,7 +72,9 @@ COMPRESS? is true, compress it using GZIP. On success, return OUTPUT."
#:file->header cpio:file->cpio-header*)))
(or (not compress?)
(and (zero? (system* gzip "--best" output))
;; Use '--no-name' so that gzip records neither a file name nor a time
;; stamp in its output.
(and (zero? (system* gzip "--best" "--no-name" output))
(rename-file (string-append output ".gz")
output))
output))

View File

@ -704,9 +704,9 @@ commands and their arguments.")
;; See <http://www.sudo.ws/sudo/license.html>.
(license license:x11)))
(define-public wpa-supplicant-light
(define-public wpa-supplicant-minimal
(package
(name "wpa-supplicant-light")
(name "wpa-supplicant-minimal")
(version "2.4")
(source (origin
(method url-fetch)
@ -796,12 +796,12 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
(license license:bsd-3)))
(define-public wpa-supplicant
(package (inherit wpa-supplicant-light)
(package (inherit wpa-supplicant-minimal)
(name "wpa-supplicant")
(inputs `(("dbus" ,dbus)
,@(package-inputs wpa-supplicant-light)))
,@(package-inputs wpa-supplicant-minimal)))
(arguments
(substitute-keyword-arguments (package-arguments wpa-supplicant-light)
(substitute-keyword-arguments (package-arguments wpa-supplicant-minimal)
((#:phases phases)
`(alist-cons-after
'configure 'configure-for-dbus

View File

@ -55,7 +55,7 @@
`(("wxwidgets" ,wxwidgets-2)
("gtk" ,gtk+-2)
("alsa-lib" ,alsa-lib)
("jack" ,jack-2)
("jack" ,jack-1)
("expat" ,expat)
("ffmpeg" ,ffmpeg)
("lame" ,lame)

View File

@ -1659,14 +1659,14 @@ interface.")
(define-public qsynth
(package
(name "qsynth")
(version "0.3.9")
(version "0.4.0")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://sourceforge/qsynth/qsynth-" version ".tar.gz"))
(sha256
(base32 "08kyn6cl755l9i1grzjx8yi3f8mgiz4gx0hgqad1n0d8yz85087b"))))
(base32 "1chc89v9hcjw3k4rvzakl8g56wv24kh48fzv1gfs4iv8vhyl3j4x"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f)) ; no "check" phase
@ -1689,12 +1689,13 @@ synthesizer written in C++.")
(method url-fetch)
(uri (string-append "https://github.com/Themaister/RSound/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version))
(sha256
(base32 "1wzs40c0k5zpkmm5ffl6c17xmr399sxli7ys0fbb9ib0fd334knx"))))
(build-system gnu-build-system)
(inputs
`(("alsa-lib" ,alsa-lib)
("jack" ,jack-2)
("jack" ,jack-1)
("ao" ,ao)
("libsamplerate" ,libsamplerate)
("openal" ,openal)

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@ -26,6 +27,7 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages acl)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages dejagnu)
@ -35,11 +37,11 @@
#:use-module (gnu packages mcrypt)
#:use-module (gnu packages nettle)
#:use-module (gnu packages pcre)
#:use-module (gnu packages python)
#:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages rsync)
#:use-module (gnu packages ssh)
#:use-module (gnu packages tls)
#:use-module (gnu packages xml))
(define-public duplicity
@ -316,3 +318,37 @@ rsync. Thus you can use rdiff-backup and ssh to securely back a hard drive up
to a remote location, and only the differences will be transmitted. Finally,
rdiff-backup is easy to use and settings have sensible defaults.")
(license license:gpl2+)))
(define-public attic
(package
(name "attic")
(version "0.16")
(source (origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/source/A/Attic/Attic-"
version ".tar.gz"))
(sha256
(base32
"0b5skd36r4c0915lwpkqg5hxm49gls9pprs1b7hc40910wlcsl36"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before
'build 'set-openssl-prefix
(lambda* (#:key inputs #:allow-other-keys)
(setenv "ATTIC_OPENSSL_PREFIX" (assoc-ref inputs "openssl"))
#t)))))
(inputs
`(("acl" ,acl)
("openssl" ,openssl)
("python-llfuse" ,python-llfuse)
("python-msgpack" ,python-msgpack)))
(synopsis "Deduplicating backup program")
(description "Attic is a deduplicating backup program. The main goal of
Attic is to provide an efficient and secure way to backup data. The data
deduplication technique used makes Attic suitable for daily backups since only
changes are stored.")
(home-page "https://attic-backup.org/")
(license license:bsd-3)))

View File

@ -873,6 +873,45 @@ file formats including SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF.")
other types of unwanted sequence from high-throughput sequencing reads.")
(license license:expat)))
(define-public deeptools
(package
(name "deeptools")
(version "1.5.11")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/fidelram/deepTools/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1kaagygcbvjs9sxd9cqmskd02wcfp9imvb735r087w7hwqpvz6fs"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2))
(propagated-inputs
`(("python-scipy" ,python2-scipy)
("python-numpy" ,python2-numpy)
("python-matplotlib" ,python2-matplotlib)
("python-bx-python" ,python2-bx-python)
("python-pysam" ,python2-pysam)))
(native-inputs
`(("python-mock" ,python2-mock) ;for tests
("python-pytz" ,python2-pytz) ;for tests
("python-setuptools" ,python2-setuptools)))
(home-page "https://github.com/fidelram/deepTools")
(synopsis "Tools for normalizing and visualizing deep-sequencing data")
(description
"DeepTools addresses the challenge of handling the large amounts of data
that are now routinely generated from DNA sequencing centers. To do so,
deepTools contains useful modules to process the mapped reads data to create
coverage files in standard bedGraph and bigWig file formats. By doing so,
deepTools allows the creation of normalized coverage files or the comparison
between two files (for example, treatment and control). Finally, using such
normalized and standardized files, multiple visualizations can be created to
identify enrichments with functional annotations of the genome.")
(license license:gpl3+)))
(define-public diamond
(package
(name "diamond")

View File

@ -127,7 +127,7 @@ successful, or false to signal an error."
(synopsis description)
(description #f)
(home-page #f)
(license #f)))
(license gpl3+)))
(define package-with-bootstrap-guile
(memoize

View File

@ -5,6 +5,7 @@
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@ -30,6 +31,7 @@
#:use-module (guix build-system perl)
#:use-module (gnu packages base)
#:use-module (gnu packages perl)
#:use-module (gnu packages valgrind)
#:use-module ((srfi srfi-1) #:select (last)))
(define-public zlib
@ -513,3 +515,35 @@ compression library.")
(description "IO-Compress provides a Perl interface to allow reading and
writing of compressed data created with the zlib and bzip2 libraries.")
(license (package-license perl))))
(define-public lz4
(package
(name "lz4")
(version "131")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/Cyan4973/lz4/archive/"
"r" version ".tar.gz"))
(sha256
(base32 "1vfg305zvj50hwscad24wan9jar6nqj14gdk2hqyr7bb9mhh0kcx"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system gnu-build-system)
(native-inputs `(("valgrind" ,valgrind)))
(arguments
`(#:test-target "test"
#:parallel-tests? #f ; tests fail if run in parallel
#:make-flags (list "CC=gcc"
(string-append "PREFIX=" (assoc-ref %outputs "out")))
#:phases (modify-phases %standard-phases
(delete 'configure))))
(home-page "https://github.com/Cyan4973/lz4")
(synopsis "Compression algorithm focused on speed")
(description "LZ4 is a lossless compression algorithm, providing
compression speed at 400 MB/s per core (0.16 Bytes/cycle). It also features an
extremely fast decoder, with speed in multiple GB/s per core (0.71 Bytes/cycle).
A high compression derivative, called LZ4_HC, is also provided. It trades CPU
time for compression ratio.")
;; The libraries (lz4, lz4hc, and xxhash are BSD licenced. The command
;; line interface programs (lz4, fullbench, fuzzer, datagen) are GPL2+.
(license (list license:bsd-2 license:gpl2+))))

View File

@ -28,29 +28,15 @@
(define-public cpio
(package
(name "cpio")
(version "2.11")
(version "2.12")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/cpio/cpio-"
version ".tar.bz2"))
(sha256
(base32
"1gavgpzqwgkpagjxw72xgxz52y1ifgz0ckqh8g7cckz7jvyhp0mv"))
(patches (map search-patch
'("cpio-CVE-2014-9112-pt1.patch"
"cpio-CVE-2014-9112-pt2.patch"
"cpio-CVE-2014-9112-pt3.patch"
"cpio-CVE-2014-9112-pt4.patch"
"cpio-CVE-2014-9112-pt5.patch"
"cpio-fix-symlink-bad-length-test.patch"
"cpio-gets-undeclared.patch")))))
"0vi9q475h1rki53100zml75vxsykzyhrn70hidy41s5c2rc8r6bh"))))
(build-system gnu-build-system)
;; FIXME: autoconf is needed to run autom4te, to update to test suite
;; after the CVE-2014-9112 patches. Remove this when cpio is
;; updated to post-2.11.
(native-inputs `(("autoconf" ,autoconf)))
(home-page "https://www.gnu.org/software/cpio/")
(synopsis "Manage cpio and tar file archives")
(description

View File

@ -328,11 +328,18 @@ types are supported, as is encryption.")
6 #\0))))))
(list
(string-append
"http://distfiles.gentoo.org/distfiles/"
"/sqlite-autoconf-" numeric-version ".tar.gz")
"https://fossies.org/linux/misc/sqlite-autoconf-"
numeric-version ".tar.gz")
(string-append
"mirror://sourceforge/sqlite.mirror/SQLite%20" version
"/sqlite-autoconf-" numeric-version ".tar.gz"))))
"http://distfiles.gentoo.org/distfiles/"
"/sqlite-autoconf-" numeric-version ".tar.gz"))
;; XXX: As of 2015-09-08, SourceForge is squatting the URL
;; below, returning 200 and showing an advertising page.
;; (string-append
;; "mirror://sourceforge/sqlite.mirror/SQLite%20" version
;; "/sqlite-autoconf-" numeric-version ".tar.gz")
))
(sha256
(base32
"1dnkl4qr1dgaprbyf3jddfiynkhxnin86qabni47wjlc0fnb16gv"))))
@ -740,14 +747,14 @@ similar to BerkeleyDB, LevelDB, etc.")
(define-public redis
(package
(name "redis")
(version "3.0.3")
(version "3.0.4")
(source (origin
(method url-fetch)
(uri (string-append "http://download.redis.io/releases/redis-"
version".tar.gz"))
(sha256
(base32
"19cxdrk380qachw160h1x51mwj7kpkxlggfzfh19bl0nbdkgl20x"))))
"1kqjc4qrasadgnl3cg71x3g5qpw2rilyk4pwl151698rb2nr0pm3"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; tests related to master/slave and replication fail

View File

@ -60,7 +60,7 @@
(define-public calibre
(package
(name "calibre")
(version "2.35.0")
(version "2.37.1")
(source
(origin
(method url-fetch)
@ -69,7 +69,7 @@
version ".tar.xz"))
(sha256
(base32
"13sic0l16myvka8mgpr56h6qlpf1cwx8xlf4acp3qz6gsmz3r23x"))
"0cbpkhchxjz9dz4chkrlgq0q1sjmyp6lm9vrhnm2mwai61kzn25s"))
;; Remove non-free or doubtful code, see
;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html
(modules '((guix build utils)))

View File

@ -310,7 +310,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
(define-public magit
(package
(name "magit")
(version "2.2.1")
(version "2.2.2")
(source (origin
(method url-fetch)
(uri (string-append
@ -318,7 +318,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
version "/" name "-" version ".tar.gz"))
(sha256
(base32
"0bjdj4468i5w3j2i945b6psb6n04z34vhjaqr0iz4xgixk3wiqmh"))))
"1imkj4prprnivhbpdn1mdpiryxkckzy5hbnqaahv7gixwac1irh8"))))
(build-system gnu-build-system)
(native-inputs `(("texinfo" ,texinfo)
("emacs" ,emacs-no-x)))
@ -483,6 +483,82 @@ support for Git-SVN.")
programs.")
(license license:gpl3+)))
(define-public let-alist
(package
(name "emacs-let-alist")
(version "1.0.4")
(source (origin
(method url-fetch)
(uri (string-append "http://elpa.gnu.org/packages/let-alist-"
version ".el"))
(sha256
(base32
"07312bvvyz86lf64vdkxg2l1wgfjl25ljdjwlf1bdzj01c4hm88x"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils)
(guix build emacs-utils))
#:builder (begin
(use-modules (guix build emacs-utils)
(guix build utils))
(let* ((out (assoc-ref %outputs "out"))
(lispdir (string-append out
"/share/emacs/site-lisp/"
"guix.d/let-alist-"
,version))
(emacs (assoc-ref %build-inputs "emacs")))
(mkdir-p lispdir)
(copy-file (assoc-ref %build-inputs "source")
(string-append lispdir "/let-alist.el"))
(setenv "PATH" (string-append emacs "/bin"))
(emacs-byte-compile-directory lispdir)
#t))))
(native-inputs `(("emacs" ,emacs-no-x)))
(home-page "http://elpa.gnu.org/packages/let-alist.html")
(synopsis "Easily let-bind values of an assoc-list by their names")
(description
"This package offers a single Emacs Lisp macro, @code{let-alist}. This
macro takes a first argument, whose value must be an alist (association list),
and a body.
The macro expands to a let form containing the body, where each dotted symbol
inside body is let-bound to their cdrs in the alist. Only those present in
the body are let-bound and this search is done at compile time.")
(license license:gpl3+)))
(define-public flycheck
(package
(name "emacs-flycheck")
(version "0.23")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/flycheck/flycheck/releases/download/"
version "/flycheck-" version ".tar"))
(sha256
(base32
"1n2cifzsl5dbv42l82bi3y1vk6q33msi8dd4bj7b9nvnl9jfjj5b"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-dash" ,emacs-dash)
("emacs-let-alist" ,let-alist)))
(home-page "https://www.flycheck.org")
(synopsis "On-the-fly syntax checking")
(description
"This package provides on-the-fly syntax checking for GNU Emacs. It is a
replacement for the older Flymake extension which is part of GNU Emacs, with
many improvements and additional features.
Flycheck provides fully-automatic, fail-safe, on-the-fly background syntax
checking for over 30 programming and markup languages with more than 70
different tools. It highlights errors and warnings inline in the buffer, and
provides an optional IDE-like error list.")
(license license:gpl3+))) ;+GFDLv1.3+ for the manual
;;;
;;; Web browsing.
@ -989,3 +1065,30 @@ files and directories.")
(description "This package adds support to Org-Babel for evaluating Python
source code using IPython.")
(license license:gpl3+)))
(define-public emacs-debbugs
(package
(name "emacs-debbugs")
(version "0.7")
(source (origin
(method url-fetch)
(uri (string-append "http://elpa.gnu.org/packages/debbugs-"
version ".tar"))
(sha256
(base32
"0pbglx3paa8icazgxlg4jf40wl8war63y9j2jmbb7gbd1xp95v72"))))
(build-system emacs-build-system)
(home-page "http://elpa.gnu.org/packages/debbugs.html")
(synopsis "Access the Debbugs bug tracker in Emacs")
(description
"This package lets you access the @uref{http://bugs.gnu.org,GNU Bug
Tracker} from within Emacs.
For instance, it defines the command @code{M-x debbugs-gnu} for listing bugs,
and the command @code{M-x debbugs-gnu-search} for bug searching. If you
prefer the listing of bugs as TODO items of @code{org-mode}, you could use
@code{M-x debbugs-org} and related commands.
A minor mode @code{debbugs-browse-mode} let you browse URLs to the GNU Bug
Tracker as well as bug identifiers prepared for @code{bug-reference-mode}.")
(license license:gpl3+)))

View File

@ -28,6 +28,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
@ -35,6 +36,7 @@
#:use-module (gnu packages flex)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gd)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
@ -360,3 +362,49 @@ multipole-accelerated algorithm.")
"Fasthenry is an inductance extraction program based on a
multipole-accelerated algorithm.")
(license (license:non-copyleft #f "See induct.c."))))
(define-public gerbv
(package
(name "gerbv")
(version "2.6.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/gerbv/gerbv/gerbv-"
version "/gerbv-" version ".tar.gz"))
(sha256
(base32
"0v6ry0mxi5qym4z0y0lpblxsw9dfjpgxs4c4v2ngg7yw4b3a59ks"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'configure 'autoconf
(lambda _
;; Build rules contain references to Russian translation, but the
;; needed files are missing; see
;; http://sourceforge.net/p/gerbv/bugs/174/
(delete-file "po/LINGUAS")
(substitute* "man/Makefile.am"
(("PO_FILES= gerbv.ru.1.in.po") "")
(("man_MANS = gerbv.1 gerbv.ru.1") "man_MANS = gerbv.1"))
(zero? (system* "autoreconf" "-vfi")))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("gettext" ,gnu-gettext)
("po4a" ,po4a)
("pkg-config" ,pkg-config)))
(inputs
`(("cairo" ,cairo)
("gtk" ,gtk+-2)
("desktop-file-utils" ,desktop-file-utils)))
(home-page "http://gerbv.geda-project.org/")
(synopsis "Gerber file viewer")
(description
"Gerbv is a viewer for files in the Gerber format (RS-274X only), which
is commonly used to represent printed circuit board (PCB) layouts. Gerbv lets
you load several files on top of each other, do measurements on the displayed
image, etc. Besides viewing Gerbers, you may also view Excellon drill files
as well as pick-place files.")
(license license:gpl2+)))

View File

@ -51,14 +51,15 @@
(define-public efl
(package
(name "efl")
(version "1.14.2")
(version "1.15.1")
(source (origin
(method url-fetch)
(uri (string-append
"https://download.enlightenment.org/rel/libs/efl/efl-"
version ".tar.xz"))
(sha256
(base32 "0kg51v63ljq1z4dj65aiyxaqhq54gkl4hx53ifwbci6ihammandr"))))
(base32
"1n2l2n09lys5dph9lrnsv5z3qbgzp7bi0vidal2fvy18hflbbvsn"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@ -127,20 +128,21 @@
for Enlightenment. Libraries covers data serialization, wide support for
graphics rendering, UI layout and themes, interaction with OS, access to
removable devices or support for multimedia.")
(license (list license:bsd-2 license:lgpl2.1 license:zlib)))) ; different parts under different licenses
;; Different parts are under different licenses.
(license (list license:bsd-2 license:lgpl2.1 license:zlib))))
(define-public elementary
(package
(name "elementary")
(version "1.14.2")
(version "1.15.1")
(source (origin
(method url-fetch)
(uri
(string-append
"https://download.enlightenment.org/rel/libs/elementary/elementary-"
version ".tar.xz"))
(string-append "https://download.enlightenment.org/rel/libs/"
"elementary/elementary-" version ".tar.xz"))
(sha256
(base32 "1ck1jm9dfx2l72nklndqjfsxjqb0024b88naskld1dk9b8drs76b"))))
(base32
"015b277bvgb4q8cqjl58ir9nqb1d40fpj2jblf4gkxq8a45a88mb"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@ -157,7 +159,7 @@ full capabilities of EFL.")
(define-public evas-generic-loaders
(package
(name "evas-generic-loaders")
(version "1.14.0")
(version "1.15.0")
(source (origin
(method url-fetch)
(uri
@ -166,7 +168,8 @@ full capabilities of EFL.")
"evas_generic_loaders/evas_generic_loaders-"
version ".tar.xz"))
(sha256
(base32 "18b6xmbf81bly4mlwlzwr17g2m8dzznbhsdjk6pbb3nw4wn3y88l"))))
(base32
"0zzx06j20x580xqnnsxp7gb7rv279zcgvdxfbhs905af9m6rwlqy"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@ -188,15 +191,16 @@ files in Evas (EFL canvas library).")
(define-public emotion-generic-players
(package
(name "emotion-generic-players")
(version "1.14.0")
(version "1.15.0")
(source (origin
(method url-fetch)
(uri
(string-append
"https://download.enlightenment.org/rel/libs/emotion_generic_players/emotion_generic_players-"
version ".tar.xz"))
(string-append "https://download.enlightenment.org/rel/libs/"
"emotion_generic_players/emotion_generic_players"
"-" version ".tar.xz"))
(sha256
(base32 "0685jzag98ykknycfdqn70zif3fmcfi6m8k9yp6d79r1h8gc49n4"))))
(base32
"0pszwmcygxnv1sfx0m79md2jmi4sng8mdb1xcr6h2z5c8685wvcz"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@ -214,15 +218,15 @@ The only supported now is VLC.")
(define-public terminology
(package
(name "terminology")
(version "0.8.0")
(version "0.9.0")
(source (origin
(method url-fetch)
(uri
(string-append
"https://download.enlightenment.org/rel/apps/terminology/terminology-"
version ".tar.gz"))
(string-append "https://download.enlightenment.org/rel/apps/"
"terminology/terminology-" version ".tar.xz"))
(sha256
(base32 "0a767ixackzmhb2awrhjy7q6vsivsd54wc434i617xiw095x843s"))))
(base32
"0iwid9cvd96kwl0hjhbby84kkz5sgb4p8454nnkf7wjvdz2f9b96"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@ -266,15 +270,14 @@ Libraries with some extra bells and whistles.")
(define-public enlightenment
(package
(name "enlightenment")
(version "0.19.5")
(version "0.19.9")
(source (origin
(method url-fetch)
(uri
(string-append
"https://download.enlightenment.org/rel/apps/enlightenment/enlightenment-"
version ".tar.xz"))
(string-append "https://download.enlightenment.org/rel/apps/"
name "/" name "-" version ".tar.xz"))
(sha256
(base32 "0j66x7x76fbgqfw6fi77v8qy50slw3jnsq3vvs82rrfvniabm8wc"))))
(base32 "1ajpyw1bfbmxpniw041vbvrs9wqgzyw9kccx72nnfiy2wxspjcr5"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -29,7 +29,7 @@
(define-public ath9k-htc-firmware
(package
(name "ath9k-htc-firmware")
(version "1.3.2")
(version "1.4.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -37,7 +37,7 @@
(commit version)))
(sha256
(base32
"0dgqfp4cbky79vzjrdy3j462l8figymzrk2v0jalmmz3lkxw88ww"))
"16jbj8avg5jkgvq5lxm0hdxxn4c3zn7fx8b4nxllvr024apk9w23"))
(patches (list (search-patch "ath9k-htc-firmware-objcopy.patch")))))
(build-system gnu-build-system)
(arguments

View File

@ -5,6 +5,7 @@
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -486,3 +487,84 @@ code-points needed for zh_cn, zh_sg, zh_tw, zh_hk, zh_mo, ja (Japanese) and
ko (Korean) locales for fontconfig.")
;; GPLv2 with font embedding exception
(license license:gpl2)))
(define-public font-tex-gyre
(package
(name "font-tex-gyre")
(version "2.005")
(source
(origin
(method url-fetch)
(uri (string-append "http://www.gust.org.pl/projects/e-foundry/"
"tex-gyre/whole/tg-" version "otf.zip"))
(sha256
(base32
"0kph9l3g7jb2bpmxdbdg5zl56wacmnvdvsdn7is1gc750sqvsn31"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let ((unzip (string-append (assoc-ref %build-inputs "unzip")
"/bin/unzip"))
(font-dir (string-append %output "/share/fonts/opentype")))
(mkdir-p font-dir)
(system* unzip
(assoc-ref %build-inputs "source")
"-d" font-dir)))))
(native-inputs
`(("unzip" ,unzip)))
(home-page "http://www.gust.org.pl/projects/e-foundry/tex-gyre/")
(synopsis "Remake of Ghostscript fonts")
(description "The TeX Gyre collection of fonts is the result of an
extensive remake and extension of the freely available base PostScript fonts
distributed with Ghostscript version 4.00. The collection contains the
following fonts in the OpenType format: Adventor, Bonum, Chorus, Cursor,
Heros, Pagella, Schola, Termes.")
(license license:gfl1.0)))
(define-public font-anonymous-pro
(package
(name "font-anonymous-pro")
(version "1.002")
(source (origin
(method url-fetch)
(uri (string-append
"http://www.marksimonson.com/assets/content/fonts/"
"AnonymousPro-" version ".zip"))
(sha256
(base32
"1asj6lykvxh46czbal7ymy2k861zlcdqpz8x3s5bbpqwlm3mhrl6"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let ((unzip (string-append (assoc-ref %build-inputs "unzip")
"/bin/unzip"))
(font-dir (string-append %output "/share/fonts/truetype"))
(doc-dir (string-append %output "/share/doc/" ,name)))
(system* unzip (assoc-ref %build-inputs "source"))
(mkdir-p font-dir)
(mkdir-p doc-dir)
(chdir (string-append "AnonymousPro-" ,version ".001"))
(for-each (lambda (ttf)
(copy-file ttf
(string-append font-dir "/" ttf)))
(find-files "." "\\.ttf$"))
(for-each (lambda (doc)
(copy-file doc
(string-append doc-dir "/" doc)))
(find-files "." "\\.txt$"))))))
(native-inputs
`(("unzip" ,unzip)))
(home-page "http://www.marksimonson.com/fonts/view/anonymous-pro")
(synopsis "Fixed-width fonts designed with coding in mind")
(description "Anonymous Pro is a family of four fixed-width fonts designed
with coding in mind. Anonymous Pro features an international, Unicode-based
character set, with support for most Western and Central European Latin-based
languages, plus Greek and Cyrillic.")
(license license:silofl1.1)))

View File

@ -41,6 +41,7 @@
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg)
#:use-module (gnu packages boost)
#:use-module (gnu packages m4)
#:use-module (gnu packages compression)
#:use-module (gnu packages doxygen)
#:use-module (gnu packages libffi)
@ -130,19 +131,16 @@ the freedesktop.org XDG Base Directory specification.")
(license license:expat)))
(define-public elogind
(let ((commit "14405a9"))
(package
(name "elogind")
(version (string-append "219." commit))
(version "219.12")
(source (origin
(method git-fetch)
(uri (git-reference
(url "http://git.elephly.net/software/elogind.git")
(commit commit)))
(method url-fetch)
(uri (string-append "https://wingolog.org/pub/" name "/"
name "-" version ".tar.xz"))
(sha256
(base32
"1wz5lxj95qg64x2q5hf4zcb35hpxlw3wfswx6sb2srvsg50y3y72"))
(file-name (string-append name "-checkout-" commit))
"13qc4f0dl7ynnfp1y565z2k0jjizly5w3dqhiqkdk7v6jr4pksb7"))
(modules '((guix build utils)))
(snippet
'(begin
@ -154,27 +152,21 @@ the freedesktop.org XDG Base Directory specification.")
(build-system gnu-build-system)
(arguments
`(#:configure-flags
(list
;; pam_elogind fails because of bus-error.c hackery
"--disable-pam"
(string-append "--with-rootprefix=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'autogen
(lambda _
(and (zero? (system* "intltoolize" "--force" "--automake"))
(zero? (system* "autoreconf" "-vif"))))))))
(list (string-append "--with-libcap="
(assoc-ref %build-inputs "libcap"))
(string-append "--with-udevrulesdir="
(assoc-ref %outputs "out")
"/lib/udev/rules.d"))
#:make-flags '("PKTTYAGENT=/run/current-system/profile/bin/pkttyagent")))
(native-inputs
`(("intltool" ,intltool)
("gettext" ,gnu-gettext)
("docbook-xsl" ,docbook-xsl)
("docbook-xml" ,docbook-xml)
("xsltproc" ,libxslt)
("m4" ,m4)
("libxml2" ,libxml2) ;for XML_CATALOG_FILES
("pkg-config", pkg-config)
("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("gperf" ,gperf)))
(inputs
`(("linux-pam" ,linux-pam)
@ -188,7 +180,7 @@ the freedesktop.org XDG Base Directory specification.")
extracted out as a separate project. Elogind integrates with PAM to provide
the org.freedesktop.login1 interface over the system bus, allowing other parts
of a the system to know what users are logged in, and where.")
(license license:lgpl2.1+))))
(license license:lgpl2.1+)))
(define-public python-pyxdg
(package

View File

@ -37,7 +37,8 @@
#:use-module (gnu packages gnome)
#:use-module (gnu packages gtk)
#:use-module (gnu packages sdl)
#:use-module (gnu packages pkg-config))
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages xiph))
(define-public bullet
(package
@ -66,7 +67,7 @@ is used in some video games and movies.")
(define-public tiled
(package
(name "tiled")
(version "0.13.0")
(version "0.13.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/bjorn/tiled/archive/v"
@ -74,7 +75,7 @@ is used in some video games and movies.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1cfdhjwwwnc5fsq53axxyf6vmyy1grkk9ghi58dir68pwf6rlr3n"))))
"057a5cna3vhznpl9hyql2sxz995aprv43r8wva89x4vdphxv04lm"))))
(build-system gnu-build-system)
(inputs `(("qt" ,qt)
("zlib" ,zlib)))
@ -101,14 +102,14 @@ clone.")
(define-public sfml
(package
(name "sfml")
(version "2.2")
(version "2.3.1")
(source (origin
(method url-fetch)
(uri (string-append "http://mirror0.sfml-dev.org/files/SFML-"
version "-sources.zip"))
(sha256
(base32
"1xhkvgyfbhqsjdmfbxvk729kdrzh7kdyagxa3bvpzi6z43mh1frd"))))
"0mjpkgfnz6ka4p0ir219pcqsbdy7gwcjydk7xxmjjfm2k5sw2qys"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f)) ; no tests
@ -117,7 +118,10 @@ clone.")
(inputs
`(("mesa" ,mesa)
("glew" ,glew)
("flac" ,flac)
("libvorbis" ,libvorbis)
("libx11" ,libx11)
("xcb-util-image" ,xcb-util-image)
("libxrandr" ,libxrandr)
("eudev" ,eudev)
("freetype" ,freetype)

View File

@ -576,7 +576,7 @@ for common mesh file formats, and collision detection.")
(define minetest-data
(package
(name "minetest-data")
(version "0.4.12")
(version "0.4.13")
(source (origin
(method url-fetch)
(uri (string-append
@ -585,7 +585,7 @@ for common mesh file formats, and collision detection.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0642vy6r6sv96mz6wbs9qvyr95vd69zj4fxiljdg9801javrmm9p"))))
"04xnyfap75v3p818kpqb07xshqwqzpws5xjvw5m96qnd9x4725ld"))))
(build-system trivial-build-system)
(native-inputs
`(("source" ,source)
@ -617,7 +617,7 @@ for common mesh file formats, and collision detection.")
(define-public minetest
(package
(name "minetest")
(version "0.4.12")
(version "0.4.13")
(source (origin
(method url-fetch)
(uri (string-append
@ -626,7 +626,7 @@ for common mesh file formats, and collision detection.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1pqp8hfwg5wkimig8j5jrihzgjjgplxr24w5xisrxvx1hlvnczdk"))))
"1xzrvsg0fpbj5p4pz6lls11m3ab4y2bnjlsm4gnw68x9006ffznp"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
@ -36,33 +36,47 @@
(define-public gdb
(package
(name "gdb")
(version "7.9.1")
(version "7.10")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gdb/gdb-"
version ".tar.xz"))
(sha256
(base32
"0h5sfg4ndhb8q4fxbq0hdxfjp35n6ih96f6x8yvb418s84x5976d"))))
"1a08c9svaihqmz2mm44il1gwa810gmwkckns8b0y0v3qz52amgby"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; FIXME "make check" fails on single-processor systems.
#:phases (alist-cons-after
`(#:tests? #f ; FIXME "make check" fails on single-processor systems.
#:modules ((srfi srfi-1)
,@%gnu-build-system-modules)
#:phases (modify-phases %standard-phases
(add-after
'configure 'post-configure
(lambda _
(for-each patch-makefile-SHELL
(find-files "." "Makefile\\.in")))
(alist-cons-after
'install 'post-install
(lambda* (#:key outputs #:allow-other-keys)
;; Like Binutils, GDB installs libbfd and libopcodes.
(find-files "." "Makefile\\.in"))))
(add-after
'install 'remove-libs-already-in-binutils
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Like Binutils, GDB installs libbfd, libopcodes, etc.
;; However, this leads to collisions when both are
;; installed, and really is none of its business,
;; conceptually. So remove them.
(for-each delete-file
(find-files (assoc-ref outputs "out")
"^lib(opcodes|bfd)\\.")))
%standard-phases))))
(let* ((binutils (assoc-ref inputs "binutils"))
(out (assoc-ref outputs "out"))
(files1 (with-directory-excursion binutils
(append (find-files "lib")
(find-files "include"))))
(files2 (with-directory-excursion out
(append (find-files "lib")
(find-files "include"))))
(common (lset-intersection string=?
files1 files2)))
(with-directory-excursion out
(for-each delete-file common)
#t)))))))
(inputs
`(("expat" ,expat)
("mpfr" ,mpfr)

View File

@ -25,8 +25,7 @@
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module ((gnu packages ghostscript)
#:select (lcms))
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages compression)
#:use-module (gnu packages xml))

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -18,11 +19,15 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages gettext)
#:use-module ((guix licenses) #:select (gpl3+))
#:use-module ((guix licenses) #:select (gpl2+ gpl3+))
#:use-module (gnu packages)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl)
#:use-module (gnu packages docbook)
#:use-module (gnu packages perl)
#:use-module (gnu packages texlive)
#:use-module (gnu packages xml))
;; Use that name to avoid clashes with Guile's 'gettext' procedure.
@ -91,3 +96,59 @@ with the means to create message catalogs, as well as an Emacs mode to work
with them, and a runtime library to load translated messages from the
catalogs. Nearly all GNU packages use Gettext.")
(license gpl3+))) ;some files are under GPLv2+
(define-public po4a
(package
(name "po4a")
(version "0.47")
(source (origin
(method url-fetch)
(uri (string-append "https://alioth.debian.org/frs/download.php"
"/file/4142/po4a-" version ".tar.gz"))
(sha256
(base32
"01vm0750aq0h2lphrflv3wq9gz7y0py8frglfpacn58ivyvy242h"))))
(build-system perl-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
;; FIXME: One test fails as we don't have SGMLS.pm
(add-before 'check 'disable-sgml-test
(lambda _
(delete-file "t/20-sgml.t")
#t))
(add-after 'unpack 'fix-builder
(lambda* (#:key inputs outputs #:allow-other-keys)
(substitute* "Po4aBuilder.pm"
;; By default it tries to install into perl's manpath.
(("my \\$mandir = .*$")
(string-append "my $mandir = \"" (assoc-ref outputs "out")
"/share/man\";\n")))
#t))
(add-after 'install 'wrap-programs
(lambda* (#:key outputs #:allow-other-keys)
;; Make sure all executables in "bin" find the Perl modules
;; provided by this package at runtime.
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin/"))
(path (string-append out "/lib/perl5/site_perl")))
(for-each (lambda (file)
(wrap-program file
`("PERL5LIB" ":" prefix (,path))))
(find-files bin "\\.*$"))
#t))))))
(native-inputs
`(("gettext" ,gnu-gettext)
("perl-module-build" ,perl-module-build)
("docbook-xsl" ,docbook-xsl)
("docbook-xml" ,docbook-xml) ;for tests
("texlive-bin" ,texlive-bin) ;for tests
("libxml2" ,libxml2)
("xsltproc" ,libxslt)))
(home-page "http://po4a.alioth.debian.org/")
(synopsis "Scripts to ease maintenance of translations")
(description
"The po4a (PO for anything) project goal is to ease translations (and
more interestingly, the maintenance of translations) using gettext tools on
areas where they were not expected like documentation.")
(license gpl2+)))

View File

@ -1912,15 +1912,15 @@ library.")
library.")
(license license:lgpl2.0+)))
(define-public librest
(define-public rest
(package
(name "librest")
(name "rest")
(version "0.7.93")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/rest/"
(version-major+minor version) "/"
"rest-" version ".tar.xz"))
name "-" version ".tar.xz"))
(sha256
(base32
"05mj10hhiik23ai8w4wkk5vhsp7hcv24bih5q3fl82ilam268467"))))
@ -2629,6 +2629,8 @@ without stepping on each others toes.")
(base32
"1b0ikh9q3c3qnny3kbvhqih35449q8ajcbh7zkm8k3kykwfx4scf"))))
(build-system gnu-build-system)
(outputs '("out"
"doc")) ;9 MiB of gtk-doc HTML pages
(native-inputs
`(("glib:bin" ,glib "bin") ; for glib-genmarshal
("gobject-introspection" ,gobject-introspection)
@ -2649,7 +2651,12 @@ without stepping on each others toes.")
`(("libxkbcommon" ,libxkbcommon)
("udev" ,eudev)))
(arguments
`(#:configure-flags '("--enable-x11-backend=yes")
`(#:configure-flags (list "--enable-x11-backend=yes"
;; This produces share/doc/{clutter,cally}.
(string-append "--with-html-dir="
(assoc-ref %outputs "doc")
"/share/doc"))
;; XXX FIXME: Get test suite working. It would probably fail in the
;; same way the cogl tests fail, since clutter is based on cogl.
#:tests? #f))
@ -2720,6 +2727,38 @@ implements the ClutterGstPlayer interface using playbin. Clutter is an Open
GL based interactive canvas library.")
(license license:lgpl2.0+)))
(define-public libchamplain
(package
(name "libchamplain")
(version "0.12.10")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://gnome/sources/libchamplain/0.12/libchamplain-"
version ".tar.xz"))
(sha256
(base32
"019b8scnx7d3wdylmpk9ihzh06w25b63x9cn8nhj6kjx82rcwlxz"))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)))
(propagated-inputs
`(("libsoup" ,libsoup)
("sqlite" ,sqlite)
("clutter" ,clutter)
("clutter-gtk" ,clutter-gtk)
("glib:bin" ,glib "bin") ;glib-mkenums, etc.
("cairo" ,cairo)
("gtk+3" ,gtk+)
("glib" ,glib)))
(home-page "http://projects.gnome.org/libchamplain/")
(synopsis "C library providing a ClutterActor to display maps")
(description
"libchamplain is a C library providing a ClutterActor to display maps.
It also provides a Gtk+ widget to display maps in Gtk+ applications. Python
and Perl bindings are also available. It supports numerous free map sources
such as OpenStreetMap, OpenCycleMap, OpenAerialMap, and Maps for free.")
(license license:lgpl2.1+)))
(define-public gom
(package
(name "gom")
@ -3371,3 +3410,93 @@ principles are simplicity and standards compliance.")
"D-Feet is a D-Bus debugger, which can be used to inspect D-Bus interfaces
of running programs and invoke methods on those interfaces.")
(license license:gpl2+)))
(define-public yelp-xsl
(package
(name "yelp-xsl")
(version "3.16.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(sha256
(base32
"0jhpni4mmfvj3xf57rjm61nc8d0x66hz9gd1ywws5lh39g6fx59j"))))
(build-system gnu-build-system)
(native-inputs
`(("intltool" ,intltool)
("itstool" ,itstool)
("xmllint" ,libxml2)))
(home-page "https://wiki.gnome.org/Apps/Yelp")
(synopsis "XSL stylesheets for Yelp")
(description
"Yelp-xsl contains XSL stylesheets that are used by the yelp help browser
to format Docbook and Mallard documents.")
(license license:gpl2+)))
(define-public yelp
(package
(name "yelp")
(version "3.16.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(sha256
(base32
"1jk7aad1srykhgc3x0hd3q3dnlshmy1ak00alwjzaasxvy6hp0b0"))))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
("intltool" ,intltool)
("itstool" ,itstool)
("pkg-config" ,pkg-config)))
(propagated-inputs
`(("dconf" ,dconf)))
(inputs
`(("libxslt" ,libxslt)
("sqlite" ,sqlite)
("webkitgtk" ,webkitgtk-2.4)
("yelp-xsl" ,yelp-xsl)
;; XXX: need by libwebkitgtk-3.0.la.
("icu4c" ,(@ (gnu packages icu4c) icu4c))))
(home-page "https://wiki.gnome.org/Apps/Yelp")
(synopsis "GNOME help browser")
(description
"Yelp is the help viewer in Gnome. It natively views Mallard, DocBook,
man, info, and HTML documents. It can locate documents according to the
freedesktop.org help system specification.")
(license license:gpl2+)))
(define-public yelp-tools
(package
(name "yelp-tools")
(version "3.16.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(sha256
(base32
"177qzvj5w019isdp41qxqcys2kc4sq2x6dqhqn6l9ipib8a6rxml"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(propagated-inputs
;; Needed by `yelp-build', `yelp-check' or 'yelp.m4'.
`(("itstool" ,itstool)
("xmllint" ,libxml2)
("xsltproc" ,libxslt)))
(inputs
`(("yelp-xsl" ,yelp-xsl)))
(home-page "https://wiki.gnome.org/Apps/Yelp/Tools")
(synopsis "Yelp documentation tools")
(description
"Yelp-tools is a collection of scripts and build utilities to help create,
manage, and publish documentation for Yelp and the web. Most of the heavy
lifting is done by packages like yelp-xsl and itstool. This package just
wraps things up in a developer-friendly way.")
(license license:gpl2+)))

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -27,7 +28,9 @@
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages web)
#:use-module (gnu packages webkit)
#:use-module (gnu packages xml))
@ -42,11 +45,9 @@
version ".tar.bz2"))
(sha256
(base32
"103ir5qg6k8m2mmg9b99c3gn8myxh1gsqyr0mfhmrhqya68wfdr3"))))
"103ir5qg6k8m2mmg9b99c3gn8myxh1gsqyr0mfhmrhqya68wfdr3"))
(patches (list (search-patch "gnucash-price-quotes-perl.patch")))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ;FIXME: failing at /qof/gnc-date/qof print date dmy buff
#:configure-flags '("--disable-dbi")))
(inputs
`(("guile" ,guile-2.0)
("icu4c" ,icu4c)
@ -56,11 +57,46 @@
("libgnomecanvas" ,libgnomecanvas)
("libxml2" ,libxml2)
("libxslt" ,libxslt)
("webkitgtk" ,webkitgtk/gtk+-2)))
("webkitgtk" ,webkitgtk/gtk+-2)
("perl-date-manip" ,perl-date-manip)
("perl-finance-quote" ,perl-finance-quote)))
(native-inputs
`(("glib" ,glib "bin") ; glib-compile-schemas, etc.
("intltool" ,intltool)
("pkg-config" ,pkg-config)))
(arguments
`(#:tests? #f ;FIXME: failing at /qof/gnc-date/qof print date dmy buff
#:configure-flags '("--disable-dbi")
#:phases
(modify-phases %standard-phases
(add-after
'install 'wrap-programs
(lambda* (#:key inputs outputs #:allow-other-keys)
(for-each (lambda (prog)
(wrap-program (string-append (assoc-ref outputs "out")
"/bin/" prog)
`("PERL5LIB" ":" prefix
,(map (lambda (o)
(string-append o "/lib/perl5/site_perl/"
,(package-version perl)))
(if (string=? prog "gnc-fq-helper")
(list
,@(transitive-input-references
'inputs
(map (lambda (l)
(assoc l (inputs)))
'("perl-finance-quote"
"perl-date-manip"))))
(list
,@(transitive-input-references
'inputs
(map (lambda (l)
(assoc l (inputs)))
'("perl-finance-quote")))))))))
'("gnucash"
"gnc-fq-check"
"gnc-fq-helper"
"gnc-fq-dump")))))))
(home-page "https://gnu.org/software/gnucash")
(synopsis "Personal and small business financial accounting software")
(description

View File

@ -193,14 +193,14 @@ compatible to GNU Pth.")
(define-public gnupg
(package
(name "gnupg")
(version "2.1.7")
(version "2.1.8")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnupg/gnupg/gnupg-" version
".tar.bz2"))
(sha256
(base32
"0vl4wzraln0h4db0kfza4l5by5pgfijqplji5n4riv3zsiv3g2n1"))))
"18w14xp0ynzzwpklyplkzbrncds1hly4k2gjx115swch8qgd1f53"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))

View File

@ -203,7 +203,7 @@ for the GStreamer multimedia library.")
("flac" ,flac)
("gdk-pixbuf" ,gdk-pixbuf)
("gst-plugins-base" ,gst-plugins-base)
("jack" ,jack-2)
("jack" ,jack-1)
("libavc1394" ,libavc1394)
("libcaca" ,libcaca)
("libdv" ,libdv)

View File

@ -33,6 +33,8 @@
#:use-module (guix build-system waf)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages autotools)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages docbook)
@ -632,6 +634,92 @@ graphics library with all of the benefits of Scheme: memory management,
exceptions, macros, and a dynamic programming environment.")
(license license:lgpl3+)))
(define-public guile-rsvg
(package
(name "guile-rsvg")
(version "2.18.1")
(source (origin
(method url-fetch)
(uri (string-append "http://wingolog.org/pub/guile-rsvg/"
name "-" version ".tar.gz"))
(sha256
(base32
"136f236iw3yrrz6pkkp1ma9c5mrs5icqha6pnawinqpk892r3jh7"))
(patches (list (search-patch "guile-rsvg-pkgconfig.patch")))
(modules '((guix build utils)))
(snippet
'(substitute* (find-files "." "Makefile\\.am")
(("/share/guile/site")
"/share/guile/site/2.0")))))
(build-system gnu-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(add-before 'configure 'bootstrap
(lambda _
(zero? (system* "autoreconf" "-vfi")))))))
(native-inputs `(("pkg-config" ,pkg-config)
("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("texinfo" ,texinfo)))
(inputs `(("guile" ,guile-2.0)
("librsvg" ,librsvg)
("guile-lib" ,guile-lib))) ;for (unit-test)
(propagated-inputs `(("guile-cairo" ,guile-cairo)))
(synopsis "Render SVG images using Cairo from Guile")
(description
"Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG
images onto Cairo surfaces.")
(home-page "http://wingolog.org/projects/guile-rsvg/")
(license license:lgpl2.1+)))
(define-public guile-present
(package
(name "guile-present")
(version "0.3.0")
(source (origin
(method url-fetch)
(uri (string-append "http://wingolog.org/pub/guile-present/"
"guile-present-" version ".tar.gz"))
(sha256
(base32
"1qam447m05sxxv6x8dlzg7qnyfc4dh8apjw1idpfhpns671gfr6m"))
(patches (list (search-patch "guile-present-coding.patch")))
(modules '((guix build utils)))
(snippet
'(substitute* "Makefile.in"
(("godir = .*$")
"godir = $(moddir)\n")))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-after
'install 'post-install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(guile (assoc-ref inputs "guile")))
(substitute* (find-files bin ".*")
(("guile")
(string-append guile "/bin/guile -L "
out "/share/guile/site/2.0 -C "
out "/share/guile/site/2.0 ")))))
%standard-phases)))
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("guile" ,guile-2.0)))
(propagated-inputs
;; These are used by the (present …) modules.
`(("guile-lib" ,guile-lib)
("guile-cairo" ,guile-cairo)
("guile-rsvg" ,guile-rsvg)))
(home-page "http://wingolog.org/software/guile-present/")
(synopsis "Create SVG or PDF presentations in Guile")
(description
"Guile-Present defines a declarative vocabulary for presentations,
together with tools to render presentation documents as SVG or PDF.
Guile-Present can be used to make presentations programmatically, but also
includes a tools to generate PDF presentations out of Org mode and Texinfo
documents.")
(license license:lgpl3+)))
;;;
;;; C++ bindings.

View File

@ -24,6 +24,10 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system glib-or-gtk)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages databases)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gtk)
@ -34,20 +38,24 @@
(define-public ibus
(package
(name "ibus")
(version "1.5.5")
(version "1.5.11")
(source (origin
(method url-fetch)
(uri (string-append "https://ibus.googlecode.com/files/ibus-"
version ".tar.gz"))
(uri (string-append "https://github.com/ibus/ibus/"
"releases/download/"
version "/ibus-" version ".tar.gz"))
(sha256
(base32
"1v4a9xv2k26g6ggk4282ynfvh68j2r5hg1cdpvnryfa8c2pkdaq2"))))
"1g26llizd26h9sfz4xdq8krhz19hn08pirvfbkk3g89ri8lmm6a9"))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:tests? #f ; tests fail because there's no connection to dbus
#:make-flags
(list "CC=gcc"
(string-append "pyoverridesdir="
(assoc-ref %outputs "out")
"/lib/python2.7/site-packages/gi/overrides/")
(string-append "py2overridesdir="
(assoc-ref %outputs "out")
"/lib/python2.7/site-packages/gi/overrides/"))
#:phases
@ -83,6 +91,10 @@
`(("glib" ,glib "bin") ; for glib-genmarshal
("gobject-introspection" ,gobject-introspection) ; for g-ir-compiler
("pkg-config" ,pkg-config)))
(native-search-paths
(list (search-path-specification
(variable "IBUS_COMPONENT_PATH")
(files '("share/ibus/component")))))
(synopsis "Input method framework")
(description
"IBus is an input framework providing a full-featured and user-friendly
@ -90,3 +102,103 @@ input method user interface. It comes with multilingual input support. It
may also simplify input method development.")
(home-page "http://ibus.googlecode.com/")
(license lgpl2.1+)))
(define-public ibus-libpinyin
(package
(name "ibus-libpinyin")
(version "1.7.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/libpinyin/"
"ibus-libpinyin/archive/" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"080ixx5lih9lr78b061y67dqmiyc7ij87jl1sa26hhs1dr28ihka"))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'configure 'autogen
(lambda _ (and (zero? (system* "intltoolize"))
(zero? (system* "autoreconf" "-vif")))))
(add-after 'wrap-program 'wrap-with-additional-paths
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Make sure 'ibus-setup-libpinyin' runs with the correct
;; PYTHONPATH and GI_TYPELIB_PATH.
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/libexec/ibus-setup-libpinyin")
`("PYTHONPATH" ":" prefix
(,(getenv "PYTHONPATH")
,(string-append (assoc-ref inputs "ibus")
"/lib/girepository-1.0")))
`("GI_TYPELIB_PATH" ":" prefix
(,(string-append (assoc-ref inputs "ibus")
"/lib/girepository-1.0"))))
#t))))))
(inputs
`(("ibus" ,ibus)
("libpinyin" ,libpinyin)
("bdb" ,bdb)
("sqlite" ,sqlite)
("python" ,python-2)
("pyxdg" ,python2-pyxdg)))
(native-inputs
`(("pkg-config" ,pkg-config)
("intltool" ,intltool)
("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)))
(synopsis "Chinese Pinyin and ZhuYin input methods for IBus")
(description
"This package includes a Chinese Pinyin input method and a Chinese
ZhuYin (Bopomofo) input method based on libpinyin for IBus.")
(home-page "https://github.com/libpinyin/ibus-libpinyin")
(license gpl2+)))
(define-public libpinyin
(package
(name "libpinyin")
(version "1.2.0")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/libpinyin/libpinyin/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"04didxd39vlry6nqy7xqynwc68ndajnhw334wahfmp7zjbbscs7p"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'configure 'autogen
(lambda _ (zero? (system* "autoreconf" "-vif"))))
(add-after 'unpack 'unpack-model
(lambda* (#:key inputs #:allow-other-keys)
(zero? (system* "tar" "-xvf"
(assoc-ref inputs "model")
"-C" "data")))))))
(inputs
`(("glib" ,glib)
("bdb" ,bdb)
("model"
,(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/libpinyin/"
"models/model10.text.tar.gz"))
(sha256
(base32
"0g489wqcfklxphhxpkh8i4qf9y8scmnmdbfrzdbrgf3rignbwyiw"))))))
(native-inputs
`(("pkg-config" ,pkg-config)
("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)))
(synopsis "Library to handle Chinese Pinyin")
(description
"The libpinyin C++ library provides algorithms needed for sentence-based
Chinese pinyin input methods.")
(home-page "https://github.com/libpinyin/libpinyin")
(license gpl2+)))

View File

@ -31,6 +31,7 @@
#:use-module (gnu packages fontutils)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gl)
#:use-module (gnu packages graphics)
#:use-module (gnu packages maths)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
@ -132,7 +133,7 @@ Included are a library, libtiff, for reading and writing TIFF and a small
collection of tools for doing simple manipulations of TIFF images.")
(license (license:non-copyleft "file://COPYRIGHT"
"See COPYRIGHT in the distribution."))
(home-page "http://www.libtiff.org/")))
(home-page "http://www.remotesensing.org/libtiff/")))
(define-public libwmf
(package
@ -508,9 +509,12 @@ graphics image formats like PNG, BMP, JPEG, TIFF and others.")
("fftw" ,fftw)
("fftwf" ,fftwf)
("hdf5" ,hdf5)
("ilmbase" ,ilmbase) ; propagated by openexr, but needed explicitly
; to create a configure-flag
("libjpeg" ,libjpeg)
("libpng" ,libpng)
("libtiff" ,libtiff)
("openexr" ,openexr)
("python" ,python-2) ; print syntax
("python2-numpy" ,python2-numpy)
("zlib" ,zlib)))
@ -524,7 +528,15 @@ graphics image formats like PNG, BMP, JPEG, TIFF and others.")
(list "-Wno-dev" ; suppress developer mode with lots of warnings
(string-append "-DVIGRANUMPY_INSTALL_DIR="
(assoc-ref %outputs "out")
"/lib/python2.7/site-packages"))))
"/lib/python2.7/site-packages")
;; OpenEXR is not enabled by default.
"-DWITH_OPENEXR=1"
;; The header files of ilmbase are not found when included
;; by the header files of openexr, and an explicit flag
;; needs to be set.
(string-append "-DCMAKE_CXX_FLAGS=-I"
(assoc-ref %build-inputs "ilmbase")
"/include/OpenEXR"))))
(synopsis "Computer vision library")
(description
"VIGRA stands for Vision with Generic Algorithms. It is an image

View File

@ -18,7 +18,8 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages libcanberra)
#:use-module ((guix licenses) #:select (lgpl2.1+))
#:use-module ((guix licenses)
#:select (lgpl2.1+ gpl2 gpl2+ cc-by-sa4.0 cc-by3.0))
#:use-module (gnu packages)
#:use-module (guix packages)
#:use-module (guix download)
@ -112,5 +113,8 @@ null) and is designed to be portable.")
(description
"This package provides audio samples that can be used by libcanberra as
sounds for various system events.")
(license #f)
;; The license of the various sounds is given in the 'CREDITS' file.
(license (list cc-by-sa4.0 cc-by3.0 gpl2 gpl2+))
(home-page "http://www.freedesktop.org/wiki/Specifications/sound-theme-spec/")))

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -26,7 +27,7 @@
(define-public libedit
(package
(name "libedit")
(version "20141030-3.1")
(version "20150325-3.1")
(source
(origin
(method url-fetch)
@ -34,8 +35,9 @@
"/" name "-" version ".tar.gz"))
(sha256
(base32
"0h2svwfcdldpbg0fy7fnkld706r2a9k9h1mm0yj7z3zvf1jy20cp"))))
"1if8zi9h52m80ck796an28rrqfljk2n8cn25m3fl0prwz155x2n8"))))
(build-system gnu-build-system)
(arguments `(#:configure-flags (list "--enable-widec")))
(inputs
`(("ncurses" ,ncurses)))
(home-page "http://thrysoee.dk/editline/")

View File

@ -2,6 +2,7 @@
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -25,9 +26,13 @@
#:use-module (guix utils)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system glib-or-gtk)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages gtk)
#:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config))
#:use-module (gnu packages mp3)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages xiph))
(define-public libusb
(package
@ -116,3 +121,37 @@ proposed for standardization.")
;; Foundation; either version 2 of the License, or (at your option) any
;; later version."
(license lgpl2.1+)))
(define-public gmtp
(package
(name "gmtp")
(version "1.3.9")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/gmtp/" version
"/gmtp-" version ".tar.gz"))
(sha256
(base32
"0bdxvi0jf3q870a39xzsaj4qrjwc9b5bgvc95plc7xb6vf2m7zsv"))))
(build-system glib-or-gtk-build-system)
(arguments
'(#:configure-flags
(let ((libid3tag (assoc-ref %build-inputs "libid3tag")))
(list
;; libid3tag provides no .pc file, so pkg-config fails to find them.
(string-append "ID3TAG_CFLAGS=-I" libid3tag "/include")
(string-append "ID3TAG_LIBS=-L" libid3tag "/lib -lid3tag -lz")))))
(inputs
`(("gtk+" ,gtk+)
("flac" ,flac)
("libvorbis" ,libvorbis)
("libid3tag" ,libid3tag)
("libmtp" ,libmtp)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(home-page "http://gmtp.sourceforge.net/")
(synopsis "Simple graphical MTP client")
(description "gMTP is a simple graphical client for the Media Transfer Protocol
(MTP), which allows media files to be transferred to and from many portable
devices.")
(license bsd-3)))

View File

@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 4.1.0-gnu Kernel Configuration
# Linux/x86 4.2.0-gnu Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
@ -34,7 +34,6 @@ CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_HAVE_INTEL_TXT=y
CONFIG_X86_32_SMP=y
CONFIG_X86_HT=y
CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_FIX_EARLYCON_MEM=y
@ -83,11 +82,12 @@ CONFIG_AUDIT_TREE=y
#
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_GENERIC_IRQ_CHIP=y
CONFIG_IRQ_DOMAIN=y
CONFIG_IRQ_DOMAIN_HIERARCHY=y
CONFIG_GENERIC_MSI_IRQ=y
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y
@ -126,15 +126,11 @@ CONFIG_TASK_IO_ACCOUNTING=y
# RCU Subsystem
#
CONFIG_TREE_RCU=y
# CONFIG_RCU_EXPERT is not set
CONFIG_SRCU=y
# CONFIG_TASKS_RCU is not set
CONFIG_RCU_STALL_COMMON=y
CONFIG_RCU_FANOUT=32
CONFIG_RCU_FANOUT_LEAF=16
# CONFIG_RCU_FANOUT_EXACT is not set
CONFIG_RCU_FAST_NO_HZ=y
# CONFIG_TREE_RCU_TRACE is not set
CONFIG_RCU_KTHREAD_PRIO=0
# CONFIG_RCU_NOCB_CPU is not set
# CONFIG_RCU_EXPEDITE_BOOT is not set
CONFIG_BUILD_BIN2C=y
@ -162,6 +158,7 @@ CONFIG_CFS_BANDWIDTH=y
# CONFIG_RT_GROUP_SCHED is not set
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
CONFIG_CGROUP_WRITEBACK=y
CONFIG_CHECKPOINT_RESTORE=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
@ -251,6 +248,7 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_ATTRS=y
CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_CLK=y
CONFIG_HAVE_DMA_API_DEBUG=y
@ -278,6 +276,7 @@ CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
CONFIG_HAVE_ARCH_HUGE_VMAP=y
CONFIG_MODULES_USE_ELF_REL=y
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
CONFIG_HAVE_COPY_THREAD_TLS=y
CONFIG_CLONE_BACKWARDS=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_OLD_SIGACTION=y
@ -299,6 +298,7 @@ CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_MODULE_SIG is not set
# CONFIG_MODULE_COMPRESS is not set
CONFIG_MODULES_TREE_LOOKUP=y
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
@ -312,13 +312,7 @@ CONFIG_BLK_CMDLINE_PARSER=y
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
CONFIG_ACORN_PARTITION=y
CONFIG_ACORN_PARTITION_CUMANA=y
CONFIG_ACORN_PARTITION_EESOX=y
CONFIG_ACORN_PARTITION_ICS=y
CONFIG_ACORN_PARTITION_ADFS=y
CONFIG_ACORN_PARTITION_POWERTEC=y
CONFIG_ACORN_PARTITION_RISCIX=y
# CONFIG_ACORN_PARTITION is not set
CONFIG_AIX_PARTITION=y
CONFIG_OSF_PARTITION=y
CONFIG_AMIGA_PARTITION=y
@ -353,7 +347,6 @@ CONFIG_DEFAULT_IOSCHED="deadline"
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_PADATA=y
CONFIG_ASN1=y
CONFIG_UNINLINE_SPIN_UNLOCK=y
CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
CONFIG_INLINE_READ_UNLOCK=y
CONFIG_INLINE_READ_UNLOCK_IRQ=y
@ -363,8 +356,10 @@ CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
CONFIG_RWSEM_SPIN_ON_OWNER=y
CONFIG_LOCK_SPIN_ON_OWNER=y
CONFIG_ARCH_USE_QUEUE_RWLOCK=y
CONFIG_QUEUE_RWLOCK=y
CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
CONFIG_QUEUED_SPINLOCKS=y
CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
CONFIG_QUEUED_RWLOCKS=y
CONFIG_FREEZER=y
#
@ -541,7 +536,9 @@ CONFIG_ZSMALLOC=y
CONFIG_PGTABLE_MAPPING=y
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_GENERIC_EARLY_IOREMAP=y
# CONFIG_X86_PMEM_LEGACY is not set
CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
CONFIG_X86_PMEM_LEGACY=y
CONFIG_HIGHPTE=y
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
@ -612,6 +609,7 @@ CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
CONFIG_ACPI_SLEEP=y
# CONFIG_ACPI_PROCFS_POWER is not set
CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
CONFIG_ACPI_EC_DEBUGFS=m
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
@ -638,6 +636,8 @@ CONFIG_ACPI_HED=y
# CONFIG_ACPI_CUSTOM_METHOD is not set
CONFIG_ACPI_BGRT=y
# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set
CONFIG_ACPI_NFIT=m
# CONFIG_ACPI_NFIT_DEBUG is not set
CONFIG_HAVE_ACPI_APEI=y
CONFIG_HAVE_ACPI_APEI_NMI=y
CONFIG_ACPI_APEI=y
@ -738,7 +738,9 @@ CONFIG_PCIEASPM_DEFAULT=y
# CONFIG_PCIEASPM_POWERSAVE is not set
# CONFIG_PCIEASPM_PERFORMANCE is not set
CONFIG_PCIE_PME=y
CONFIG_PCI_BUS_ADDR_T_64BIT=y
CONFIG_PCI_MSI=y
CONFIG_PCI_MSI_IRQ_DOMAIN=y
# CONFIG_PCI_DEBUG is not set
CONFIG_PCI_REALLOC_ENABLE_AUTO=y
CONFIG_PCI_STUB=m
@ -826,6 +828,7 @@ CONFIG_COREDUMP=y
CONFIG_HAVE_ATOMIC_IOMAP=y
CONFIG_PMC_ATOM=y
CONFIG_NET=y
CONFIG_NET_INGRESS=y
#
# Networking options
@ -869,7 +872,7 @@ CONFIG_NET_IPVTI=m
CONFIG_NET_UDP_TUNNEL=m
CONFIG_NET_FOU=m
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_GENEVE=m
CONFIG_GENEVE_CORE=m
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
@ -896,6 +899,7 @@ CONFIG_TCP_CONG_VENO=m
CONFIG_TCP_CONG_YEAH=m
CONFIG_TCP_CONG_ILLINOIS=m
CONFIG_TCP_CONG_DCTCP=m
CONFIG_TCP_CONG_CDG=m
CONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="cubic"
@ -937,6 +941,7 @@ CONFIG_BRIDGE_NETFILTER=m
#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_INGRESS=y
CONFIG_NETFILTER_NETLINK=m
CONFIG_NETFILTER_NETLINK_ACCT=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
@ -984,6 +989,7 @@ CONFIG_NF_NAT_REDIRECT=m
CONFIG_NETFILTER_SYNPROXY=m
CONFIG_NF_TABLES=m
CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m
CONFIG_NFT_CT=m
@ -1382,6 +1388,7 @@ CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_FLOW=m
CONFIG_NET_CLS_CGROUP=m
CONFIG_NET_CLS_BPF=m
CONFIG_NET_CLS_FLOWER=m
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
@ -1594,8 +1601,10 @@ CONFIG_BT_DEBUGFS=y
#
CONFIG_BT_INTEL=m
CONFIG_BT_BCM=m
CONFIG_BT_RTL=m
CONFIG_BT_HCIBTUSB=m
CONFIG_BT_HCIBTUSB_BCM=y
CONFIG_BT_HCIBTUSB_RTL=y
CONFIG_BT_HCIBTSDIO=m
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
@ -1654,6 +1663,7 @@ CONFIG_MAC80211_LEDS=y
CONFIG_MAC80211_DEBUGFS=y
CONFIG_MAC80211_MESSAGE_TRACING=y
# CONFIG_MAC80211_DEBUG_MENU is not set
CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
CONFIG_WIMAX=m
CONFIG_WIMAX_DEBUG_LEVEL=8
CONFIG_RFKILL=y
@ -1676,6 +1686,7 @@ CONFIG_NFC=m
CONFIG_NFC_DIGITAL=m
CONFIG_NFC_NCI=m
CONFIG_NFC_NCI_SPI=y
CONFIG_NFC_NCI_UART=m
CONFIG_NFC_HCI=m
CONFIG_NFC_SHDLC=y
@ -1696,10 +1707,11 @@ CONFIG_NFC_MICROREAD_I2C=m
CONFIG_NFC_MICROREAD_MEI=m
CONFIG_NFC_MRVL=m
CONFIG_NFC_MRVL_USB=m
CONFIG_NFC_MRVL_UART=m
CONFIG_NFC_ST21NFCA=m
CONFIG_NFC_ST21NFCA_I2C=m
CONFIG_NFC_ST21NFCB=m
CONFIG_NFC_ST21NFCB_I2C=m
CONFIG_NFC_ST_NCI=m
CONFIG_NFC_ST_NCI_I2C=m
CONFIG_NFC_NXP_NCI=m
CONFIG_NFC_NXP_NCI_I2C=m
@ -1885,6 +1897,7 @@ CONFIG_MTD_UBI_BEB_LIMIT=20
CONFIG_MTD_UBI_FASTMAP=y
CONFIG_MTD_UBI_GLUEBI=m
CONFIG_MTD_UBI_BLOCK=y
# CONFIG_OF is not set
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
@ -1942,7 +1955,6 @@ CONFIG_PARIDE_ON26=m
CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
CONFIG_ZRAM=m
CONFIG_ZRAM_LZ4_COMPRESS=y
# CONFIG_ZRAM_DEBUG is not set
CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_CISS_SCSI_TAPE=y
CONFIG_BLK_DEV_DAC960=m
@ -1961,7 +1973,6 @@ CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=65536
CONFIG_BLK_DEV_RAM_DAX=y
CONFIG_BLK_DEV_PMEM=m
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@ -2044,6 +2055,10 @@ CONFIG_VMWARE_VMCI=m
# Intel MIC Bus Driver
#
#
# SCIF Bus Driver
#
#
# Intel MIC Host Driver
#
@ -2051,8 +2066,13 @@ CONFIG_VMWARE_VMCI=m
#
# Intel MIC Card Driver
#
#
# SCIF Driver
#
CONFIG_ECHO=m
# CONFIG_CXL_BASE is not set
# CONFIG_CXL_KERNEL_API is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
@ -2158,6 +2178,8 @@ CONFIG_LIBFC=m
CONFIG_LIBFCOE=m
CONFIG_FCOE=m
CONFIG_FCOE_FNIC=m
CONFIG_SCSI_SNIC=m
# CONFIG_SCSI_SNIC_DEBUG_FS is not set
CONFIG_SCSI_DMX3191D=m
CONFIG_SCSI_DTC3280=m
CONFIG_SCSI_EATA=m
@ -2356,6 +2378,7 @@ CONFIG_DM_SNAPSHOT=m
CONFIG_DM_THIN_PROVISIONING=m
CONFIG_DM_CACHE=m
CONFIG_DM_CACHE_MQ=m
CONFIG_DM_CACHE_SMQ=m
CONFIG_DM_CACHE_CLEANER=m
CONFIG_DM_ERA=m
CONFIG_DM_MIRROR=m
@ -2417,6 +2440,7 @@ CONFIG_MACVLAN=m
CONFIG_MACVTAP=m
CONFIG_IPVLAN=m
CONFIG_VXLAN=m
CONFIG_GENEVE=m
CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_NETPOLL=y
@ -2426,6 +2450,7 @@ CONFIG_RIONET=m
CONFIG_RIONET_TX_SIZE=128
CONFIG_RIONET_RX_SIZE=128
CONFIG_TUN=y
# CONFIG_TUN_VNET_CROSS_LE is not set
CONFIG_VETH=m
CONFIG_VIRTIO_NET=y
CONFIG_NLMON=m
@ -2485,6 +2510,7 @@ CONFIG_VHOST_NET=m
CONFIG_VHOST_SCSI=m
CONFIG_VHOST_RING=m
CONFIG_VHOST=m
# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
#
# Distributed Switch Architecture drivers
@ -2536,6 +2562,7 @@ CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_NET_VENDOR_BROCADE=y
CONFIG_BNA=m
CONFIG_NET_VENDOR_CAVIUM=m
CONFIG_NET_VENDOR_CHELSIO=y
CONFIG_CHELSIO_T1=m
CONFIG_CHELSIO_T1_1G=y
@ -2570,7 +2597,9 @@ CONFIG_SUNDANCE=m
# CONFIG_SUNDANCE_MMIO is not set
CONFIG_NET_VENDOR_EMULEX=y
CONFIG_BE2NET=m
CONFIG_BE2NET_HWMON=y
CONFIG_BE2NET_VXLAN=y
CONFIG_NET_VENDOR_EZCHIP=y
CONFIG_NET_VENDOR_EXAR=y
CONFIG_S2IO=m
CONFIG_VXGE=m
@ -2618,6 +2647,7 @@ CONFIG_MLX4_EN_VXLAN=y
CONFIG_MLX4_CORE=m
CONFIG_MLX4_DEBUG=y
CONFIG_MLX5_CORE=m
CONFIG_MLX5_CORE_EN=y
CONFIG_NET_VENDOR_MICREL=y
CONFIG_KS8842=m
CONFIG_KS8851=m
@ -2667,6 +2697,7 @@ CONFIG_8139TOO_PIO=y
CONFIG_8139TOO_8129=y
# CONFIG_8139_OLD_RX_RESET is not set
CONFIG_R8169=m
CONFIG_NET_VENDOR_RENESAS=y
CONFIG_NET_VENDOR_RDC=y
CONFIG_R6040=m
CONFIG_NET_VENDOR_ROCKER=y
@ -2682,6 +2713,7 @@ CONFIG_SFC=m
CONFIG_SFC_MTD=y
CONFIG_SFC_MCDI_MON=y
CONFIG_SFC_SRIOV=y
CONFIG_SFC_MCDI_LOGGING=y
CONFIG_NET_VENDOR_SMSC=y
CONFIG_SMC9194=m
CONFIG_PCMCIA_SMC91C92=m
@ -2692,6 +2724,7 @@ CONFIG_SMSC9420=m
CONFIG_NET_VENDOR_STMICRO=y
CONFIG_STMMAC_ETH=m
CONFIG_STMMAC_PLATFORM=m
CONFIG_DWMAC_GENERIC=m
# CONFIG_STMMAC_PCI is not set
CONFIG_NET_VENDOR_SUN=y
CONFIG_HAPPYMEAL=m
@ -2744,6 +2777,7 @@ CONFIG_NATIONAL_PHY=m
CONFIG_STE10XP=m
CONFIG_LSI_ET1011C_PHY=m
CONFIG_MICREL_PHY=m
CONFIG_DP83867_PHY=m
CONFIG_FIXED_PHY=y
CONFIG_MDIO_BITBANG=m
CONFIG_MDIO_GPIO=m
@ -3003,6 +3037,8 @@ CONFIG_RT2X00_LIB_CRYPTO=y
CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_LIB_DEBUGFS is not set
# CONFIG_RT2X00_DEBUG is not set
CONFIG_WL_MEDIATEK=y
CONFIG_MT7601U=m
CONFIG_RTL_CARDS=m
CONFIG_RTL8192CE=m
CONFIG_RTL8192SE=m
@ -3083,6 +3119,7 @@ CONFIG_IEEE802154_FAKELB=m
CONFIG_IEEE802154_AT86RF230=m
CONFIG_IEEE802154_MRF24J40=m
CONFIG_IEEE802154_CC2520=m
CONFIG_IEEE802154_ATUSB=m
CONFIG_XEN_NETDEV_FRONTEND=y
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_VMXNET3=m
@ -3239,6 +3276,7 @@ CONFIG_ISDN_HDLC=m
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_LEDS=m
CONFIG_INPUT_FF_MEMLESS=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_SPARSEKMAP=m
@ -3394,6 +3432,7 @@ CONFIG_TOUCHSCREEN_TOUCHWIN=m
CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m
CONFIG_TOUCHSCREEN_UCB1400=m
CONFIG_TOUCHSCREEN_PIXCIR=m
CONFIG_TOUCHSCREEN_WDT87XX_I2C=m
CONFIG_TOUCHSCREEN_WM831X=m
CONFIG_TOUCHSCREEN_WM97XX=m
CONFIG_TOUCHSCREEN_WM9705=y
@ -3474,6 +3513,7 @@ CONFIG_INPUT_PWM_BEEPER=m
CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
CONFIG_INPUT_DA9052_ONKEY=m
CONFIG_INPUT_DA9055_ONKEY=m
CONFIG_INPUT_DA9063_ONKEY=m
CONFIG_INPUT_WM831X_ON=m
CONFIG_INPUT_PCAP=m
CONFIG_INPUT_ADXL34X=m
@ -3486,6 +3526,7 @@ CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_DRV260X_HAPTICS=m
CONFIG_INPUT_DRV2665_HAPTICS=m
CONFIG_INPUT_DRV2667_HAPTICS=m
#
@ -3581,7 +3622,10 @@ CONFIG_CONSOLE_POLL=y
CONFIG_SERIAL_JSM=m
CONFIG_SERIAL_SCCNXP=y
CONFIG_SERIAL_SCCNXP_CONSOLE=y
CONFIG_SERIAL_SC16IS7XX_CORE=m
CONFIG_SERIAL_SC16IS7XX=m
CONFIG_SERIAL_SC16IS7XX_I2C=y
CONFIG_SERIAL_SC16IS7XX_SPI=y
CONFIG_SERIAL_TIMBERDALE=m
CONFIG_SERIAL_ALTERA_JTAGUART=m
CONFIG_SERIAL_ALTERA_UART=m
@ -3774,6 +3818,7 @@ CONFIG_SPI_SC18IS602=m
CONFIG_SPI_TOPCLIFF_PCH=m
CONFIG_SPI_XCOMM=m
# CONFIG_SPI_XILINX is not set
CONFIG_SPI_ZYNQMP_GQSPI=m
CONFIG_SPI_DESIGNWARE=m
CONFIG_SPI_DW_PCI=m
CONFIG_SPI_DW_MID_DMA=y
@ -3969,6 +4014,7 @@ CONFIG_BATTERY_BQ27X00_PLATFORM=y
CONFIG_BATTERY_DA9030=m
CONFIG_BATTERY_DA9052=m
CONFIG_CHARGER_DA9150=m
CONFIG_AXP288_CHARGER=m
CONFIG_AXP288_FUEL_GAUGE=m
CONFIG_BATTERY_MAX17040=m
CONFIG_BATTERY_MAX17042=m
@ -3990,11 +4036,14 @@ CONFIG_CHARGER_MAX8997=m
CONFIG_CHARGER_MAX8998=m
CONFIG_CHARGER_BQ2415X=m
CONFIG_CHARGER_BQ24190=m
CONFIG_CHARGER_BQ24257=m
CONFIG_CHARGER_BQ24735=m
CONFIG_CHARGER_BQ25890=m
CONFIG_CHARGER_SMB347=m
CONFIG_CHARGER_TPS65090=m
CONFIG_BATTERY_GAUGE_LTC2941=m
CONFIG_BATTERY_RT5033=m
CONFIG_CHARGER_RT9455=m
CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_RESTART=y
CONFIG_POWER_AVS=y
@ -4032,6 +4081,7 @@ CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_ATXP1=m
CONFIG_SENSORS_DS620=m
CONFIG_SENSORS_DS1621=m
CONFIG_SENSORS_DELL_SMM=m
CONFIG_SENSORS_DA9052_ADC=m
CONFIG_SENSORS_DA9055=m
CONFIG_SENSORS_I5K_AMB=m
@ -4134,6 +4184,7 @@ CONFIG_SENSORS_ADS7871=m
CONFIG_SENSORS_AMC6821=m
CONFIG_SENSORS_INA209=m
CONFIG_SENSORS_INA2XX=m
CONFIG_SENSORS_TC74=m
CONFIG_SENSORS_THMC50=m
CONFIG_SENSORS_TMP102=m
CONFIG_SENSORS_TMP103=m
@ -4164,16 +4215,20 @@ CONFIG_SENSORS_ACPI_POWER=m
CONFIG_SENSORS_ATK0110=m
CONFIG_THERMAL=y
CONFIG_THERMAL_HWMON=y
CONFIG_THERMAL_WRITABLE_TRIPS=y
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
CONFIG_THERMAL_GOV_FAIR_SHARE=y
CONFIG_THERMAL_GOV_STEP_WISE=y
CONFIG_THERMAL_GOV_BANG_BANG=y
CONFIG_THERMAL_GOV_USER_SPACE=y
CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
CONFIG_THERMAL_EMULATION=y
CONFIG_INTEL_POWERCLAMP=m
CONFIG_X86_PKG_TEMP_THERMAL=m
CONFIG_INTEL_SOC_DTS_IOSF_CORE=m
CONFIG_INTEL_SOC_DTS_THERMAL=m
CONFIG_INT340X_THERMAL=m
CONFIG_ACPI_THERMAL_REL=m
@ -4200,6 +4255,7 @@ CONFIG_CADENCE_WATCHDOG=m
CONFIG_DW_WATCHDOG=m
CONFIG_RN5T618_WATCHDOG=m
CONFIG_TWL4030_WATCHDOG=m
CONFIG_MAX63XX_WATCHDOG=m
CONFIG_RETU_WATCHDOG=m
CONFIG_ACQUIRE_WDT=m
CONFIG_ADVANTECH_WDT=m
@ -4306,6 +4362,7 @@ CONFIG_MFD_BCM590XX=m
CONFIG_MFD_AXP20X=y
CONFIG_MFD_CROS_EC=m
CONFIG_MFD_CROS_EC_I2C=m
CONFIG_MFD_CROS_EC_SPI=m
CONFIG_PMIC_DA903X=y
CONFIG_PMIC_DA9052=y
CONFIG_MFD_DA9052_SPI=y
@ -4451,6 +4508,7 @@ CONFIG_REGULATOR_PCAP=m
CONFIG_REGULATOR_PCF50633=m
CONFIG_REGULATOR_PFUZE100=m
CONFIG_REGULATOR_PWM=m
CONFIG_REGULATOR_QCOM_SPMI=m
CONFIG_REGULATOR_RC5T583=m
CONFIG_REGULATOR_RN5T618=m
CONFIG_REGULATOR_RT5033=m
@ -4494,6 +4552,7 @@ CONFIG_VIDEO_V4L2=m
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_TUNER=m
CONFIG_V4L2_MEM2MEM_DEV=m
CONFIG_V4L2_FLASH_LED_CLASS=m
CONFIG_VIDEOBUF_GEN=m
CONFIG_VIDEOBUF_DMA_SG=m
CONFIG_VIDEOBUF_VMALLOC=m
@ -4733,6 +4792,7 @@ CONFIG_VIDEO_HEXIUM_ORION=m
CONFIG_VIDEO_MXB=m
CONFIG_VIDEO_SOLO6X10=m
CONFIG_VIDEO_TW68=m
CONFIG_VIDEO_DT3155=m
#
# Media capture/analog/hybrid TV support
@ -4758,6 +4818,7 @@ CONFIG_VIDEO_SAA7134_RC=y
CONFIG_VIDEO_SAA7134_DVB=m
CONFIG_VIDEO_SAA7134_GO7007=m
CONFIG_VIDEO_SAA7164=m
CONFIG_VIDEO_COBALT=m
#
# Media digital TV PCI Adapters
@ -4895,6 +4956,8 @@ CONFIG_VIDEO_SAA6588=m
# Video decoders
#
CONFIG_VIDEO_ADV7180=m
CONFIG_VIDEO_ADV7604=m
CONFIG_VIDEO_ADV7842=m
CONFIG_VIDEO_BT819=m
CONFIG_VIDEO_BT856=m
CONFIG_VIDEO_BT866=m
@ -4920,6 +4983,7 @@ CONFIG_VIDEO_SAA7127=m
CONFIG_VIDEO_SAA7185=m
CONFIG_VIDEO_ADV7170=m
CONFIG_VIDEO_ADV7175=m
CONFIG_VIDEO_ADV7511=m
#
# Camera sensor devices
@ -5046,6 +5110,7 @@ CONFIG_DVB_TDA826X=m
CONFIG_DVB_TUA6100=m
CONFIG_DVB_CX24116=m
CONFIG_DVB_CX24117=m
CONFIG_DVB_CX24120=m
CONFIG_DVB_SI21XX=m
CONFIG_DVB_TS2020=m
CONFIG_DVB_DS3000=m
@ -5188,6 +5253,9 @@ CONFIG_DRM_R128=m
CONFIG_DRM_RADEON=m
# CONFIG_DRM_RADEON_USERPTR is not set
# CONFIG_DRM_RADEON_UMS is not set
CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_CIK=y
CONFIG_DRM_AMDGPU_USERPTR=y
CONFIG_DRM_NOUVEAU=m
CONFIG_NOUVEAU_DEBUG=5
CONFIG_NOUVEAU_DEBUG_DEFAULT=3
@ -5196,7 +5264,7 @@ CONFIG_DRM_I810=m
CONFIG_DRM_I915=m
CONFIG_DRM_I915_KMS=y
CONFIG_DRM_I915_FBDEV=y
CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT=y
# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
CONFIG_DRM_MGA=m
CONFIG_DRM_SIS=m
CONFIG_DRM_VIA=m
@ -5214,6 +5282,7 @@ CONFIG_DRM_AST=m
CONFIG_DRM_CIRRUS_QEMU=m
CONFIG_DRM_QXL=m
# CONFIG_DRM_BOCHS is not set
CONFIG_DRM_VIRTIO_GPU=m
CONFIG_DRM_PANEL=y
#
@ -5422,11 +5491,11 @@ CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
CONFIG_SND_DYNAMIC_MINORS=y
CONFIG_SND_MAX_CARDS=32
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_PROC_FS=y
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set
CONFIG_SND_VMASTER=y
CONFIG_SND_KCTL_JACK=y
CONFIG_SND_DMA_SGBUF=y
CONFIG_SND_RAWMIDI_SEQ=m
CONFIG_SND_OPL3_LIB_SEQ=m
@ -5569,20 +5638,16 @@ CONFIG_SND_YMFPCI=m
#
CONFIG_SND_HDA=m
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_DSP_LOADER=y
CONFIG_SND_HDA_PREALLOC_SIZE=64
CONFIG_SND_HDA_HWDEP=y
CONFIG_SND_HDA_RECONFIG=y
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_JACK=y
CONFIG_SND_HDA_PATCH_LOADER=y
CONFIG_SND_HDA_CODEC_REALTEK=m
CONFIG_SND_HDA_CODEC_ANALOG=m
CONFIG_SND_HDA_CODEC_SIGMATEL=m
CONFIG_SND_HDA_CODEC_VIA=m
CONFIG_SND_HDA_CODEC_HDMI=m
CONFIG_SND_HDA_I915=y
CONFIG_SND_HDA_CODEC_CIRRUS=m
CONFIG_SND_HDA_CODEC_CONEXANT=m
CONFIG_SND_HDA_CODEC_CA0110=m
@ -5593,6 +5658,9 @@ CONFIG_SND_HDA_CODEC_SI3054=m
CONFIG_SND_HDA_GENERIC=m
CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
CONFIG_SND_HDA_CORE=m
CONFIG_SND_HDA_DSP_LOADER=y
CONFIG_SND_HDA_I915=y
CONFIG_SND_HDA_PREALLOC_SIZE=64
CONFIG_SND_SPI=y
CONFIG_SND_USB=y
CONFIG_SND_USB_AUDIO=m
@ -5621,6 +5689,7 @@ CONFIG_SND_PCMCIA=y
CONFIG_SND_VXPOCKET=m
CONFIG_SND_PDAUDIOCF=m
CONFIG_SND_SOC=m
CONFIG_SND_SOC_AC97_BUS=y
CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
CONFIG_SND_ATMEL_SOC=m
CONFIG_SND_DESIGNWARE_I2S=m
@ -5654,6 +5723,7 @@ CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m
CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m
CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m
CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m
CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m
CONFIG_SND_SOC_QCOM=m
CONFIG_SND_SOC_XTFPGA_I2S=m
CONFIG_SND_SOC_I2C_AND_SPI=m
@ -5661,6 +5731,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=m
#
# CODEC drivers
#
CONFIG_SND_SOC_AC97_CODEC=m
CONFIG_SND_SOC_ADAU1701=m
CONFIG_SND_SOC_AK4104=m
CONFIG_SND_SOC_AK4554=m
@ -5689,6 +5760,7 @@ CONFIG_SND_SOC_PCM512x=m
CONFIG_SND_SOC_PCM512x_I2C=m
CONFIG_SND_SOC_PCM512x_SPI=m
CONFIG_SND_SOC_RL6231=m
CONFIG_SND_SOC_RL6347A=m
CONFIG_SND_SOC_RT286=m
CONFIG_SND_SOC_RT5631=m
CONFIG_SND_SOC_RT5640=m
@ -5710,6 +5782,7 @@ CONFIG_SND_SOC_STA32X=m
CONFIG_SND_SOC_STA350=m
CONFIG_SND_SOC_TAS2552=m
CONFIG_SND_SOC_TAS5086=m
CONFIG_SND_SOC_TAS571X=m
CONFIG_SND_SOC_TFA9879=m
CONFIG_SND_SOC_TLV320AIC23=m
CONFIG_SND_SOC_TLV320AIC23_I2C=m
@ -5870,6 +5943,7 @@ CONFIG_USB_DYNAMIC_MINORS=y
# CONFIG_USB_OTG_WHITELIST is not set
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
# CONFIG_USB_OTG_FSM is not set
CONFIG_USB_ULPI_BUS=m
CONFIG_USB_MON=m
CONFIG_USB_WUSB=m
CONFIG_USB_WUSB_CBAF=m
@ -5960,6 +6034,7 @@ CONFIG_USB_MUSB_DUAL_ROLE=y
#
CONFIG_MUSB_PIO_ONLY=y
CONFIG_USB_DWC3=m
CONFIG_USB_DWC3_ULPI=y
# CONFIG_USB_DWC3_HOST is not set
# CONFIG_USB_DWC3_GADGET is not set
CONFIG_USB_DWC3_DUAL_ROLE=y
@ -5979,7 +6054,6 @@ CONFIG_USB_DWC2_HOST=y
#
# Gadget/Dual-role mode requires USB Gadget support to be enabled
#
CONFIG_USB_DWC2_PLATFORM=y
CONFIG_USB_DWC2_PCI=y
# CONFIG_USB_DWC2_DEBUG is not set
# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
@ -6243,6 +6317,7 @@ CONFIG_MMC_USDHI6ROL0=m
CONFIG_MMC_REALTEK_PCI=m
CONFIG_MMC_REALTEK_USB=m
CONFIG_MMC_TOSHIBA_PCI=m
CONFIG_MMC_MTK=m
CONFIG_MEMSTICK=m
# CONFIG_MEMSTICK_DEBUG is not set
@ -6278,11 +6353,10 @@ CONFIG_LEDS_PCA9532=m
CONFIG_LEDS_PCA9532_GPIO=y
CONFIG_LEDS_GPIO=m
CONFIG_LEDS_LP3944=m
CONFIG_LEDS_LP55XX_COMMON=m
CONFIG_LEDS_LP5521=m
CONFIG_LEDS_LP5523=m
CONFIG_LEDS_LP5562=m
CONFIG_LEDS_LP8501=m
# CONFIG_LEDS_LP5521 is not set
# CONFIG_LEDS_LP5523 is not set
# CONFIG_LEDS_LP5562 is not set
# CONFIG_LEDS_LP8501 is not set
CONFIG_LEDS_LP8788=m
CONFIG_LEDS_LP8860=m
CONFIG_LEDS_CLEVO_MAIL=m
@ -6302,6 +6376,7 @@ CONFIG_LEDS_ADP5520=m
CONFIG_LEDS_DELL_NETBOOKS=m
CONFIG_LEDS_MC13783=m
CONFIG_LEDS_TCA6507=m
CONFIG_LEDS_TLC591XX=m
CONFIG_LEDS_MAX8997=m
CONFIG_LEDS_LM355x=m
CONFIG_LEDS_OT200=m
@ -6357,6 +6432,8 @@ CONFIG_INFINIBAND_SRP=m
CONFIG_INFINIBAND_SRPT=m
CONFIG_INFINIBAND_ISER=m
CONFIG_INFINIBAND_ISERT=m
CONFIG_EDAC_ATOMIC_SCRUB=y
CONFIG_EDAC_SUPPORT=y
CONFIG_EDAC=y
# CONFIG_EDAC_LEGACY_SYSFS is not set
# CONFIG_EDAC_DEBUG is not set
@ -6384,8 +6461,9 @@ CONFIG_EDAC_I7300=m
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_SYSTOHC=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_SYSTOHC=y
CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set
#
@ -6498,7 +6576,7 @@ CONFIG_RTC_DRV_AB3100=m
#
CONFIG_RTC_DRV_PCAP=m
CONFIG_RTC_DRV_MC13XXX=m
CONFIG_RTC_DRV_XGENE=m
CONFIG_RTC_DRV_MT6397=m
#
# HID Sensor RTC drivers
@ -6543,6 +6621,7 @@ CONFIG_UIO_AEC=m
CONFIG_UIO_SERCOS3=m
CONFIG_UIO_PCI_GENERIC=m
CONFIG_UIO_NETX=m
CONFIG_UIO_PRUSS=m
CONFIG_UIO_MF624=m
CONFIG_VFIO_IOMMU_TYPE1=m
CONFIG_VFIO_VIRQFD=m
@ -6728,6 +6807,7 @@ CONFIG_COMEDI_USBDUXSIGMA=m
CONFIG_COMEDI_VMK80XX=m
CONFIG_COMEDI_8254=m
CONFIG_COMEDI_8255=m
CONFIG_COMEDI_8255_SA=m
CONFIG_COMEDI_KCOMEDILIB=m
CONFIG_COMEDI_AMPLC_DIO200=m
CONFIG_COMEDI_AMPLC_PC236=m
@ -6883,9 +6963,6 @@ CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
CONFIG_STAGING_MEDIA=y
CONFIG_I2C_BCM2048=m
CONFIG_DVB_CXD2099=m
CONFIG_VIDEO_DT3155=m
# CONFIG_DT3155_CCIR is not set
CONFIG_DT3155_STREAMING=y
CONFIG_DVB_MN88472=m
CONFIG_DVB_MN88473=m
CONFIG_LIRC_STAGING=y
@ -6932,6 +7009,7 @@ CONFIG_FB_TFT_BD663474=m
CONFIG_FB_TFT_HX8340BN=m
CONFIG_FB_TFT_HX8347D=m
CONFIG_FB_TFT_HX8353D=m
CONFIG_FB_TFT_HX8357D=m
CONFIG_FB_TFT_ILI9163=m
CONFIG_FB_TFT_ILI9320=m
CONFIG_FB_TFT_ILI9325=m
@ -6955,16 +7033,6 @@ CONFIG_FB_TFT_UPD161704=m
CONFIG_FB_TFT_WATTEROTT=m
CONFIG_FB_FLEX=m
CONFIG_FB_TFT_FBTFT_DEVICE=m
CONFIG_I2O=m
CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
CONFIG_I2O_EXT_ADAPTEC=y
CONFIG_I2O_EXT_ADAPTEC_DMA64=y
CONFIG_I2O_CONFIG=m
# CONFIG_I2O_CONFIG_OLD_IOCTL is not set
CONFIG_I2O_BUS=m
CONFIG_I2O_BLOCK=m
CONFIG_I2O_SCSI=m
CONFIG_I2O_PROC=m
CONFIG_X86_PLATFORM_DEVICES=y
CONFIG_ACER_WMI=m
CONFIG_ACERHDF=m
@ -6974,6 +7042,7 @@ CONFIG_DELL_LAPTOP=m
CONFIG_DELL_WMI=m
CONFIG_DELL_WMI_AIO=m
CONFIG_DELL_SMO8800=m
CONFIG_DELL_RBTN=m
CONFIG_FUJITSU_LAPTOP=m
# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
CONFIG_FUJITSU_TABLET=m
@ -7023,11 +7092,13 @@ CONFIG_APPLE_GMUX=m
CONFIG_INTEL_RST=m
CONFIG_INTEL_SMARTCONNECT=m
CONFIG_PVPANIC=m
CONFIG_INTEL_PMC_IPC=m
CONFIG_CHROME_PLATFORMS=y
CONFIG_CHROMEOS_LAPTOP=m
CONFIG_CHROMEOS_PSTORE=m
CONFIG_CROS_EC_CHARDEV=m
CONFIG_CROS_EC_LPC=m
CONFIG_CROS_EC_PROTO=y
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
CONFIG_COMMON_CLK=y
@ -7089,6 +7160,7 @@ CONFIG_STE_MODEM_RPROC=m
#
# SOC (System On Chip) specific Drivers
#
# CONFIG_SUNXI_SRAM is not set
CONFIG_SOC_TI=y
CONFIG_PM_DEVFREQ=y
@ -7111,6 +7183,7 @@ CONFIG_EXTCON=y
#
CONFIG_EXTCON_ADC_JACK=m
CONFIG_EXTCON_ARIZONA=m
CONFIG_EXTCON_AXP288=m
CONFIG_EXTCON_GPIO=m
CONFIG_EXTCON_MAX14577=m
CONFIG_EXTCON_MAX77693=m
@ -7144,6 +7217,8 @@ CONFIG_KXCJK1013=m
CONFIG_MMA9551_CORE=m
CONFIG_MMA9551=m
CONFIG_MMA9553=m
CONFIG_STK8312=m
CONFIG_STK8BA50=m
#
# Analog to digital converters
@ -7213,6 +7288,7 @@ CONFIG_AD5755=m
CONFIG_AD5764=m
CONFIG_AD5791=m
CONFIG_AD7303=m
CONFIG_M62332=m
CONFIG_MAX517=m
CONFIG_MCP4725=m
CONFIG_MCP4922=m
@ -7266,9 +7342,11 @@ CONFIG_IIO_ADIS_LIB_BUFFER=y
#
# Light sensors
#
CONFIG_ACPI_ALS=m
CONFIG_ADJD_S311=m
CONFIG_AL3320A=m
CONFIG_APDS9300=m
CONFIG_BH1750=m
CONFIG_CM32181=m
CONFIG_CM3232=m
CONFIG_CM3323=m
@ -7280,6 +7358,7 @@ CONFIG_HID_SENSOR_PROX=m
CONFIG_JSA1212=m
CONFIG_SENSORS_LM3533=m
CONFIG_LTR501=m
CONFIG_STK3310=m
CONFIG_TCS3414=m
CONFIG_TCS3472=m
CONFIG_SENSORS_TSL2563=m
@ -7293,9 +7372,11 @@ CONFIG_AK8975=m
CONFIG_AK09911=m
CONFIG_MAG3110=m
CONFIG_HID_SENSOR_MAGNETOMETER_3D=m
CONFIG_MMC35240=m
CONFIG_IIO_ST_MAGN_3AXIS=m
CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
CONFIG_BMC150_MAGN=m
#
# Inclinometer sensors
@ -7340,6 +7421,9 @@ CONFIG_SX9500=m
CONFIG_MLX90614=m
CONFIG_TMP006=m
CONFIG_NTB=m
CONFIG_NTB_PINGPONG=m
CONFIG_NTB_TOOL=m
CONFIG_NTB_TRANSPORT=m
CONFIG_VME_BUS=y
#
@ -7380,11 +7464,14 @@ CONFIG_FMC_CHARDEV=m
# PHY Subsystem
#
CONFIG_GENERIC_PHY=y
CONFIG_PHY_PXA_28NM_HSIC=m
CONFIG_PHY_PXA_28NM_USB2=m
CONFIG_BCM_KONA_USB2_PHY=m
CONFIG_PHY_SAMSUNG_USB2=m
# CONFIG_PHY_EXYNOS4210_USB2 is not set
# CONFIG_PHY_EXYNOS4X12_USB2 is not set
# CONFIG_PHY_EXYNOS5250_USB2 is not set
CONFIG_PHY_TUSB1210=m
CONFIG_POWERCAP=y
CONFIG_INTEL_RAPL=m
CONFIG_MCB=m
@ -7396,6 +7483,11 @@ CONFIG_THUNDERBOLT=m
# Android
#
# CONFIG_ANDROID is not set
CONFIG_LIBNVDIMM=y
CONFIG_BLK_DEV_PMEM=m
CONFIG_ND_BLK=m
CONFIG_ND_BTT=m
CONFIG_BTT=y
#
# Firmware Drivers
@ -7416,6 +7508,7 @@ CONFIG_ISCSI_IBFT=m
# EFI (Extensible Firmware Interface) Support
#
CONFIG_EFI_VARS=y
CONFIG_EFI_ESRT=y
CONFIG_EFI_VARS_PSTORE=m
# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
CONFIG_EFI_RUNTIME_MAP=y
@ -7476,6 +7569,7 @@ CONFIG_F2FS_FS_XATTR=y
CONFIG_F2FS_FS_POSIX_ACL=y
CONFIG_F2FS_FS_SECURITY=y
# CONFIG_F2FS_CHECK_FS is not set
CONFIG_F2FS_FS_ENCRYPTION=y
# CONFIG_F2FS_IO_TRACE is not set
CONFIG_FS_DAX=y
CONFIG_FS_POSIX_ACL=y
@ -7540,6 +7634,7 @@ CONFIG_PROC_KCORE=y
CONFIG_PROC_VMCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_PROC_CHILDREN=y
CONFIG_KERNFS=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
@ -7662,8 +7757,7 @@ CONFIG_SUNRPC_BACKCHANNEL=y
CONFIG_SUNRPC_SWAP=y
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_SUNRPC_DEBUG=y
CONFIG_SUNRPC_XPRT_RDMA_CLIENT=m
CONFIG_SUNRPC_XPRT_RDMA_SERVER=m
CONFIG_SUNRPC_XPRT_RDMA=m
CONFIG_CEPH_FS=m
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS_POSIX_ACL=y
@ -7679,6 +7773,7 @@ CONFIG_CIFS_DEBUG=y
# CONFIG_CIFS_DEBUG2 is not set
CONFIG_CIFS_DFS_UPCALL=y
CONFIG_CIFS_SMB2=y
CONFIG_CIFS_SMB311=y
CONFIG_CIFS_FSCACHE=y
CONFIG_NCP_FS=m
CONFIG_NCPFS_PACKET_SIGNING=y
@ -7824,6 +7919,7 @@ CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_SCHED_DEBUG=y
CONFIG_SCHED_INFO=y
CONFIG_SCHEDSTATS=y
CONFIG_SCHED_STACK_END_CHECK=y
# CONFIG_DEBUG_TIMEKEEPING is not set
@ -7861,6 +7957,7 @@ CONFIG_TORTURE_TEST=m
CONFIG_RCU_CPU_STALL_TIMEOUT=60
# CONFIG_RCU_CPU_STALL_INFO is not set
# CONFIG_RCU_TRACE is not set
# CONFIG_RCU_EQS_DEBUG is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
CONFIG_NOTIFIER_ERROR_INJECTION=m
CONFIG_CPU_NOTIFIER_ERROR_INJECT=m
@ -7978,8 +8075,11 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=1
# CONFIG_DEBUG_BOOT_PARAMS is not set
# CONFIG_CPA_DEBUG is not set
CONFIG_OPTIMIZE_INLINING=y
# CONFIG_DEBUG_ENTRY is not set
# CONFIG_DEBUG_NMI_SELFTEST is not set
# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
CONFIG_X86_DEBUG_FPU=y
CONFIG_PUNIT_ATOM_DEBUG=m
#
# Security options
@ -8069,8 +8169,12 @@ CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_RNG_DEFAULT=m
CONFIG_CRYPTO_PCOMP=m
CONFIG_CRYPTO_PCOMP2=y
CONFIG_CRYPTO_AKCIPHER2=y
CONFIG_CRYPTO_AKCIPHER=m
CONFIG_CRYPTO_RSA=m
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_USER=m
@ -8091,7 +8195,9 @@ CONFIG_CRYPTO_GLUE_HELPER_X86=m
#
CONFIG_CRYPTO_CCM=m
CONFIG_CRYPTO_GCM=m
CONFIG_CRYPTO_CHACHA20POLY1305=m
CONFIG_CRYPTO_SEQIV=m
CONFIG_CRYPTO_ECHAINIV=m
#
# Block modes
@ -8121,6 +8227,7 @@ CONFIG_CRYPTO_CRC32=m
CONFIG_CRYPTO_CRC32_PCLMUL=m
CONFIG_CRYPTO_CRCT10DIF=y
CONFIG_CRYPTO_GHASH=m
CONFIG_CRYPTO_POLY1305=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=m
@ -8153,6 +8260,7 @@ CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_SALSA20=m
CONFIG_CRYPTO_SALSA20_586=m
CONFIG_CRYPTO_CHACHA20=m
CONFIG_CRYPTO_SEED=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SERPENT_SSE2_586=m
@ -8167,6 +8275,7 @@ CONFIG_CRYPTO_TWOFISH_586=m
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=y
CONFIG_CRYPTO_842=m
CONFIG_CRYPTO_LZ4=m
CONFIG_CRYPTO_LZ4HC=m
@ -8179,10 +8288,12 @@ CONFIG_CRYPTO_DRBG_HMAC=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG=m
CONFIG_CRYPTO_JITTERENTROPY=m
CONFIG_CRYPTO_USER_API=m
CONFIG_CRYPTO_USER_API_HASH=m
CONFIG_CRYPTO_USER_API_SKCIPHER=m
CONFIG_CRYPTO_USER_API_RNG=m
CONFIG_CRYPTO_USER_API_AEAD=m
CONFIG_CRYPTO_HASH_INFO=y
CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_DEV_PADLOCK=y
@ -8253,6 +8364,8 @@ CONFIG_CRC8=m
CONFIG_AUDIT_GENERIC=y
# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_842_COMPRESS=m
CONFIG_842_DECOMPRESS=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_LZO_COMPRESS=y
@ -8312,3 +8425,4 @@ CONFIG_FONT_SUPPORT=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_ARCH_HAS_SG_CHAIN=y
CONFIG_ARCH_HAS_PMEM_API=y

File diff suppressed because it is too large Load Diff

View File

@ -210,7 +210,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
#f)))
(define-public linux-libre
(let* ((version "4.1.6")
(let* ((version "4.2")
(build-phase
'(lambda* (#:key system inputs #:allow-other-keys #:rest args)
;; Apply the neat patch.
@ -283,7 +283,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
(uri (linux-libre-urls version))
(sha256
(base32
"07gmpy32v90bx78bm1khc1hw7x0akdh2sxpkxkavwj4fjc6f732v"))))
"0jfgbr9qc92bk7hyfdvw030xyic2bg834l8cxp25rw9qbbdck3rs"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl)
("bc" ,bc)

View File

@ -405,6 +405,40 @@ attachments, create new maildirs, and so on.")
ing, and tagging large collections of email messages.")
(license gpl3+)))
(define-public python2-notmuch
(package
(name "python2-notmuch")
(version "0.15.2")
(source (origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/source/n/notmuch/notmuch-"
version
".tar.gz"))
(sha256
(base32
"18g8701ibr153ngsz258kgcd42wqnbf9ifpqig1bijy6b0zx9xn5"))))
(build-system python-build-system)
(inputs `(("notmuch" ,notmuch)))
(arguments
`(#:python ,python-2
#:phases (modify-phases %standard-phases
(add-before
'build 'set-libnotmuch-file-name
(lambda* (#:key inputs #:allow-other-keys)
(let ((notmuch (assoc-ref inputs "notmuch")))
(substitute* "notmuch/globals.py"
(("libnotmuch\\.so\\.[0-9]")
(string-append notmuch "/lib/libnotmuch.so.4")))
#t))))
#:tests? #f)) ;no "test" target
(home-page "http://notmuchmail.org/")
(synopsis "Python bindings of the Notmuch mail indexing library")
(description
"This package provides Python bindings to use the Notmuch mail indexing
and search library.")
(license gpl3+)))
(define-public getmail
(package
(name "getmail")

View File

@ -269,7 +269,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(synopsis "Statically-linked bootstrap binaries")
(description
"Binaries used to bootstrap the distribution.")
(license #f)
(license gpl3+)
(home-page #f)))
(define %binutils-static

View File

@ -1926,3 +1926,39 @@ in finite element programs.")
"-DMPI_Fortran_COMPILER=mpifort"
,@,cf))))
(synopsis "Finite element library (with MPI support)")))
(define-public flann
(package
(name "flann")
(version "1.8.4")
(source
(origin
(method url-fetch)
(uri
(string-append
"http://www.cs.ubc.ca/research/flann/uploads/FLANN/flann-"
version "-src.zip"))
(sha256
(base32
"022w8hph7bli5zbpnk3z1qh1c2sl5hm8fw2ccim651ynn0hr7fyz"))))
(build-system cmake-build-system)
(native-inputs
`(("unzip" ,unzip)))
(inputs
`(("hdf5" ,hdf5)
("octave" ,octave)
("python" ,python-2) ; print syntax
;; ("python2-numpy" ,python2-numpy) ; only required for the tests
("zlib" ,zlib)))
(arguments
`(#:tests? #f)) ; The test data are downloaded from the Internet.
(home-page "http://www.cs.ubc.ca/research/flann/")
(synopsis "Library for approximate nearest neighbors computation")
(description "FLANN is a library for performing fast approximate
nearest neighbor searches in high dimensional spaces. It implements a
collection of algorithms and a system for automatically choosing the best
algorithm and optimum parameters depending on the dataset.
FLANN is written in C++ and contains bindings for C, Octave and Python.")
(license (license:non-copyleft "file://COPYING"
"See COPYING in the distribution."))))

View File

@ -24,8 +24,10 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (guix build-system python)
#:use-module (guix build-system waf)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base) ;libbdf
@ -54,6 +56,7 @@
#:use-module (gnu packages man)
#:use-module (gnu packages mp3)
#:use-module (gnu packages netpbm)
#:use-module (gnu packages pdf)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio) ;libsndfile
@ -66,6 +69,7 @@
#:use-module (gnu packages texlive)
#:use-module (gnu packages web)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module (gnu packages xiph)
#:use-module (gnu packages zip)
#:use-module ((srfi srfi-1) #:select (last)))
@ -647,3 +651,65 @@ equipment. Pd is suitable for learning basic multimedia processing and visual
programming methods as well as for realizing complex systems for large-scale
projects.")
(license license:bsd-3)))
(define-public frescobaldi
(package
(name "frescobaldi")
(version "2.18.1")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/wbsoft/frescobaldi/releases/download/v"
version "/frescobaldi-" version ".tar.gz"))
(sha256
(base32
"1hflc6gck6dn17czc2ldai5j0ynfg3df8lqcggdry06qxsdbnns7"))))
(build-system python-build-system)
(inputs
`(("lilypond" ,lilypond)
("python-pyqt-4" ,python-pyqt-4)
("python-ly" ,python-ly)
("poppler" ,poppler)
("python-poppler-qt4" ,python-poppler-qt4)
("python-sip" ,python-sip)))
(home-page "http://www.frescobaldi.org/")
(synopsis "LilyPond sheet music text editor")
(description
"Frescobaldi is a LilyPond sheet music text editor with syntax
highlighting and automatic completion. Among other things, it can render
scores next to the source, can capture input from MIDI or read MusicXML and
ABC files, has a MIDI player for proof-listening, and includes a documentation
browser.")
(license license:gpl2+)))
(define-public zynaddsubfx
(package
(name "zynaddsubfx")
(version "2.5.1")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://sourceforge/zynaddsubfx/zynaddsubfx/"
version "/zynaddsubfx-" version ".tar.gz"))
(sha256
(base32
"01c4v5lbzard6y00cjq3b6a50cafqwfwibzng9gdsajczhnbkqz2"))))
(build-system cmake-build-system)
(inputs
`(("liblo" ,liblo)
("ntk" ,ntk)
("alsa-lib" ,alsa-lib)
("jack" ,jack-1)
("fftw" ,fftw)
("minixml" ,minixml)
("libxpm" ,libxpm)
("zlib" ,zlib)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(home-page "http://zynaddsubfx.sf.net/")
(synopsis "Software synthesizer")
(description
"ZynAddSubFX is a feature heavy realtime software synthesizer. It offers
three synthesizer engines, multitimbral and polyphonic synths, microtonal
capabilities, custom envelopes, effects, etc.")
(license license:gpl2)))

View File

@ -27,22 +27,23 @@
(define-public ncdu
(package
(name "ncdu")
(version "1.10")
(version "1.11")
(source (origin
(method url-fetch)
(uri (string-append "http://dev.yorhel.nl/download/ncdu-"
version ".tar.gz"))
(sha256
(base32
"0rqc5wpqcbfqpcwxgh3jxwa0yw2py0hv0acpsf0a9g6v9144m6gm"))))
(inputs
`(("ncurses" ,ncurses)))
"0yxv87hpal05p6nii6rlnai5a8958689l9vz020w4qvlwiragbnh"))))
(build-system gnu-build-system)
(inputs `(("ncurses" ,ncurses)))
(synopsis "Ncurses based disk usage analyzer")
(description "A disk usage analyzer with an ncurses interface, aimed to be
run on a remote server where you don't have an entire graphical setup, but have
to do with a simple SSH connection. ncdu aims to be fast, simple and easy to
use, and should be able to run in any minimal POSIX-like environment with
ncurses installed.")
(license (x11-style "http://g.blicky.net/ncdu.git/plain/COPYING?id=v1.10"))
(license (x11-style
(string-append "http://g.blicky.net/ncdu.git/plain/COPYING?id=v"
version)))
(home-page "http://dev.yorhel.nl/ncdu")))

216
gnu/packages/openstack.scm Normal file
View File

@ -0,0 +1,216 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages openstack)
#:use-module (gnu packages python)
#:use-module (gnu packages version-control)
#:use-module (guix build-system python)
#:use-module (guix download)
#:use-module ((guix licenses)
#:select (asl2.0))
#:use-module (guix packages))
(define-public python-mox3
(package
(name "python-mox3")
(version "0.8.0")
(source
(origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/source/m/mox3/mox3-"
version
".tar.gz"))
(sha256
(base32
"1dwj9lkifdqvrcympqa47bj55l0n0j9jhzv2gj03h0dpzg6mgfkj"))))
(build-system python-build-system)
(inputs
`(("python-fixtures" ,python-fixtures)
("python-pbr" ,python-pbr)
("python-setuptools" ,python-setuptools)
("python-six" ,python-six)
("python-testtools" ,python-testtools)))
(home-page "http://www.openstack.org/")
(synopsis "Mock object framework for Python")
(description
"Mox3 is an unofficial port of the Google mox framework
(http://code.google.com/p/pymox/) to Python 3. It was meant to be as compatible
with mox as possible, but small enhancements have been made. The library was
tested on Python version 3.2, 2.7 and 2.6.")
(license asl2.0)))
(define-public python-os-client-config
(package
(name "python-os-client-config")
(version "1.4.0")
(source
(origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/source/o/os-client-config/os-client-config-"
version
".tar.gz"))
(sha256
(base32
"14png6ml3zbbilh8bihav24f8vig9lyijwynnjcvazdxxrzvwq9j"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ;; Circular dependency with python-oslotest
(inputs
`(("python-appdirs" ,python-appdirs)
("python-fixtures" ,python-fixtures)
("python-mimeparse" ,python-mimeparse)
("python-pbr" ,python-pbr)
("python-pyyaml" ,python-pyyaml)
("python-testrepository" ,python-testrepository)
("python-setuptools" ,python-setuptools)
("python-testscenarios" ,python-testscenarios)
("python-testtools" ,python-testtools)))
(home-page "http://www.openstack.org/")
(synopsis
"OpenStack Client Configuration Library")
(description
"The OpenStack Client Configuration Library is a library for collecting
client configuration for using an OpenStack cloud in a consistent and
comprehensive manner.")
(license asl2.0)))
(define-public python2-os-client-config
(package-with-python2 python-os-client-config))
(define-public python2-mox3
(package-with-python2 python-mox3))
(define-public python-pbr
(package
(name "python-pbr")
(version "1.6.0")
(source
(origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/source/p/pbr/pbr-"
version
".tar.gz"))
(sha256
(base32
"1lg1klrczvzfan89y3bl9ykrknl3nb01vvai37fkww24apzyibjf"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ;; Most tests seem to use the Internet.
(propagated-inputs
`(("python-testrepository" ,python-testrepository)
("git" ,git))) ;; pbr actually uses the "git" binary.
(inputs
`(("python-fixtures" ,python-fixtures)
("python-mimeparse" ,python-mimeparse)
("python-mock" ,python-mock)
("python-setuptools" ,python-setuptools)
("python-six" ,python-six)
("python-sphinx" ,python-sphinx)
("python-testrepository" ,python-testrepository)
("python-testresources" ,python-testresources)
("python-testscenarios" ,python-testscenarios)
("python-testtools" ,python-testtools)
("python-virtualenv" ,python-virtualenv)))
(home-page "https://launchpad.net/pbr")
(synopsis "Change the default behavior of Pythons setuptools")
(description
"Python Build Reasonableness (PBR) is a library that injects some useful
and sensible default behaviors into your setuptools run.")
(license asl2.0)))
(define-public python2-pbr
(package-with-python2 python-pbr))
;; Packages from the Oslo library
(define-public python-oslo.i18n
(package
(name "python-oslo.i18n")
(version "2.5.0")
(source
(origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/source/o/oslo.i18n/oslo.i18n-"
version
".tar.gz"))
(sha256
(base32
"1kg72mqldlri3x0bhxai7j979czrd7mf8s3iflvvv0x9kn9ah4cw"))))
(build-system python-build-system)
(propagated-inputs
`(("python-babel" ,python-babel)
("python-six" ,python-six)))
(inputs
`(("python-pbr" ,python-pbr)
("python-setuptools" ,python-setuptools)
;; Tests
("python-mock" ,python-mock)
("python-mox3" ,python-mox3)
("python-oslotest" ,python-oslotest)
("python-testscenarios" ,python-testscenarios)))
(home-page "http://launchpad.net/oslo")
(synopsis "Oslo internationalization (i18n) library")
(description
"The oslo.i18n library contain utilities for working with
internationalization (i18n) features, especially translation for text strings
in an application or library.")
(license asl2.0)))
(define-public python2-oslo.i18n
(package-with-python2 python-oslo.i18n))
(define-public python-oslotest
(package
(name "python-oslotest")
(version "1.10.0")
(source
(origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/source/o/oslotest/oslotest-"
version
".tar.gz"))
(sha256
(base32
"0l3ny48ddz5xbf0v4r0jv1yhbdzinc2vy0lybhdkmx3xy0b886fs"))))
(build-system python-build-system)
(propagated-inputs
`(("python-fixtures" ,python-fixtures)
("python-mock" ,python-mock)
("python-six" ,python-six)))
(inputs
`(("python-pbr" ,python-pbr)
("python-mox3" ,python-mox3)
("python-os-client-config" ,python-os-client-config)
("python-setuptools" ,python-setuptools)
("python-subunit" ,python-subunit)
("python-testrepository" ,python-testrepository)
("python-testscenarios" ,python-testscenarios)
("python-testtools" ,python-testtools)))
(home-page "http://launchpad.net/oslo")
(synopsis "Oslo test framework")
(description
"The Oslo Test framework provides common fixtures, support for debugging,
and better support for mocking results.")
(license asl2.0)))
(define-public python2-oslotest
(package-with-python2 python-oslotest))

View File

@ -200,18 +200,7 @@ the Nix package manager.")
(chmod po #o666))
(find-files "." "\\.po$"))
(zero? (system* "sh" "bootstrap"))))
(add-after
'unpack 'disable-container-tests
;; XXX FIXME: These tests fail within the build container.
(lambda _
(substitute* "tests/syscalls.scm"
(("^\\(test-assert \"(clone|setns|pivot-root)\"" all)
(string-append "(test-skip 1)\n" all)))
(substitute* "tests/containers.scm"
(("^\\(test-assert" all)
(string-append "(test-skip 1)\n" all)))
#t))))))
(zero? (system* "sh" "bootstrap"))))))))
(native-inputs
`(("autoconf" ,(autoconf-wrapper))
("automake" ,automake)

View File

@ -1,231 +0,0 @@
Partially fix CVE-2014-9112, part 1/5. Backported to 2.11.
From 746f3ff670dcfcdd28fcc990e79cd6fccc7ae48d Mon Sep 17 00:00:00 2001
From: Sergey Poznyakoff <gray@gnu.org.ua>
Date: Mon, 01 Dec 2014 13:15:28 +0000
Subject: Fix memory overrun on reading improperly created link records.
See http://lists.gnu.org/archive/html/bug-cpio/2014-11/msg00007.html
* src/copyin.c (get_link_name): New function.
(list_file, copyin_link): use get_link_name
* tests/symlink-bad-length.at: New file.
* tests/symlink-long.at: New file.
* tests/Makefile.am: Add new files.
* tests/testsuite.at: Likewise.
---
diff --git a/src/copyin.c b/src/copyin.c
index 38d809f..c502c7d 100644
--- a/src/copyin.c
+++ b/src/copyin.c
@@ -124,10 +124,30 @@ tape_skip_padding (int in_file_des, off_t offset)
if (pad != 0)
tape_toss_input (in_file_des, pad);
}
-
+
+static char *
+get_link_name (struct cpio_file_stat *file_hdr, int in_file_des)
+{
+ off_t n = file_hdr->c_filesize + 1;
+ char *link_name;
+
+ if (n == 0 || n > SIZE_MAX)
+ {
+ error (0, 0, _("%s: stored filename length too big"), file_hdr->c_name);
+ link_name = NULL;
+ }
+ else
+ {
+ link_name = xmalloc (n);
+ tape_buffered_read (link_name, in_file_des, file_hdr->c_filesize);
+ link_name[file_hdr->c_filesize] = '\0';
+ tape_skip_padding (in_file_des, file_hdr->c_filesize);
+ }
+ return link_name;
+}
static void
-list_file(struct cpio_file_stat* file_hdr, int in_file_des)
+list_file (struct cpio_file_stat* file_hdr, int in_file_des)
{
if (verbose_flag)
{
@@ -136,21 +156,16 @@ list_file(struct cpio_file_stat* file_hdr, int in_file_des)
{
if (archive_format != arf_tar && archive_format != arf_ustar)
{
- char *link_name = NULL; /* Name of hard and symbolic links. */
-
- link_name = (char *) xmalloc ((unsigned int) file_hdr->c_filesize + 1);
- link_name[file_hdr->c_filesize] = '\0';
- tape_buffered_read (link_name, in_file_des, file_hdr->c_filesize);
- long_format (file_hdr, link_name);
- free (link_name);
- tape_skip_padding (in_file_des, file_hdr->c_filesize);
- return;
+ char *link_name = get_link_name (file_hdr, in_file_des);
+ if (link_name)
+ {
+ long_format (file_hdr, link_name);
+ free (link_name);
+ }
}
else
- {
- long_format (file_hdr, file_hdr->c_tar_linkname);
- return;
- }
+ long_format (file_hdr, file_hdr->c_tar_linkname);
+ return;
}
else
#endif
@@ -650,10 +665,7 @@ copyin_link(struct cpio_file_stat *file_
if (archive_format != arf_tar && archive_format != arf_ustar)
{
- link_name = (char *) xmalloc ((unsigned int) file_hdr->c_filesize + 1);
- link_name[file_hdr->c_filesize] = '\0';
- tape_buffered_read (link_name, in_file_des, file_hdr->c_filesize);
- tape_skip_padding (in_file_des, file_hdr->c_filesize);
+ link_name = get_link_name (file_hdr, in_file_des);
}
else
{
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 3f714d1..b4ca92d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -52,6 +52,8 @@ TESTSUITE_AT = \
setstat04.at\
setstat05.at\
symlink.at\
+ symlink-bad-length.at\
+ symlink-long.at\
version.at
TESTSUITE = $(srcdir)/testsuite
diff --git a/tests/symlink-bad-length.at b/tests/symlink-bad-length.at
new file mode 100644
index 0000000..6f804b1
--- a/dev/null
+++ b/tests/symlink-bad-length.at
@@ -0,0 +1,49 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+# Copyright (C) 2014 Free Software Foundation, Inc.
+
+# This program 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, or (at your option)
+# any later version.
+
+# This program 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 this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA.
+
+# Cpio v2.11 did segfault with badly set symlink length.
+# References:
+# http://lists.gnu.org/archive/html/bug-cpio/2014-11/msg00007.html
+
+AT_SETUP([symlink-bad-length])
+AT_KEYWORDS([symlink-long copyout])
+
+AT_DATA([ARCHIVE.base64],
+[x3EjAIBAtIEtJy8nAQAAAHRUYW0FAAAADQBGSUxFAABzb21lIGNvbnRlbnQKAMdxIwBgQ/+hLScv
+JwEAAAB0VEhuBQD/////TElOSwAARklMRcdxAAAAAAAAAAAAAAEAAAAAAAAACwAAAAAAVFJBSUxF
+UiEhIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+])
+
+AT_CHECK([
+base64 -d ARCHIVE.base64 > ARCHIVE || AT_SKIP_TEST
+cpio -ntv < ARCHIVE
+test $? -eq 2
+],
+[0],
+[-rw-rw-r-- 1 10029 10031 13 Nov 25 13:52 FILE
+],[cpio: LINK: stored filename length too big
+cpio: premature end of file
+])
+
+AT_CLEANUP
diff --git a/tests/symlink-long.at b/tests/symlink-long.at
new file mode 100644
index 0000000..d3def2d
--- a/dev/null
+++ b/tests/symlink-long.at
@@ -0,0 +1,46 @@
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
+# Copyright (C) 2014 Free Software Foundation, Inc.
+
+# This program 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, or (at your option)
+# any later version.
+
+# This program 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 this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 USA.
+
+# Cpio v2.11.90 changed the way symlink name is read from archive.
+# References:
+# http://lists.gnu.org/archive/html/bug-cpio/2014-11/msg00007.html
+
+AT_SETUP([symlink-long])
+AT_KEYWORDS([symlink-long copyout])
+
+AT_CHECK([
+
+# len(dirname) > READBUFSIZE
+dirname=
+for i in {1..52}; do
+ dirname="xxxxxxxxx/$dirname"
+ mkdir "$dirname"
+done
+ln -s "$dirname" x || AT_SKIP_TEST
+
+echo x | cpio -o > ar
+list=`cpio -tv < ar | sed 's|.*-> ||'`
+test "$list" = "$dirname" && echo success || echo fail
+],
+[0],
+[success
+],[2 blocks
+2 blocks
+])
+
+AT_CLEANUP
diff --git a/tests/testsuite.at b/tests/testsuite.at
index e67689f..3b5377e 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -31,6 +31,8 @@ m4_include([version.at])
m4_include([inout.at])
m4_include([symlink.at])
+m4_include([symlink-bad-length.at])
+m4_include([symlink-long.at])
m4_include([interdir.at])
m4_include([setstat01.at])
--
cgit v0.9.0.2

View File

@ -1,51 +0,0 @@
Partially fix CVE-2014-9112, part 2/5.
From 54d1c42ac2cb91389fca04a5018ad573e4ae265a Mon Sep 17 00:00:00 2001
From: Sergey Poznyakoff <gray@gnu.org.ua>
Date: Mon, 01 Dec 2014 19:10:39 +0000
Subject: Bugfix
* src/copyin.c (get_link_name): Fix range checking.
* tests/symlink-bad-length.at: Change expected error message.
---
diff --git a/src/copyin.c b/src/copyin.c
index c502c7d..042cc41 100644
--- a/src/copyin.c
+++ b/src/copyin.c
@@ -128,17 +128,17 @@ tape_skip_padding (int in_file_des, off_t offset)
static char *
get_link_name (struct cpio_file_stat *file_hdr, int in_file_des)
{
- off_t n = file_hdr->c_filesize + 1;
char *link_name;
- if (n == 0 || n > SIZE_MAX)
+ if (file_hdr->c_filesize < 0 || file_hdr->c_filesize > SIZE_MAX-1)
{
- error (0, 0, _("%s: stored filename length too big"), file_hdr->c_name);
+ error (0, 0, _("%s: stored filename length is out of range"),
+ file_hdr->c_name);
link_name = NULL;
}
else
{
- link_name = xmalloc (n);
+ link_name = xmalloc (file_hdr->c_filesize);
tape_buffered_read (link_name, in_file_des, file_hdr->c_filesize);
link_name[file_hdr->c_filesize] = '\0';
tape_skip_padding (in_file_des, file_hdr->c_filesize);
diff --git a/tests/symlink-bad-length.at b/tests/symlink-bad-length.at
index 6f804b1..cbf4aa7 100644
--- a/tests/symlink-bad-length.at
+++ b/tests/symlink-bad-length.at
@@ -42,7 +42,7 @@ test $? -eq 2
],
[0],
[-rw-rw-r-- 1 10029 10031 13 Nov 25 13:52 FILE
-],[cpio: LINK: stored filename length too big
+],[cpio: LINK: stored filename length is out of range
cpio: premature end of file
])
--
cgit v0.9.0.2

View File

@ -1,23 +0,0 @@
Partially fix CVE-2014-9112, part 3/5.
From 58df4f1b44a1142bba500f980fd26806413b1728 Mon Sep 17 00:00:00 2001
From: Sergey Poznyakoff <gray@gnu.org.ua>
Date: Tue, 02 Dec 2014 09:33:29 +0000
Subject: Fix typo
---
diff --git a/src/copyin.c b/src/copyin.c
index 042cc41..264bfcb 100644
--- a/src/copyin.c
+++ b/src/copyin.c
@@ -138,7 +138,7 @@ get_link_name (struct cpio_file_stat *file_hdr, int in_file_des)
}
else
{
- link_name = xmalloc (file_hdr->c_filesize);
+ link_name = xmalloc (file_hdr->c_filesize + 1);
tape_buffered_read (link_name, in_file_des, file_hdr->c_filesize);
link_name[file_hdr->c_filesize] = '\0';
tape_skip_padding (in_file_des, file_hdr->c_filesize);
--
cgit v0.9.0.2

View File

@ -1,105 +0,0 @@
Partially fix CVE-2014-9112, part 4/5. Backported to 2.11.
From fd262d116c4564c1796be9be2799619cf7785d07 Mon Sep 17 00:00:00 2001
From: Sergey Poznyakoff <gray@gnu.org.ua>
Date: Thu, 11 Dec 2014 10:51:21 +0000
Subject: Fix error recovery in copy-in mode
* src/copyin.c (copyin_link): Fix null dereference.
(read_in_header): Fix error recovery (bug introduced by
27e0ae55).
* tests/symlink-bad-length.at: Test error recovery.
Catch various architecture-dependent error messages (suggested
by Pavel Raiskup).
---
diff --git a/src/copyin.c b/src/copyin.c
index 264bfcb..ca12356 100644
--- a/src/copyin.c
+++ b/src/copyin.c
@@ -655,7 +655,7 @@ copyin_device (struct cpio_file_stat* file_hdr)
}
static void
-copyin_link(struct cpio_file_stat *file_hdr, int in_file_des)
+copyin_link (struct cpio_file_stat *file_hdr, int in_file_des)
{
char *link_name = NULL; /* Name of hard and symbolic links. */
int res; /* Result of various function calls. */
@@ -666,6 +666,8 @@ copyin_link(struct cpio_file_stat *file_
if (archive_format != arf_tar && archive_format != arf_ustar)
{
link_name = get_link_name (file_hdr, in_file_des);
+ if (!link_name)
+ return;
}
else
{
@@ -1017,7 +1019,7 @@ read_in_header (struct cpio_file_stat *file_hdr, int in_des)
file_hdr->c_tar_linkname = NULL;
- tape_buffered_read (magic.str, in_des, 6L);
+ tape_buffered_read (magic.str, in_des, sizeof (magic.str));
while (1)
{
if (append_flag)
@@ -1062,8 +1064,8 @@ read_in_header (struct cpio_file_stat *file_hdr, int in_des)
break;
}
bytes_skipped++;
- memmove (magic.str, magic.str + 1, 5);
- tape_buffered_read (magic.str, in_des, 1L);
+ memmove (magic.str, magic.str + 1, sizeof (magic.str) - 1);
+ tape_buffered_read (magic.str + sizeof (magic.str) - 1, in_des, 1L);
}
}
diff --git a/tests/symlink-bad-length.at b/tests/symlink-bad-length.at
index cbf4aa7..4dbeaa3 100644
--- a/tests/symlink-bad-length.at
+++ b/tests/symlink-bad-length.at
@@ -24,9 +24,9 @@ AT_SETUP([symlink-bad-length])
AT_KEYWORDS([symlink-long copyout])
AT_DATA([ARCHIVE.base64],
-[x3EjAIBAtIEtJy8nAQAAAHRUYW0FAAAADQBGSUxFAABzb21lIGNvbnRlbnQKAMdxIwBgQ/+hLScv
-JwEAAAB0VEhuBQD/////TElOSwAARklMRcdxAAAAAAAAAAAAAAEAAAAAAAAACwAAAAAAVFJBSUxF
-UiEhIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+[x3ECCJ1jtIHoA2QAAQAAAIlUwl0FAAAADQBGSUxFAABzb21lIGNvbnRlbnQKAMdxAgidHv+h6ANk
+AAEAAACJVHFtBQD/////TElOSwAARklMRcdxAgieHqSB6ANkAAEAAACJVDJuBgAAABIARklMRTIA
+c29tZSBtb3JlIGNvbnRlbnQKx3EAAAAAAAAAAAAAAQAAAAAAAAALAAAAAABUUkFJTEVSISEhAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
@@ -37,13 +37,23 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
AT_CHECK([
base64 -d ARCHIVE.base64 > ARCHIVE || AT_SKIP_TEST
-cpio -ntv < ARCHIVE
-test $? -eq 2
+TZ=UTC cpio -ntv < ARCHIVE 2>stderr
+rc=$?
+cat stderr | grep -v \
+ -e 'stored filename length is out of range' \
+ -e 'premature end of file' \
+ -e 'archive header has reverse byte-order' \
+ -e 'memory exhausted' \
+ >&2
+echo >&2 STDERR
+test "$rc" -ne 0
],
-[0],
-[-rw-rw-r-- 1 10029 10031 13 Nov 25 13:52 FILE
-],[cpio: LINK: stored filename length is out of range
-cpio: premature end of file
+[1],
+[-rw-rw-r-- 1 1000 100 13 Dec 11 09:02 FILE
+-rw-r--r-- 1 1000 100 18 Dec 11 10:13 FILE2
+],[cpio: warning: skipped 4 bytes of junk
+1 block
+STDERR
])
AT_CLEANUP
--
cgit v0.9.0.2

View File

@ -1,88 +0,0 @@
Partially fix CVE-2014-9112, part 5/5. Backported to 2.11.
From f6a8a2cbd2d5ca40ea94900b55b845dd5ca87328 Mon Sep 17 00:00:00 2001
From: Sergey Poznyakoff <gray@gnu.org.ua>
Date: Thu, 11 Dec 2014 13:21:40 +0000
Subject: Fix symlink-bad-length test for 64-bit architectures.
* src/util.c: Return non-zero exit code if EOF is hit prematurely.
* tests/symlink-bad-length.at: Revert to original archive: there's
no use testing for recovery, because that depends on the host
architecture. Don't test for exit code as well (same reason).
Account for eventual warning messages.
---
diff --git a/src/util.c b/src/util.c
index 6c483f8..39c9813 100644
--- a/src/util.c
+++ b/src/util.c
@@ -206,10 +206,7 @@ tape_fill_input_buffer (int in_des, int
if (input_size < 0)
error (1, errno, _("read error"));
if (input_size == 0)
- {
- error (0, 0, _("premature end of file"));
- exit (1);
- }
+ error (PAXEXIT_FAILURE, 0, _("premature end of file"));
input_bytes += input_size;
}
diff --git a/tests/symlink-bad-length.at b/tests/symlink-bad-length.at
index 4dbeaa3..e1a7093 100644
--- a/tests/symlink-bad-length.at
+++ b/tests/symlink-bad-length.at
@@ -24,9 +24,9 @@ AT_SETUP([symlink-bad-length])
AT_KEYWORDS([symlink-long copyout])
AT_DATA([ARCHIVE.base64],
-[x3ECCJ1jtIHoA2QAAQAAAIlUwl0FAAAADQBGSUxFAABzb21lIGNvbnRlbnQKAMdxAgidHv+h6ANk
-AAEAAACJVHFtBQD/////TElOSwAARklMRcdxAgieHqSB6ANkAAEAAACJVDJuBgAAABIARklMRTIA
-c29tZSBtb3JlIGNvbnRlbnQKx3EAAAAAAAAAAAAAAQAAAAAAAAALAAAAAABUUkFJTEVSISEhAAAA
+[x3EjAIBAtIEtJy8nAQAAAHRUYW0FAAAADQBGSUxFAABzb21lIGNvbnRlbnQKAMdxIwBgQ/+hLScv
+JwEAAAB0VEhuBQD/////TElOSwAARklMRcdxAAAAAAAAAAAAAAEAAAAAAAAACwAAAAAAVFJBSUxF
+UiEhIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
@@ -35,25 +35,30 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
])
+# The exact error message and exit status depend on the host architecture,
+# therefore strderr is filtered out and error code is not checked.
+
+# So far the only case when cpio would exit with code 0 is when it skips
+# several bytes and encounters a valid record header. Perhaps it should
+# exit with code 2 (non-critical error), if at least one byte was skipped,
+# but that could hurt backward compatibility.
+
AT_CHECK([
base64 -d ARCHIVE.base64 > ARCHIVE || AT_SKIP_TEST
-TZ=UTC cpio -ntv < ARCHIVE 2>stderr
-rc=$?
+TZ=UTC cpio -ntv < ARCHIVE 2>stderr
cat stderr | grep -v \
-e 'stored filename length is out of range' \
-e 'premature end of file' \
-e 'archive header has reverse byte-order' \
-e 'memory exhausted' \
+ -e 'skipped [[0-9][0-9]*] bytes of junk' \
+ -e '[[0-9][0-9]*] block' \
>&2
echo >&2 STDERR
-test "$rc" -ne 0
],
-[1],
-[-rw-rw-r-- 1 1000 100 13 Dec 11 09:02 FILE
--rw-r--r-- 1 1000 100 18 Dec 11 10:13 FILE2
-],[cpio: warning: skipped 4 bytes of junk
-1 block
-STDERR
+[0],
+[-rw-rw-r-- 1 10029 10031 13 Nov 25 11:52 FILE
+],[STDERR
])
AT_CLEANUP
--
cgit v0.9.0.2

View File

@ -1,44 +0,0 @@
From bebf9662c406d1d137a66c567d8748b489d352e7 Mon Sep 17 00:00:00 2001
From: Pavel Raiskup <praiskup@redhat.com>
Date: Thu, 4 Jun 2015 13:27:42 +0200
Subject: [PATCH] tests: fix expected output for old file
Thanks Victor Rodriguez. Upstream thread:
http://lists.gnu.org/archive/html/bug-cpio/2015-06/msg00000.html
* tests/symlink-bad-length.at (STDOUT): Expect the year string
'2014' is printed and not time because the file in archive is
older than 6 months.
* Thanks: Mention Victor.
---
THANKS | 1 +
tests/symlink-bad-length.at | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/THANKS b/THANKS
index 45b0dfb..3228df9 100644
--- a/THANKS
+++ b/THANKS
@@ -23,6 +23,7 @@ Mitsuru Chinen <mchinen@yamato.ibm.com>
Peter Breitenlohner <peb@mppmu.mpg.de>
Peter Vrabec <pvrabec@redhat.com>
Robert Millan <rmh@aybabtu.com>
+Victor Rodriguez <vm.rod25@gmail.com>
Local Variables:
mode: Fundamental
diff --git a/tests/symlink-bad-length.at b/tests/symlink-bad-length.at
index e1a7093..2cdc692 100644
--- a/tests/symlink-bad-length.at
+++ b/tests/symlink-bad-length.at
@@ -57,7 +57,7 @@ cat stderr | grep -v \
echo >&2 STDERR
],
[0],
-[-rw-rw-r-- 1 10029 10031 13 Nov 25 11:52 FILE
+[-rw-rw-r-- 1 10029 10031 13 Nov 25 2014 FILE
],[STDERR
])
--
2.1.0

View File

@ -0,0 +1,23 @@
After wrapping gnc-fq-check and gnc-fq-helper we can no longer execute them
with perl, so execute them directly instead.
--- gnucash-2.6.6/src/scm/price-quotes.scm.orig 2014-04-27 17:42:28.000000000 -0500
+++ gnucash-2.6.6/src/scm/price-quotes.scm 2015-07-09 16:12:11.196218472 -0500
@@ -74,7 +74,7 @@
(define (start-program)
(if (not (string-null? gnc:*finance-quote-check*))
(set! program (gnc-spawn-process-async
- (list "perl" "-w" gnc:*finance-quote-check*) #t))))
+ (list gnc:*finance-quote-check*) #t))))
(define (get-sources)
(if (not (null? program))
@@ -158,7 +158,7 @@
(define (start-quoter)
(if (not (string-null? gnc:*finance-quote-helper*))
(set! quoter (gnc-spawn-process-async
- (list "perl" "-w" gnc:*finance-quote-helper*) #t))))
+ (list gnc:*finance-quote-helper*) #t))))
(define (get-quotes)
(if (not (null? quoter))

View File

@ -0,0 +1,16 @@
The tests/org-mode.scm tests expects 'jpl-outline-es' to be read as UTF-8.
--- guile-present-0.3.0/tests/org-mode.scm 2014-09-23 22:29:51.426705753 +0200
+++ guile-present-0.3.0/tests/org-mode.scm 2014-09-23 22:30:09.634705548 +0200
@@ -194,9 +194,10 @@
"(Just another hacker)"
"wingo@fluendo.com")
(p "Julien Moutte, CEO" "julien@fluendo.com")))
+ (with-fluids ((%default-port-encoding "UTF-8"))
(call-with-input-file
(in-vicinity *top-srcdir* "tests/jpl-outline-es")
- org->presentation)))
+ org->presentation))))
(setlocale LC_ALL "")
(exit-with-summary (run-all-defined-test-cases))

View File

@ -0,0 +1,16 @@
This patch fixes a bug in guile-rsvg's build system, whereby the CFLAGS
and LDFLAGS for Guile would not be captured.
--- guile-rsvg-2.18.1/configure.ac 2015-08-31 22:30:30.578909480 +0200
+++ guile-rsvg-2.18.1/configure.ac 2015-08-31 22:32:15.071516084 +0200
@@ -39,6 +39,10 @@ AC_SUBST(WARN_CFLAGS)
GUILE_PKG([2.2 2.0 1.8])
+dnl The above macro fails to set the 'GUILE_CFLAGS' and 'GUILE_LIBS'
+dnl substitution variables, hence this line.
+PKG_CHECK_MODULES(GUILE, guile-2.0)
+
PKG_CHECK_MODULES(GUILE_CAIRO, guile-cairo >= 1.4.0)
AC_SUBST(GUILE_CAIRO_LIBS)
AC_SUBST(GUILE_CAIRO_CFLAGS)

View File

@ -0,0 +1,15 @@
Rather than unconditionally using Mozilla's CA certificates, let the user tell
LWP's UserAgent where to find certificates with the PERL_LWP_SSL_CA_FILE,
HTTPS_CA_FILE, PERL_LWP_SSL_CA_PATH, or HTTPS_CA_DIR environment variables
instead.
--- Finance-Quote-1.37/lib/Finance/Quote/Tiaacref.pm.orig 2015-02-01 13:24:41.000000000 -0600
+++ Finance-Quote-1.37/lib/Finance/Quote/Tiaacref.pm 2015-07-07 20:09:47.278885944 -0500
@@ -30,7 +30,6 @@
package Finance::Quote::Tiaacref;
require 5.005;
require LWP::Protocol::https;
-require Mozilla::CA;
use strict;

View File

@ -0,0 +1,29 @@
This patch make Xfce use "gnome" as the default icon theme and enable font antialias.
Taken from ArchLinux.
diff -upr xfce4-settings-4.12.0.orig/xfsettingsd/xsettings.xml xfce4-settings-4.12.0/xfsettingsd/xsettings.xml
--- xfce4-settings-4.12.0.orig/xfsettingsd/xsettings.xml 2015-02-24 03:33:11.000000000 +0200
+++ xfce4-settings-4.12.0/xfsettingsd/xsettings.xml 2015-03-01 09:52:24.376869688 +0200
@@ -6,8 +6,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xsettings" version="1.0">
<property name="Net" type="empty">
<property name="ThemeName" type="empty"/>
- <property name="IconThemeName" type="empty"/>
+ <property name="IconThemeName" type="string" value="gnome"/>
<property name="DoubleClickTime" type="int" value="400"/>
<property name="DoubleClickDistance" type="int" value="5"/>
<property name="DndDragThreshold" type="int" value="8"/>
@@ -19,9 +19,9 @@
</property>
<property name="Xft" type="empty">
<property name="DPI" type="empty"/>
- <property name="Antialias" type="int" value="-1"/>
+ <property name="Antialias" type="int" value="1"/>
<property name="Hinting" type="int" value="-1"/>
- <property name="HintStyle" type="string" value="hintnone"/>
+ <property name="HintStyle" type="string" value="hintfull"/>
<property name="RGBA" type="string" value="none"/>
<!-- <property name="Lcdfilter" type="string" value="none"/> -->
</property>

View File

@ -20,7 +20,9 @@
#:use-module (guix packages)
#:use-module (guix licenses)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages ed)
#:use-module (gnu packages base)
@ -29,6 +31,8 @@
#:use-module (gnu packages gawk)
#:use-module (gnu packages less)
#:use-module (gnu packages perl)
#:use-module (gnu packages python)
#:use-module (gnu packages mail)
#:use-module (gnu packages xml))
(define-public patchutils
@ -170,3 +174,31 @@ refreshed, and more.")
"Colordiff is Perl script wrapper on top of diff command which provides
'syntax highlighting' for various patch formats.")
(license gpl2+)))
(define-public patches
(let ((commit "26d7dbc"))
(package
(name "patches")
(version (string-append "0.0." commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/aliguori/patches")
(commit commit)))
(sha256
(base32
"1bah6y84nlii5yif189ns28dz1m9vmsyw66jyk2vr5yf0njf7mzh"))))
(build-system python-build-system)
(inputs `(("python-notmuch" ,python2-notmuch)))
(arguments
`(#:tests? #f ;no "test" target
#:python ,python-2)) ;not compatible with Python 3
(home-page "https://github.com/aliguori/patches")
(synopsis "Patch tracking tool")
(description
"'Patches' is a patch-tracking tool initially written for the QEMU
project. It provides commands that build a database of patches from a mailing
list, and commands that can search that database. It allows users to track
the status of a patch, apply patches, and search for patches---all that from
the command-line or from Emacs via its Notmuch integration.")
(license gpl2+))))

View File

@ -25,6 +25,7 @@
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages fontutils)
@ -36,6 +37,7 @@
#:use-module (gnu packages lesstif)
#:use-module (gnu packages image)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages qt)
#:use-module (gnu packages xorg)
#:use-module (gnu packages gnome)
#:use-module (gnu packages glib)
@ -103,6 +105,50 @@
(license license:gpl2+)
(home-page "http://poppler.freedesktop.org/")))
(define-public poppler-qt4
(package (inherit poppler)
(name "poppler-qt4")
(inputs `(("qt-4" ,qt-4)
,@(package-inputs poppler)))
(synopsis "Qt4 frontend for the Poppler PDF rendering library")))
(define-public python-poppler-qt4
(package
(name "python-poppler-qt4")
(version "0.24.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://pypi.python.org/packages/source/p"
"/python-poppler-qt4/python-poppler-qt4-"
version ".tar.gz"))
(sha256
(base32
"0x63niylkk4q3h3ay8zrk3m1xiik0x3hlr4gvj7kswx48qi1vb99"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after
'unpack 'patch-poppler-include-paths
(lambda _
(substitute* (find-files "." "poppler-.*\\.sip")
(("qt4/poppler-.*\\.h" header)
(string-append "poppler/" header)))
#t)))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("python-sip" ,python-sip)
("python-pyqt-4" ,python-pyqt-4)
("poppler-qt4" ,poppler-qt4)))
(home-page "https://pypi.python.org/pypi/python-poppler-qt4")
(synopsis "Python bindings for Poppler-Qt4")
(description
"This package provides Python bindings for the Qt4 interface of the
Poppler PDF rendering library.")
(license license:lgpl2.1+)))
(define-public xpdf
(package
(name "xpdf")

View File

@ -1052,6 +1052,46 @@ contained in Appendix A of FIPS Publication 181, \"Standard for Automated
Password Generator\".")
(license (package-license perl))))
(define-public perl-czplib
(package
(name "perl-czplib")
(version "1.0.5")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/czplib/czplib.v"
version ".tgz"))
(sha256
(base32
"12kln8l5h406r1ss6zbazgcshmys9nvabkrhvk2zwrrgl1saq1kf"))
(modules '((guix build utils)))
(snippet
'(begin
;; Remove .git directory
(delete-file-recursively ".git")
#t))))
(build-system perl-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'configure)
(delete 'build)
(replace
'install
(lambda* (#:key outputs #:allow-other-keys)
(copy-recursively "."
(string-append (assoc-ref outputs "out")
"/plib/perl5/site_perl/"
,(package-version perl)
"/czplib/"))
#t)))))
(home-page "http://sourceforge.net/projects/czplib/")
(synopsis "Library for genomic analysis")
(description "Chaolin Zhang's Perl Library (czplib) contains assorted
functions and data structures for processing and analysing genomic and
bioinformatics data.")
(license gpl3+)))
(define-public perl-data-dump
(package
(name "perl-data-dump")
@ -1293,6 +1333,31 @@ applicable).")
Date::Calc.")
(license (list (package-license perl) lgpl2.0+))))
(define-public perl-date-manip
(package
(name "perl-date-manip")
(version "6.50")
(source
(origin
(method url-fetch)
(uri (string-append "https://cpan.metacpan.org/authors/id/S/SB/SBECK/"
"Date-Manip-" version ".tar.gz"))
(sha256
(base32
"0zd0wbf91i49753rnf7m1lw197hdl5r97mxy0n43zdmcmhvkb3qq"))))
(build-system perl-build-system)
(arguments
;; Tests would require tzdata for timezone information, but tzdata is in
;; (gnu packages base) which would create a circular dependency. TODO:
;; Maybe put this package elsewhere so we can turn on tests.
'(#:tests? #f))
(home-page "http://search.cpan.org/dist/Date-Manip")
(synopsis "Date manipulation routines")
(description "Date::Manip is a series of modules for common date/time
operations, such as comparing two times, determining a date a given amount of
time from another, or parsing international times.")
(license (package-license perl))))
(define-public perl-datetime
(package
(name "perl-datetime")
@ -1666,7 +1731,7 @@ particular command is available.")
(home-page "http://search.cpan.org/dist/Devel-GlobalDestruction")
(synopsis "Provides equivalent of ${^GLOBAL_PHASE} eq 'DESTRUCT' for older perls")
(description "Devel::GlobalDestruction provides a function returning the
equivalent of \"${^GLOBAL_PHASE} eq 'DESTRUCT'\" for older perls.")
equivalent of \"$@{^GLOBAL_PHASE@} eq 'DESTRUCT'\" for older perls.")
(license (package-license perl))))
(define-public perl-devel-lexalias
@ -1910,7 +1975,7 @@ constructors, which speeds code up at runtime by a significant amount. String
eval is not without its issues however - it's difficult to control the scope
it's used in (which determines which variables are in scope inside the eval),
and it's easy to miss compilation errors, since eval catches them and sticks
them in $@ instead. This module attempts to solve these problems. It
them in $@@ instead. This module attempts to solve these problems. It
provides an eval_closure function, which evals a string in a clean
environment, other than a fixed list of specified variables. Compilation
errors are rethrown automatically.")
@ -1954,7 +2019,7 @@ in your modules in a \"Java-esque\" manner.")
(description
"Exporter::Lite is an alternative to Exporter, intended to provide a
lightweight subset of the most commonly-used functionality. It supports
import(), @EXPORT and @EXPORT_OK and not a whole lot else.")
import(), @@EXPORT and @@EXPORT_OK and not a whole lot else.")
(home-page (string-append "http://search.cpan.org/~neilb/"
"Exporter-Lite-" version))
(license (package-license perl))))

View File

@ -1,5 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -17,18 +19,50 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages photo)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages libusb)
#:use-module (guix download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (gnu packages autotools)
#:use-module (gnu packages readline)
#:use-module (gnu packages popt)
#:use-module (gnu packages base)
#:use-module (gnu packages boost)
#:use-module (gnu packages compression)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gl)
#:use-module (gnu packages graphics)
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages libusb)
#:use-module (gnu packages maths)
#:use-module (gnu packages perl)
#:use-module (gnu packages base))
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages readline)
#:use-module (gnu packages web)
#:use-module (gnu packages xfig)
#:use-module (gnu packages xml))
(define-public libraw
(package
(name "libraw")
(version "0.17.0")
(source (origin
(method url-fetch)
(uri (string-append "http://www.libraw.org/data/LibRaw-"
version ".tar.gz"))
(sha256
(base32
"043kckxjqanw8dl3m9f6kvsf0l20ywxmgxd1xb0slj6m8l4w4hz6"))))
(build-system gnu-build-system)
(home-page "http://www.libraw.org")
(synopsis "Raw image decoder")
(description
"LibRaw is a library for reading RAW files obtained from digital photo
cameras (CRW/CR2, NEF, RAF, DNG, and others).")
(license license:lgpl2.1+)))
(define-public libexif
(package
@ -47,7 +81,7 @@
(description
"The libexif C library allows applications to read, edit, and save EXIF
data as produced by digital cameras.")
(license lgpl2.1+)))
(license license:lgpl2.1+)))
(define-public libgphoto2
(package
@ -77,7 +111,7 @@ MTP, and other vendor specific protocols for controlling and transferring data
from digital cameras.")
;; 'COPYING' says LGPLv2.1+, but in practices files are under LGPLv2+.
(license lgpl2.1+)))
(license license:lgpl2.1+)))
(define-public gphoto2
(package
@ -120,7 +154,7 @@ number of different digital cameras. Through libgphoto2, it supports PTP,
MTP, and much more.")
;; Files are typically under LGPLv2+, but 'COPYING' says GPLv2+.
(license gpl2+)))
(license license:gpl2+)))
(define-public perl-image-exiftool
(package
@ -154,3 +188,73 @@ MTP, and much more.")
"This package provides the 'exiftool' command and the 'Image::ExifTool'
Perl library to manipulate EXIF tags of digital images.")
(license (package-license perl))))
(define-public libpano13
(package
(name "libpano13")
(version "2.9.19")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/panotools/libpano13/"
"libpano13-" version "/"
"libpano13-" version ".tar.gz"))
(sha256
(base32
"1a4m3plmfcrrplqs9zfzhc5apibn10m5sajpizm1sd3q74w5fwq3"))))
(build-system cmake-build-system)
(inputs
`(("libjpeg" ,libjpeg)
("libpng" ,libpng)
("libtiff" ,libtiff)
("zlib" ,zlib)))
(home-page "http://panotools.sourceforge.net/")
(synopsis "Library for panoramic images")
(description
"The libpano13 package contains the backend library written by the
Panorama Tools project for building panoramic images from a set of
overlapping images, as well as some command line tools.")
(license license:gpl2+)))
(define-public enblend-enfuse
(package
(name "enblend-enfuse")
(version "4.1.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/enblend/"
name "/"
name "-" (version-major+minor version) "/"
name "-" version ".tar.gz"))
(sha256
(base32
"1b7r1nnwaind0344ckwggy0ghl0ipbk9jzylsxcjfl05rnasw00w"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
("perl" ,perl)
("perl-timedate" ,perl-timedate)
;; for building the documentation
("gnuplot" ,gnuplot)
("imagemagick" ,imagemagick)
("libxml2" ,libxml2)
("tidy" ,tidy)
("transfig" ,transfig)))
(inputs
`(("boost" ,boost)
("gsl" ,gsl)
("lcms" ,lcms)
("libjpeg" ,libjpeg)
("libpng" ,libpng)
("libtiff" ,libtiff)
("openexr" ,openexr)
("vigra" ,vigra)
("zlib" ,zlib)))
(arguments
`(#:configure-flags `("--enable-openmp")))
(home-page "http://enblend.sourceforge.net/")
(synopsis "Tools for combining and blending images")
(description
"Enblend blends away the seams in a panoramic image mosaic using a
multi-resolution spline. Enfuse merges different exposures of the same
scene to produce an image that looks much like a tone-mapped image.")
(license license:gpl2+)))

View File

@ -1,5 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -23,6 +25,7 @@
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnuzilla)
#:use-module (gnu packages linux)
@ -44,19 +47,77 @@
(sha256
(base32
"109w86kfqrgz83g9ivggplmgc77rz8kx8646izvm2jb57h4rbh71"))
(patches (list (search-patch "polkit-drop-test.patch")))))
(patches (list (search-patch "polkit-drop-test.patch")))
(modules '((guix build utils)))
(snippet
'(begin
(use-modules (guix build utils))
(substitute* "configure"
;; Replace libsystemd-login with libelogind.
(("libsystemd-login") "libelogind")
;; Skip the sanity check that the current system runs
;; systemd.
(("test ! -d /sys/fs/cgroup/systemd/") "false"))
(substitute* "src/polkit/polkitunixsession-systemd.c"
(("systemd") "elogind"))
(substitute* "src/polkitbackend/polkitbackendsessionmonitor-systemd.c"
(("systemd") "elogind"))
(substitute* "src/polkitbackend/polkitbackendjsauthority.c"
(("systemd") "elogind"))
(substitute* "src/polkitagent/polkitagentsession.c"
(("PACKAGE_PREFIX \"/lib/polkit-1/polkit-agent-helper-1\"")
"\"/run/setuid-programs/polkit-agent-helper-1\""))
(substitute* "src/polkitbackend/polkitbackendinteractiveauthority.c"
(("PACKAGE_DATA_DIR \"/polkit-1/actions\"")
"\"/run/current-system/profile/share/polkit-1/actions\""))
(substitute* "src/polkitbackend/polkitbackendjsauthority.c"
(("PACKAGE_SYSCONF_DIR \"/polkit-1/rules.d\"")
"\"/run/current-system/profile/etc/polkit-1/rules.d\""))
(substitute* "src/polkitbackend/polkitbackendjsauthority.c"
(("PACKAGE_DATA_DIR \"/polkit-1/rules.d\"")
"\"/run/current-system/profile/share/polkit-1/rules.d\""))))))
(build-system gnu-build-system)
(inputs
`(("expat" ,expat)
("glib:bin" ,glib "bin") ; for glib-mkenums
("intltool" ,intltool)
("linux-pam" ,linux-pam)
("elogind" ,elogind)
("mozjs" ,mozjs)
("nspr" ,nspr)))
(propagated-inputs
`(("glib" ,glib))) ; required by polkit-gobject-1.pc
(native-inputs
`(("pkg-config", pkg-config)))
`(("pkg-config" ,pkg-config)
("glib:bin" ,glib "bin") ; for glib-mkenums
("intltool" ,intltool)
("gobject-introspection" ,gobject-introspection)))
(arguments
`(#:configure-flags '("--sysconfdir=/etc"
"--enable-man-pages")
#:phases
(modify-phases %standard-phases
(add-after
'unpack 'fix-introspection-install-dir
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* (find-files "." "Makefile.in")
(("@INTROSPECTION_GIRDIR@")
(string-append out "/share/gir-1.0/"))
(("@INTROSPECTION_TYPELIBDIR@")
(string-append out "/lib/girepository-1.0/"))))))
(replace
'install
(lambda* (#:key outputs (make-flags '()) #:allow-other-keys)
;; Override sysconfdir during "make install", to avoid attempting
;; to install in /etc, and to instead install the skeletons in the
;; output directory.
(let ((out (assoc-ref outputs "out")))
(zero? (apply system*
"make" "install"
(string-append "sysconfdir=" out "/etc")
(string-append "polkit_actiondir="
out "/share/polkit-1/actions")
make-flags))))))))
(home-page "http://www.freedesktop.org/wiki/Software/polkit/")
(synopsis "Authorization API for privilege management")
(description "Polkit is an application-level toolkit for defining and

View File

@ -10,6 +10,7 @@
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@ -33,6 +34,7 @@
isc psfl public-domain x11-style))
#:use-module ((guix licenses) #:select (expat zlib) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages attr)
#:use-module (gnu packages compression)
#:use-module (gnu packages databases)
#:use-module (gnu packages fontutils)
@ -45,6 +47,7 @@
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages maths)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages networking)
@ -1171,7 +1174,7 @@ other Python program.")
"EmPy is a system for embedding Python expressions and statements in
template text; it takes an EmPy source file, processes it, and produces
output. This is accomplished via expansions, which are special signals to the
EmPy system and are set off by a special prefix (by default the at sign, @).
EmPy system and are set off by a special prefix (by default the at sign, @@).
EmPy can expand arbitrary Python expressions and statements in this way, as
well as a variety of special forms. Textual data not explicitly delimited in
this way is sent unaffected to the output, allowing Python to be used in
@ -1711,11 +1714,12 @@ Python tests.")
(base32
"1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m"))))
(build-system python-build-system)
(propagated-inputs
`(("python-fixtures" ,python-fixtures)
("python-testtools" ,python-testtools)))
(inputs
`(("python-setuptools" ,python-setuptools)
("python-testtools" ,python-testtools)
("python-subunit" ,python-subunit)
("python-fixtures" ,python-fixtures)
("python-mimeparse" ,python-mimeparse)))
(home-page "https://launchpad.net/testrepository")
(synopsis "Database for Python test results")
@ -4658,3 +4662,109 @@ from an XML-based format.")
(define-public python2-fonttools
(package-with-python2 python-fonttools))
(define-public python-ly
(package
(name "python-ly")
(version "0.9.2")
(source
(origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/source/p/python-ly/python-ly-"
version ".tar.gz"))
(sha256
(base32
"1bsjg4q9ihr8bfdclrcmb8yjcg8xm9dznh58f3zsyrkrjzwbhcd2"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(synopsis "Tool and library for manipulating LilyPond files")
(description "This package provides a Python library to parse, manipulate
or create documents in LilyPond format. A command line program ly is also
provided that can be used to do various manipulations with LilyPond files.")
(home-page "https://pypi.python.org/pypi/python-ly")
(license gpl2+)))
(define-public python-appdirs
(package
(name "python-appdirs")
(version "1.4.0")
(source
(origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/source/a/appdirs/appdirs-"
version
".tar.gz"))
(sha256
(base32
"1iddva7v3fq0aqzsahkazxr7vpw28mqcrsy818z4wyiqnkplbhlg"))))
(build-system python-build-system)
(inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "http://github.com/ActiveState/appdirs")
(synopsis
"Determine platform-specific dirs, e.g. a \"user data dir\"")
(description
"This module provides a portable way of finding out where user data
should be stored on various operating systems.")
(license license:expat)))
(define-public python2-appdirs
(package-with-python2 python-appdirs))
(define-public python-llfuse
(package
(name "python-llfuse")
(version "0.41")
(source (origin
(method url-fetch)
(uri (string-append
"https://bitbucket.org/nikratio/python-llfuse/downloads/"
"llfuse-" version ".tar.bz2"))
(sha256
(base32
"0yzy8ixpmxk00kdq6lx5vvwbs0n6s59qnja5q0js2ahbqyxiz2hb"))))
(build-system python-build-system)
(inputs
`(("fuse" ,fuse)
("attr" ,attr)))
(native-inputs
`(("pkg-config" ,pkg-config)
("python-setuptools" ,python-setuptools)))
(synopsis "Python bindings for FUSE")
(description
"Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
(home-page "https://bitbucket.org/nikratio/python-llfuse/")
;; Python-LLFUSE includes underscore.js, which is MIT (expat) licensed.
;; The rest of the package is licensed under LGPL2.0 or later.
(license (list license:expat lgpl2.0+))))
(define-public python2-llfuse
(package-with-python2 python-llfuse))
(define-public python-msgpack
(package
(name "python-msgpack")
(version "0.4.6")
(source (origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/source/m/"
"msgpack-python/msgpack-python-" version ".tar.gz"))
(sha256
(base32
"1527c76b6fn4zzkgfq5xvhh7x9a9686g7fjiz717rw5vklf5ik5z"))))
(build-system python-build-system)
(native-inputs
`(("python-setuptools" ,python-setuptools)))
(synopsis "MessagePack (de)serializer")
(description "MessagePack is a fast, compact binary serialization format,
suitable for similar data to JSON. This package provides CPython bindings for
reading and writing MessagePack data.")
(home-page "https://pypi.python.org/pypi/msgpack-python/")
(license asl2.0)))
(define-public python2-msgpack
(package-with-python2 python-msgpack))

View File

@ -1,8 +1,9 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -23,8 +24,10 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages databases)
#:use-module (gnu packages readline)
#:use-module (gnu packages autotools)
#:use-module (gnu packages java)
#:use-module (gnu packages libffi)
#:use-module (gnu packages gdbm)
#:use-module (gnu packages tls)
@ -34,6 +37,7 @@
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (gnu packages xml)
#:use-module (guix build-system ruby))
(define-public ruby
@ -192,16 +196,16 @@ packaging native C and Java extensions in Ruby.")
(define-public ruby-i18n
(package
(name "ruby-i18n")
(version "0.6.11")
(version "0.7.0")
(source (origin
(method url-fetch)
(uri (rubygems-uri "i18n" version))
(sha256
(base32
"0fwjlgmgry2blf8zlxn9c555cf4a16p287l599kz5104ncjxlzdk"))))
"1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; requires bundler
'(#:tests? #f)) ; no tests
(synopsis "Internationalization library for Ruby")
(description "Ruby i18n is an internationalization and localization
solution for Ruby programs. It features translation and localization,
@ -254,7 +258,7 @@ groups.")
(home-page "https://github.com/rspec/rspec-core")
(license license:expat)))
(define ruby-diff-lcs-for-rspec
(define-public ruby-diff-lcs
(package
(name "ruby-diff-lcs")
(version "1.2.5")
@ -290,7 +294,7 @@ standard diff-like tool.")
'(#:tests? #f)) ; avoid dependency cycles
(propagated-inputs
`(("ruby-rspec-support" ,ruby-rspec-support)
("ruby-diff-lcs" ,ruby-diff-lcs-for-rspec)))
("ruby-diff-lcs" ,ruby-diff-lcs)))
(synopsis "RSpec expectations library")
(description "Rspec-expectations provides a simple API to express expected
outcomes of a code example.")
@ -312,7 +316,7 @@ outcomes of a code example.")
'(#:tests? #f)) ; avoid dependency cycles
(propagated-inputs
`(("ruby-rspec-support" ,ruby-rspec-support)
("ruby-diff-lcs" ,ruby-diff-lcs-for-rspec)))
("ruby-diff-lcs" ,ruby-diff-lcs)))
(synopsis "RSpec stubbing and mocking library")
(description "Rspec-mocks provides RSpec's \"test double\" framework, with
support for stubbing and mocking.")
@ -348,13 +352,13 @@ expectations and mocks frameworks.")
(define-public bundler
(package
(name "bundler")
(version "1.9.9")
(version "1.10.6")
(source (origin
(method url-fetch)
(uri (rubygems-uri "bundler" version))
(sha256
(base32
"12qk1569pswa9mmid6lsqy2napn9fmkbmv0k7xkl52nyfh8rsy4d"))))
"1vlzfq0bkkj4jyq6av0y55mh5nj5n0f3mfbmmifwgkh44g8k6agv"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; avoid dependency cycles
@ -364,6 +368,143 @@ specified in a \"Gemfile\", as well as their dependencies.")
(home-page "http://bundler.io/")
(license license:expat)))
(define-public ruby-builder
(package
(name "ruby-builder")
(version "3.2.2")
(source (origin
(method url-fetch)
(uri (rubygems-uri "builder" version))
(sha256
(base32
"14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2"))))
(build-system ruby-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'do-not-use-rvm
(lambda _
(substitute* "rakelib/tags.rake"
(("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
#t)))))
(synopsis "Ruby library to create structured data")
(description "Builder provides a number of builder objects that make it
easy to create structured data. Currently the following builder objects are
supported: XML Markup and XML Events.")
(home-page "https://github.com/jimweirich/builder")
(license license:expat)))
(define-public ruby-rjb
(package
(name "ruby-rjb")
(version "1.5.3")
(source (origin
(method url-fetch)
(uri (rubygems-uri "rjb" version))
(sha256
(base32
"0gzs92dagk981s4vrymnqg0vll783b9k564j0cdgp167nc5a2zg4"))))
(build-system ruby-build-system)
(arguments
`(#:tests? #f ; no rakefile
#:phases
(modify-phases %standard-phases
(add-before 'build 'set-java-home
(lambda* (#:key inputs #:allow-other-keys)
(setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
#t)))))
(native-inputs
`(("jdk" ,icedtea7 "jdk")))
(synopsis "Ruby-to-Java bridge using the Java Native Interface")
(description "RJB is a bridge program that connects Ruby and Java via the
Java Native Interface.")
(home-page "http://www.artonx.org/collabo/backyard/?RubyJavaBridge")
(license license:lgpl2.1+)))
(define-public ruby-atoulme-antwrap
(package
(name "ruby-atoulme-antwrap")
(version "0.7.5")
(source (origin
(method url-fetch)
(uri (rubygems-uri "atoulme-Antwrap" version))
(sha256
(base32
"05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
(build-system ruby-build-system)
;; Test data required for most of the tests are not included.
(arguments `(#:tests? #f))
(native-inputs
`(("ruby-hoe" ,ruby-hoe)))
(inputs
`(("ruby-rjb" ,ruby-rjb)))
(synopsis "Ruby wrapper for the Ant build tool")
(description "Antwrap is a Ruby module that wraps the Apache Ant build
tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
script.")
(home-page "http://rubyforge.org/projects/antwrap/")
(license license:expat)))
(define-public ruby-orderedhash
(package
(name "ruby-orderedhash")
(version "0.0.6")
(source (origin
(method url-fetch)
(uri (rubygems-uri "orderedhash" version))
(sha256
(base32
"0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; no test suite
(synopsis "Ruby library providing an order-preserving hash")
(description "Orderedhash is a Ruby library providing a hash
implementation that preserves the order of items and features some array-like
extensions.")
(home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
(license license:public-domain)))
(define-public ruby-xml-simple
(package
(name "ruby-xml-simple")
(version "1.1.5")
(source (origin
(method url-fetch)
(uri (rubygems-uri "xml-simple" version))
(sha256
(base32
"0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; no test suite
(synopsis "Simple Ruby library for XML processing")
(description "This library provides a simple API for XML processing in
Ruby.")
(home-page "https://github.com/maik/xml-simple")
(license license:ruby)))
(define-public ruby-thor
(package
(name "ruby-thor")
(version "0.19.1")
(source (origin
(method url-fetch)
(uri (rubygems-uri "thor" version))
(sha256
(base32
"08p5gx18yrbnwc6xc0mxvsfaxzgy2y9i78xq7ds0qmdm67q39y4z"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; no test suite
(native-inputs
`(("bundler" ,bundler)))
(synopsis "Ruby toolkit for building command-line interfaces")
(description "Thor is a toolkit for building powerful command-line
interfaces.")
(home-page "http://whatisthor.com/")
(license license:expat)))
(define-public ruby-useragent
(package
(name "ruby-useragent")
@ -592,6 +733,16 @@ options and parsing command line flags.")
(home-page "https://github.com/leejarvis/slop")
(license license:expat)))
(define-public ruby-slop-3
(package (inherit ruby-slop)
(version "3.6.0")
(source (origin
(method url-fetch)
(uri (rubygems-uri "slop" version))
(sha256
(base32
"00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
(define-public ruby-multipart-post
(package
(name "ruby-multipart-post")
@ -628,3 +779,348 @@ net/http library.")
(description "Arel is a SQL AST manager for Ruby. It simplifies the
generation of complex SQL queries and is compatible with various RDBMSes.")
(license license:expat)))
(define-public ruby-minitar
(package
(name "ruby-minitar")
(version "0.5.4")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "minitar" version))
(sha256
(base32
"1vpdjfmdq1yc4i620frfp9af02ia435dnpj8ybsd7dc3rypkvbka"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; missing a gemspec
(synopsis "Ruby library and utility for handling tar archives")
(description
"Archive::Tar::Minitar is a pure-Ruby library and command-line utility
that provides the ability to deal with POSIX tar archive files.")
(home-page "http://www.github.com/atoulme/minitar")
(license (list license:gpl2+ license:ruby))))
(define-public ruby-mini-portile
(package
(name "ruby-mini-portile")
(version "0.6.2")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "mini_portile" version))
(sha256
(base32
"0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; tests require network access
(synopsis "Ports system for Ruby developers")
(description "Mini-portile is a port/recipe system for Ruby developers.
It provides a standard way to compile against specific versions of libraries
to reproduce user environments.")
(home-page "http://github.com/flavorjones/mini_portile")
(license license:expat)))
(define-public ruby-nokogiri
(package
(name "ruby-nokogiri")
(version "1.6.6.2")
(source (origin
(method url-fetch)
(uri (rubygems-uri "nokogiri" version))
(sha256
(base32
"1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30"))))
(build-system ruby-build-system)
(arguments
;; Tests fail because Nokogiri can only test with an installed extension,
;; and also because many test framework dependencies are missing.
'(#:tests? #f
#:gem-flags (list "--" "--use-system-libraries"
(string-append "--with-xml2-include="
(assoc-ref %build-inputs "libxml2")
"/include/libxml2" ))))
(native-inputs
`(("ruby-hoe" ,ruby-hoe)
("ruby-rake-compiler", ruby-rake-compiler)))
(inputs
`(("zlib" ,zlib)
("libxml2" ,libxml2)
("libxslt" ,libxslt)))
(propagated-inputs
`(("ruby-mini-portile" ,ruby-mini-portile)))
(synopsis "HTML, XML, SAX, and Reader parser for Ruby")
(description "Nokogiri () parses and searches XML/HTML, and features
both CSS3 selector and XPath 1.0 support.")
(home-page "http://www.nokogiri.org/")
(license license:expat)))
(define-public ruby-method-source
(package
(name "ruby-method-source")
(version "0.8.2")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "method_source" version))
(sha256
(base32
"1g5i4w0dmlhzd18dijlqw5gk27bv6dj2kziqzrzb7mpgxgsd1sf2"))))
(build-system ruby-build-system)
(native-inputs
`(("ruby-bacon" ,ruby-bacon)
("git" ,git)))
(synopsis "Retrieve the source code for Ruby methods")
(description "Method_source retrieves the source code for Ruby methods.
Additionally, it can extract source code from Proc and Lambda objects or just
extract comments.")
(home-page "https://github.com/banister/method_source")
(license license:expat)))
(define-public ruby-coderay
(package
(name "ruby-coderay")
(version "1.1.0")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "coderay" version))
(sha256
(base32
"059wkzlap2jlkhg460pkwc1ay4v4clsmg1bp4vfzjzkgwdckr52s"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; missing test files
(synopsis "Ruby syntax highlighting library")
(description "Coderay is a Ruby library that provides syntax highlighting
for select languages.")
(home-page "http://coderay.rubychan.de")
(license license:expat)))
(define-public ruby-pry
(package
(name "ruby-pry")
(version "0.10.1")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "pry" version))
(sha256
(base32
"1j0r5fm0wvdwzbh6d6apnp7c0n150hpm9zxpm5xvcgfqr36jaj8z"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; no tests
(propagated-inputs
`(("ruby-coderay" ,ruby-coderay)
("ruby-method-source" ,ruby-method-source)
("ruby-slop" ,ruby-slop-3)))
(synopsis "Ruby REPL")
(description "Pry is an IRB alternative and runtime developer console for
Ruby. It features syntax highlighting, a plugin architecture, runtime
invocation, and source and documentation browsing.")
(home-page "http://pryrepl.org")
(license license:expat)))
(define-public ruby-thread-safe
(package
(name "ruby-thread-safe")
(version "0.3.5")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "thread_safe" version))
(sha256
(base32
"1hq46wqsyylx5afkp6jmcihdpv4ynzzq9ygb6z2pb1cbz5js0gcr"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; needs simplecov, among others
(synopsis "Thread-safe utilities for Ruby")
(description "The thread_safe library provides thread-safe collections and
utilities for Ruby.")
(home-page "https://github.com/ruby-concurrency/thread_safe")
(license license:asl2.0)))
(define-public ruby-tzinfo
(package
(name "ruby-tzinfo")
(version "1.2.2")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "tzinfo" version))
(sha256
(base32
"1c01p3kg6xvy1cgjnzdfq45fggbwish8krd0h864jvbpybyx7cgx"))))
(build-system ruby-build-system)
(propagated-inputs
`(("ruby-thread-safe" ,ruby-thread-safe)))
(synopsis "Time zone library for Ruby")
(description "TZInfo is a Ruby library that provides daylight savings
aware transformations between times in different time zones.")
(home-page "http://tzinfo.github.io")
(license license:expat)))
(define-public ruby-json
(package
(name "ruby-json")
(version "1.8.3")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "json" version))
(sha256
(base32
"1nsby6ry8l9xg3yw4adlhk2pnc7i0h0rznvcss4vk3v74qg0k8lc"))))
(build-system ruby-build-system)
(arguments '(#:tests? #f)) ; dependency cycle with sdoc
(synopsis "JSON library for Ruby")
(description "This Ruby library provides a JSON implementation written as
a native C extension.")
(home-page "http://json-jruby.rubyforge.org/")
(license (list license:ruby license:gpl2)))) ; GPL2 only
(define-public ruby-activesupport
(package
(name "ruby-activesupport")
(version "4.2.4")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "activesupport" version))
(sha256
(base32
"19n38rj6r1gyxgka18qvcxyla0fwan8a5p3ghq0pp8aj93sbmr6f"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; no tests
(propagated-inputs
`(("ruby-i18n" ,ruby-i18n)
("ruby-json" ,ruby-json)
("ruby-minitest" ,ruby-minitest)
("ruby-thread-safe" ,ruby-thread-safe)
("ruby-tzinfo" ,ruby-tzinfo)))
(synopsis "Ruby on Rails utility library")
(description "ActiveSupport is a toolkit of support libraries and Ruby
core extensions extracted from the Rails framework. It includes support for
multibyte strings, internationalization, time zones, and testing.")
(home-page "http://www.rubyonrails.org")
(license license:expat)))
(define-public ruby-ox
(package
(name "ruby-ox")
(version "2.2.1")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "ox" version))
(sha256
(base32
"00i11xd4ayh7349rhgskajfxn0qzkb74ab01217zix9qcapssxax"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; no tests
(synopsis "Optimized XML library for Ruby")
(description
"Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
written as a native C extension. It was designed to be an alternative to
Nokogiri and other Ruby XML parsers for generic XML parsing and as an
alternative to Marshal for Object serialization. ")
(home-page "http://www.ohler.com/ox")
(license license:expat)))
(define-public ruby-pg
(package
(name "ruby-pg")
(version "0.18.2")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "pg" version))
(sha256
(base32
"1axxbf6ij1iqi3i1r3asvjc80b0py5bz0m2wy5kdi5xkrpr82kpf"))))
(build-system ruby-build-system)
(arguments
'(#:test-target "spec"))
(native-inputs
`(("ruby-rake-compiler" ,ruby-rake-compiler)
("ruby-hoe" ,ruby-hoe)
("ruby-rspec" ,ruby-rspec)))
(inputs
`(("postgresql" ,postgresql)))
(synopsis "Ruby interface to PostgreSQL")
(description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
with PostgreSQL 8.4 and later.")
(home-page "https://bitbucket.org/ged/ruby-pg")
(license license:ruby)))
(define-public ruby-byebug
(package
(name "ruby-byebug")
(version "6.0.2")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "byebug" version))
(sha256
(base32
"0537h9qbhr6csahmzyn4lk1g5b2lcligbzd21gfy93nx9lbfdnzc"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; no tests
(synopsis "Debugger for Ruby 2")
(description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
TracePoint C API for execution control and the Debug Inspector C API for call
stack navigation. The core component provides support that front-ends can
build on. It provides breakpoint handling and bindings for stack frames among
other things and it comes with a command line interface.")
(home-page "http://github.com/deivid-rodriguez/byebug")
(license license:bsd-2)))
(define-public ruby-rack
(package
(name "ruby-rack")
(version "1.6.4")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "rack" version))
(sha256
(base32
"09bs295yq6csjnkzj7ncj50i6chfxrhmzg1pk6p0vd2lb9ac8pj5"))))
(build-system ruby-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-before 'check 'fix-tests
(lambda _
;; A few of the tests use the length of a file on disk for
;; Content-Length and Content-Range headers. However, this file
;; has a shebang in it which an earlier phase patches, growing
;; the file size from 193 to 239 bytes when the store prefix is
;; "/gnu/store".
(let ((size-diff (- (string-length (which "ruby"))
(string-length "/usr/bin/env ruby"))))
(substitute* '("test/spec_file.rb")
(("193")
(number->string (+ 193 size-diff)))
(("bytes(.)22-33" all delimiter)
(string-append "bytes"
delimiter
(number->string (+ 22 size-diff))
"-"
(number->string (+ 33 size-diff))))))
#t)))))
(native-inputs
`(("ruby-bacon" ,ruby-bacon)))
(synopsis "Unified web application interface for Ruby")
(description "Rack provides a minimal, modular and adaptable interface for
developing web applications in Ruby. By wrapping HTTP requests and responses,
it unifies the API for web servers, web frameworks, and software in between
into a single method call.")
(home-page "http://rack.github.io/")
(license license:expat)))

View File

@ -43,24 +43,15 @@
(define-public libssh
(package
(name "libssh")
(version "0.6.3")
(version "0.6.5")
(source (origin
(method url-fetch)
(uri (string-append "https://red.libssh.org/attachments/download/87/libssh-"
(uri (string-append
"https://red.libssh.org/attachments/download/121/libssh-"
version ".tar.xz"))
(sha256
(base32
"1jyaj9h1iglvn02hrvcchbx8ycjpj8b91h8mi459k7q5jp2xgd9b"))
(patches
;; Apply the patch as discussed at
;; <http://lists.gnu.org/archive/html/guix-devel/2014-10/msg00180.html>.
(list (origin
(uri
"http://git.libssh.org/projects/libssh.git/patch/?id=a033b93c616f4a81afc3fc6a017396d507d96c19")
(method url-fetch)
(sha256
(base32
"16fdkjcnhc6j7qxz9575fzr9044927ws5259yh0xb9yv1q14j0vh")))))))
"0b6wyx6bwbb8jpn8x4rhlrdiqwqrwrs0mxjmrnqykm9kw1ijgm8g"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags '("-DWITH_GCRYPT=ON")
@ -68,10 +59,7 @@
;; TODO: Add 'CMockery' and '-DWITH_TESTING=ON' for the test suite.
#:tests? #f))
(inputs `(("zlib" ,zlib)
;; Link against an older gcrypt, because libssh tries to access
;; fields of 'gcry_thread_cbs' that are now private:
;; src/threads.c:72:26: error: 'struct gcry_thread_cbs' has no member named 'mutex_init'
("libgcrypt", libgcrypt-1.5)))
("libgcrypt", libgcrypt)))
(synopsis "SSH client library")
(description
"libssh is a C library implementing the SSHv2 and SSHv1 protocol for
@ -188,15 +176,17 @@ Additionally, various channel-specific options can be negotiated.")
(define-public guile-ssh
(package
(name "guile-ssh")
(version "0.7.2")
(version "0.8.0")
(source (origin
;; ftp://memory-heap.org/software/guile-ssh/guile-ssh-VERSION.tar.gz
;; exists, but the server appears to be too slow and unreliable.
(method git-fetch)
(uri (git-reference
(url "https://github.com/artyom-poptsov/libguile-ssh.git")
(commit (string-append "v" version))))
(sha256
(base32
"1wcv10xv7ayrhrg77zyng6flknnlkzhni24nf8x9nic00zha8znk"))))
"1ld2khzylaylhqfsfcvbxs95frvm8pkr7dq40ia1wwn9c349fcdv"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-after
@ -235,7 +225,7 @@ Additionally, various channel-specific options can be negotiated.")
("which" ,which)))
(inputs `(("guile" ,guile-2.0)
("libssh" ,libssh)
("libgcrypt" ,libgcrypt-1.5)))
("libgcrypt" ,libgcrypt)))
(synopsis "Guile bindings to libssh")
(description
"Guile-SSH is a library that provides access to the SSH protocol for

View File

@ -22,6 +22,7 @@
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (guix build-system r)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages gcc)
@ -67,7 +68,11 @@
(add-before
'check 'set-timezone
;; Some tests require the timezone to be set.
(lambda _ (setenv "TZ" "UTC") #t)))
(lambda _ (setenv "TZ" "UTC") #t))
(add-after 'build 'make-info
(lambda _ (zero? (system* "make" "info"))))
(add-after 'build 'install-info
(lambda _ (zero? (system* "make" "install-info")))))
#:configure-flags
'("--with-blas=openblas"
"--with-lapack"
@ -83,11 +88,20 @@
"--with-system-pcre"
"--with-system-tre"
"--with-system-xz")))
;; R has some support for Java. When the JDK is available at configure
;; time environment variables pointing to the JDK will be recorded under
;; $R_HOME/etc and ./tools/getsp.java will be compiled which is used by "R
;; CMD javareconf". "R CMD javareconf" appears to only be used to update
;; the recorded environment variables in $R_HOME/etc. Refer to
;; https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Java-support
;; for additional information.
;; As the JDK is a rather large input with only very limited effects on R,
;; we decided to drop it.
(native-inputs
`(("bzip2" ,bzip2)
("perl" ,perl)
("pkg-config" ,pkg-config)
("texlive" ,texlive) ; needed to make vignettes
("texinfo" ,texinfo) ; for building HTML manuals
("which" ,which) ; for tests/Examples/base-Ex.R
("xz" ,xz)))
@ -96,7 +110,6 @@
("cairo" ,cairo)
("gfortran" ,gfortran)
("icu4c" ,icu4c)
("icedtea6" ,icedtea6 "jdk")
("lapack" ,lapack)
("libjpeg" ,libjpeg)
("libpng" ,libpng)
@ -119,3 +132,369 @@ and clustering. It also provides robust support for producing
publication-quality data plots. A large amount of 3rd-party packages are
available, greatly increasing its breadth and scope.")
(license license:gpl3+)))
(define-public r-colorspace
(package
(name "r-colorspace")
(version "1.2-6")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/colorspace_"
version ".tar.gz"))
(sha256
(base32 "0y8n4ljwhbdvkysdwgqzcnpv107pb3px1jip3k6svv86p72nacds"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/colorspace")
(synopsis "Color space manipulation")
(description
"This package carries out a mapping between assorted color spaces
including RGB, HSV, HLS, CIEXYZ, CIELUV, HCL (polar CIELUV), CIELAB and polar
CIELAB. Qualitative, sequential, and diverging color palettes based on HCL
colors are provided.")
(license license:bsd-3)))
(define-public r-dichromat
(package
(name "r-dichromat")
(version "2.0-0")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/dichromat_"
version ".tar.gz"))
(sha256
(base32 "1l8db1nk29ccqg3mkbafvfiw0775iq4gapysf88xq2zp6spiw59i"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/dichromat")
(synopsis "Color schemes for dichromats")
(description
"Dichromat collapses red-green or green-blue distinctions to simulate the
effects of different types of color-blindness.")
(license license:gpl2+)))
(define-public r-digest
(package
(name "r-digest")
(version "0.6.8")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/digest_"
version ".tar.gz"))
(sha256
(base32 "0m9grqv67hhf51lz10whymhw0g0d98466ka694kya5x95hn44qih"))))
(build-system r-build-system)
(home-page "http://dirk.eddelbuettel.com/code/digest.html")
(synopsis "Create cryptographic hash digests of R objects")
(description
"This package contains an implementation of a function 'digest()' for the
creation of hash digests of arbitrary R objects (using the md5, sha-1,
sha-256, crc32, xxhash and murmurhash algorithms) permitting easy comparison
of R language objects, as well as a function 'hmac()' to create hash-based
message authentication code.
Please note that this package is not meant to be deployed for cryptographic
purposes for which more comprehensive (and widely tested) libraries such as
OpenSSL should be used.")
(license license:gpl2+)))
(define-public r-gtable
(package
(name "r-gtable")
(version "0.1.2")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/gtable_"
version ".tar.gz"))
(sha256
(base32 "0k9hfj6r5y238gqh92s3cbdn34biczx3zfh79ix5xq0c5vkai2xh"))))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/gtable")
(synopsis "R library to arrange grobs in tables")
(description
"Gtable is a collection of tools to make it easier to work with
\"tables\" of grobs.")
(license license:gpl2+)))
(define-public r-labeling
(package
(name "r-labeling")
(version "0.3")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/labeling_"
version ".tar.gz"))
(sha256
(base32 "13sk7zrrrzry6ky1bp8mmnzcl9jhvkig8j4id9nny7z993mnk00d"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/labeling")
(synopsis "Axis labeling algorithms")
(description "The labeling package provides a range of axis labeling
algorithms.")
(license license:expat)))
(define-public r-magrittr
(package
(name "r-magrittr")
(version "1.5")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/magrittr_"
version ".tar.gz"))
(sha256
(base32 "1s1ar6rag8m277qcqmdp02gn4awn9bdj9ax0r8s32i59mm1mki05"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/magrittr/index.html")
(synopsis "A forward-pipe operator for R")
(description
"Magrittr provides a mechanism for chaining commands with a new
forward-pipe operator, %>%. This operator will forward a value, or the result
of an expression, into the next function call/expression. There is flexible
support for the type of right-hand side expressions. For more information,
see package vignette. To quote Rene Magritte, \"Ceci n'est pas un pipe.\"")
(license license:expat)))
(define-public r-munsell
(package
(name "r-munsell")
(version "0.4.2")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/munsell_"
version ".tar.gz"))
(sha256
(base32 "1bi5yi0i80778bbzx2rm4f0glpc34kvh24pwwfhm4v32izsqgrw4"))))
(build-system r-build-system)
(propagated-inputs
`(("r-colorspace" ,r-colorspace)))
(home-page "http://cran.r-project.org/web/packages/munsell")
(synopsis "Munsell colour system")
(description
"The Munsell package contains Functions for exploring and using the
Munsell colour system.")
(license license:expat)))
(define-public r-rcpp
(package
(name "r-rcpp")
(version "0.12.0")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/Rcpp_"
version ".tar.gz"))
(sha256
(base32 "182109z0yc1snqgd833ssl2cix6cbq83bcxmy5344b15ym820y38"))))
(build-system r-build-system)
(home-page "http://www.rcpp.org")
(synopsis "Seamless R and C++ Integration")
(description
"The Rcpp package provides R functions as well as C++ classes which offer
a seamless integration of R and C++. Many R data types and objects can be
mapped back and forth to C++ equivalents which facilitates both writing of new
code as well as easier integration of third-party libraries. Documentation
about Rcpp is provided by several vignettes included in this package, via the
'Rcpp Gallery' site at <http://gallery.rcpp.org>, the paper by Eddelbuettel
and Francois (2011, JSS), and the book by Eddelbuettel (2013, Springer); see
'citation(\"Rcpp\")' for details on these last two.")
(license license:gpl2+)))
(define-public r-plyr
(package
(name "r-plyr")
(version "1.8.3")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/plyr_"
version ".tar.gz"))
(sha256
(base32 "06v4zxawpjz37rp2q2ii5q43g664z9s29j4ydn0cz3crn7lzl6pk"))))
(build-system r-build-system)
(native-inputs `(("r-rcpp" ,r-rcpp)))
(home-page "http://had.co.nz/plyr")
(synopsis "Tools for Splitting, Applying and Combining Data")
(description
"Plyr is a set of tools that solves a common set of problems: you need to
break a big problem down into manageable pieces, operate on each piece and
then put all the pieces back together. For example, you might want to fit a
model to each spatial location or time point in your study, summarise data by
panels or collapse high-dimensional arrays to simpler summary statistics.")
(license license:expat)))
(define-public r-proto
(package
(name "r-proto")
(version "0.3-10")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/proto_" version ".tar.gz"))
(sha256
(base32 "03mvzi529y6kjcp9bkpk7zlgpcakb3iz73hca6rpjy14pyzl3nfh"))))
(build-system r-build-system)
(home-page "http://r-proto.googlecode.com")
(synopsis "Prototype object-based programming")
(description
"Proto is an object oriented system using object-based, also called
prototype-based, rather than class-based object oriented ideas.")
(license license:gpl2+)))
(define-public r-rcolorbrewer
(package
(name "r-rcolorbrewer")
(version "1.1-2")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/RColorBrewer_"
version ".tar.gz"))
(sha256
(base32 "1pfcl8z1pnsssfaaz9dvdckyfnnc6rcq56dhislbf571hhg7isgk"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/RColorBrewer")
(synopsis "ColorBrewer palettes")
(description
"This package provides color schemes for maps (and other graphics)
designed by Cynthia Brewer as described at http://colorbrewer2.org")
;; Includes code licensed under bsd-4
(license license:asl2.0)))
(define-public r-stringi
(package
(name "r-stringi")
(version "0.5-5")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://cran/src/contrib/stringi_"
version
".tar.gz"))
(sha256
(base32
"183wrrjhpgl1wbnn9lhghyvhz7l2mc64mpcmzplckal7y9j7pmhw"))))
(build-system r-build-system)
(inputs `(("icu4c" ,icu4c)))
(native-inputs `(("pkg-config" ,pkg-config)))
(home-page "http://stringi.rexamine.com/")
(synopsis "Character string processing facilities")
(description
"This package allows for fast, correct, consistent, portable, as well as
convenient character string/text processing in every locale and any native
encoding. Owing to the use of the ICU library, the package provides R users
with platform-independent functions known to Java, Perl, Python, PHP, and Ruby
programmers. Among available features there are: pattern searching
(e.g. via regular expressions), random string generation, string collation,
transliteration, concatenation, date-time formatting and parsing, etc.")
(license license:bsd-3)))
(define-public r-stringr
(package
(name "r-stringr")
(version "1.0.0")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/stringr_"
version ".tar.gz"))
(sha256
(base32 "0jnz6r9yqyf7dschr2fnn1slg4wn6b4ik5q00j4zrh43bfw7s9pq"))))
(build-system r-build-system)
(propagated-inputs
`(("r-magrittr" ,r-magrittr)
("r-stringi" ,r-stringi)))
(home-page "https://github.com/hadley/stringr")
(synopsis "Simple, consistent wrappers for common string operations")
(description
"Stringr is a consistent, simple and easy to use set of wrappers around
the fantastic 'stringi' package. All function and argument names (and
positions) are consistent, all functions deal with \"NA\"'s and zero length
vectors in the same way, and the output from one function is easy to feed into
the input of another.")
(license license:gpl2+)))
(define-public r-reshape2
(package
(name "r-reshape2")
(version "1.4.1")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/reshape2_"
version ".tar.gz"))
(sha256
(base32 "0hl082dyk3pk07nqprpn5dvnrkqhnf6zjnjig1ijddxhlmsrzm7v"))))
(build-system r-build-system)
(propagated-inputs
`(("r-plyr" ,r-plyr)
("r-rcpp" ,r-rcpp)
("r-stringr" ,r-stringr)))
(home-page "https://github.com/hadley/reshape")
(synopsis "Flexibly reshape data: a reboot of the \"reshape\" package")
(description
"Reshape2 is an R library to flexibly restructure and aggregate data
using just two functions: melt and dcast (or acast).")
(license license:expat)))
(define-public r-scales
(package
(name "r-scales")
(version "0.2.5")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/scales_"
version ".tar.gz"))
(sha256
(base32 "12xrmn1vh64dl46bq7n7pa427aicb2ifjrby9in3m32nyvir0kac"))))
(build-system r-build-system)
(propagated-inputs
`(("r-dichromat" ,r-dichromat)
("r-labeling" ,r-labeling)
("r-munsell" ,r-munsell)
("r-plyr" ,r-plyr)
("r-rcolorbrewer" ,r-rcolorbrewer)
("r-rcpp" ,r-rcpp)))
(home-page "https://github.com/hadley/scales")
(synopsis "Scale functions for visualization")
(description
"This package provides graphical scales that map data to aesthetics, and
provides methods for automatically determining breaks and labels for axes and
legends.")
(license license:expat)))
(define-public r-ggplot2
(package
(name "r-ggplot2")
(version "1.0.1")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cran/src/contrib/ggplot2_"
version ".tar.gz"))
(sha256
(base32 "0794kjqi3lrxb33lr1mykd58959hlgkhdn259vj8fxrh65mqw920"))))
(build-system r-build-system)
(propagated-inputs
`(("r-digest" ,r-digest)
("r-gtable" ,r-gtable)
("r-plyr" ,r-plyr)
("r-proto" ,r-proto)
("r-reshape2" ,r-reshape2)
("r-scales" ,r-scales)))
(home-page "http://ggplot2.org")
(synopsis "An implementation of the grammar of graphics")
(description
"Ggplot2 is an implementation of the grammar of graphics in R. It
combines the advantages of both base and lattice graphics: conditioning and
shared axes are handled automatically, and you can still build up a plot step
by step from multiple data sources. It also implements a sophisticated
multidimensional conditioning system and a consistent interface to map data to
aesthetic attributes.")
(license license:gpl2+)))

View File

@ -98,24 +98,6 @@ changes to project files over time. It supports both a distributed workflow
as well as the classic centralized workflow.")
(license gpl2+)))
(define (package-transitive-propagated-labels* package)
"Return a list of the input labels of PACKAGE and its transitive inputs."
(let ((name (package-name package)))
`(,name
,@(map (match-lambda
((label (? package? _) . _)
label))
(package-transitive-propagated-inputs package)))))
(define (package-propagated-input-refs inputs packages)
"Return a list of (assoc-ref INPUTS <package-name>) for each package in
PACKAGES and their propagated inputs."
(map (lambda (l)
`(assoc-ref ,inputs ,l))
(delete-duplicates ;XXX: efficiency
(append-map package-transitive-propagated-labels*
packages))))
(define-public git
;; Keep in sync with 'git-manpages'!
(package
@ -238,11 +220,13 @@ PACKAGES and their propagated inputs."
`("PERL5LIB" ":" prefix
,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
(list
,@(package-propagated-input-refs
,@(transitive-input-references
'inputs
(list perl-authen-sasl
perl-net-smtp-ssl
perl-io-socket-ssl))))))
(map (lambda (l)
(assoc l (inputs)))
'("perl-authen-sasl"
"perl-net-smtp-ssl"
"perl-io-socket-ssl")))))))
;; Tell 'git-submodule' where Perl is.
(wrap-program git-sm

View File

@ -370,14 +370,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
(define-public ffmpeg
(package
(name "ffmpeg")
(version "2.7.2")
(version "2.8")
(source (origin
(method url-fetch)
(uri (string-append "http://www.ffmpeg.org/releases/ffmpeg-"
version ".tar.bz2"))
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
version ".tar.xz"))
(sha256
(base32
"1wlygd0jp34dk4qagi4h9psn4yk8zgyj7zy9lrpm5332mm87bsvw"))))
"10l1iwc01k1algk2v4vzsrahdvqjmjfi3qazm2cwism0d8hsfg4r"))))
(build-system gnu-build-system)
(inputs
`(("fontconfig" ,fontconfig)
@ -403,7 +403,6 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
("zlib", zlib)))
(native-inputs
`(("bc" ,bc)
("bzip2" ,bzip2)
("perl" ,perl)
("pkg-config" ,pkg-config)
("texinfo" ,texinfo)
@ -692,7 +691,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
`(("alsa-lib" ,alsa-lib)
("enca" ,enca)
("ffmpeg" ,ffmpeg)
("jack" ,jack-2)
("jack" ,jack-1)
("ladspa" ,ladspa)
("lcms" ,lcms)
("libass" ,libass)
@ -792,15 +791,15 @@ projects while introducing many more.")
(define-public youtube-dl
(package
(name "youtube-dl")
(version "2015.08.16.1")
(version "2015.09.03")
(source (origin
(method url-fetch)
(uri (string-append "http://youtube-dl.org/downloads/"
(uri (string-append "https://youtube-dl.org/downloads/"
version "/youtube-dl-"
version ".tar.gz"))
(sha256
(base32
"04g78anvy519pj8m8ys1ifmnmp1x3i9bw3afwqjch71n9f77papy"))))
"0wxjbqr07rm26iih12yhv0qwspfrg9safhgnrp8misqjjk4fz86z"))))
(build-system python-build-system)
(inputs `(("setuptools" ,python-setuptools)))
(home-page "http://youtube-dl.org")

View File

@ -169,6 +169,10 @@ traversing network address translators (NATs) and firewalls.")
(base32
"08ds8s32cjslms1q227ihd6jz35583v378ij4pknfa5xngfijhrb"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
'("--sysconfdir=/etc"
"--localstatedir=/var")))
(inputs `(("zlib" ,zlib)
("lzo" ,lzo)
("openssl" ,openssl)))

View File

@ -663,6 +663,59 @@ minimum to provide high performance operation.")
;; bundled CuTest framework uses a different non-copyleft license.
(license (list l:asl2.0 (l:non-copyleft "file://test/CuTest-README.txt")))))
(define-public sassc
;; libsass must be statically linked and it isn't included in the sassc
;; release tarballs, hence this odd package recipe.
(let* ((version "3.2.5")
(libsass
(origin
(method url-fetch)
(uri (string-append
"https://github.com/sass/libsass/archive/"
version ".tar.gz"))
(file-name (string-append "libsass-" version ".tar.gz"))
(sha256
(base32
"1x25k6p1s1yzsdpzb7bzh8japilmi1mk3z96q66pycbinj9z9is4")))))
(package
(name "sassc")
(version version)
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/sass/sassc/archive/"
version ".tar.gz"))
(file-name (string-append "sassc-" version ".tar.gz"))
(sha256
(base32
"1xf3w75w840rj0nx375rxi7mcv1ngqqq8p3zrzjlyx8jfpnldmv5"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags '("CC=gcc")
#:test-target "test"
#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-after 'unpack 'unpack-libsass-and-set-path
(lambda* (#:key inputs #:allow-other-keys)
(and (zero? (system* "tar" "xvf" (assoc-ref inputs "libsass")))
(begin
(setenv "SASS_LIBSASS_PATH"
(string-append (getcwd) "/libsass-" ,version))
#t))))
(replace 'install ; no install target
(lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin")))
(mkdir-p bin)
(copy-file "bin/sassc" (string-append bin "/sassc"))
#t))))))
(inputs
`(("libsass" ,libsass)))
(synopsis "CSS pre-processor")
(description "SassC is a compiler written in C for the CSS pre-processor
language known as SASS.")
(home-page "http://sass-lang.com/libsass")
(license l:expat))))
(define-public perl-apache-logformat-compiler
(package
@ -1620,6 +1673,39 @@ with Encode::decode(locale => $string).")
which can be used to parse directory listings.")
(home-page "http://search.cpan.org/~gaas/File-Listing/")))
(define-public perl-finance-quote
(package
(name "perl-finance-quote")
(version "1.37")
(source
(origin
(method url-fetch)
(uri (string-append "https://cpan.metacpan.org/authors/id/E/EC/ECOCODE/"
"Finance-Quote-" version ".tar.gz"))
(sha256
(base32
"1b6pbh7f76fb5sa4f0lhx085xy55pprz5v7z7li7pqiyw7i4f4bf"))
(patches (list
(search-patch "perl-finance-quote-unuse-mozilla-ca.patch")))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-datetime" ,perl-datetime)
("perl-html-parser" ,perl-html-parser)
("perl-html-tableextract" ,perl-html-tableextract)
("perl-html-tree" ,perl-html-tree)
("perl-http-cookies" ,perl-http-cookies)
("perl-http-message" ,perl-http-message)
("perl-json" ,perl-json)
("perl-libwww" ,perl-libwww)
("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
("perl-uri" ,perl-uri)))
(home-page "http://search.cpan.org/dist/Finance-Quote")
(synopsis "Stock and mutual fund quotes")
(description
"Finance::Quote gets stock quotes from various internet sources, including
Yahoo! Finance, Fidelity Investments, and the Australian Stock Exchange.")
(license l:gpl2)))
(define-public perl-gssapi
(package
(name "perl-gssapi")
@ -1643,6 +1729,28 @@ which can be used to parse directory listings.")
described in RFC 2744.")
(license (package-license perl))))
(define-public perl-html-element-extended
(package
(name "perl-html-element-extended")
(version "1.18")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/M/MS/MSISK/"
"HTML-Element-Extended-" version ".tar.gz"))
(sha256
(base32
"0axknss8c368r5i082yhkfj8mq0w4nglfrpcxcayyzzj13qimvzk"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-html-tree" ,perl-html-tree)))
(home-page "http://search.cpan.org/dist/HTML-Element-Extended")
(synopsis "Manipulate tables of HTML::Element")
(description
"HTML::Element::Extended is a Perl extension for manipulating a table
composed of HTML::Element style components.")
(license (package-license perl))))
(define-public perl-html-form
(package
(name "perl-html-form")
@ -1691,6 +1799,29 @@ described in RFC 2744.")
syntactic legitmacy.")
(license l:artistic2.0)))
(define-public perl-html-tableextract
(package
(name "perl-html-tableextract")
(version "2.13")
(source
(origin
(method url-fetch)
(uri (string-append "https://cpan.metacpan.org/authors/id/M/MS/MSISK/"
"HTML-TableExtract-" version ".tar.gz"))
(sha256
(base32
"01jimmss3q68a89696wmclvqwb2ybz6xgabpnbp6mm6jcni82z8a"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-html-element-extended" ,perl-html-element-extended)
("perl-html-parser" ,perl-html-parser)))
(home-page "http://search.cpan.org/dist/HTML-TableExtract")
(synopsis "Extract contents from HTML tables")
(description
"HTML::TableExtract is a Perl module for extracting the content contained
in tables within an HTML document, either as text or encoded element trees.")
(license (package-license perl))))
(define-public perl-html-tree
(package
(name "perl-html-tree")

View File

@ -1,5 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -21,6 +23,8 @@
#:use-module (guix packages)
#:use-module (gnu packages linux)
#:use-module (guix build-system gnu)
#:use-module (guix build-system haskell)
#:use-module (gnu packages haskell)
#:use-module (gnu packages base)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages perl)
@ -143,3 +147,78 @@ commands would.")
from scratch. i3 is primarily targeted at advanced users and
developers.")
(license bsd-3)))
(define-public xmonad
(package
(name "xmonad")
(version "0.11.1")
(synopsis "Tiling window manager")
(source (origin
(method url-fetch)
(uri (string-append "http://hackage.haskell.org/package/xmonad/"
"xmonad-" version ".tar.gz"))
(sha256
(base32
"1pfjssamiwpwjp1qqkm9m9p9s35pv381m0cwg6jxg0ppglibzq1r"))))
(build-system haskell-build-system)
(inputs
`(("ghc-mtl" ,ghc-mtl)
("ghc-utf8-string" ,ghc-utf8-string)
("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
("ghc-x11" ,ghc-x11)))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after
'install 'install-xsession
(lambda _
(let* ((xsessions (string-append %output "/share/xsessions")))
(mkdir-p xsessions)
(call-with-output-file
(string-append xsessions "/xmonad.desktop")
(lambda (port)
(format port "~
[Desktop Entry]~@
Name=~a~@
Comment=~a~@
Exec=~a/bin/xmonad~@
Type=Application~%" ,name ,synopsis %output)))))))))
(home-page "http://xmonad.org")
(description
"Xmonad is a tiling window manager for X. Windows are arranged
automatically to tile the screen without gaps or overlap, maximising screen
use. All features of the window manager are accessible from the keyboard: a
mouse is strictly optional. Xmonad is written and extensible in Haskell.
Custom layout algorithms, and other extensions, may be written by the user in
config files. Layouts are applied dynamically, and different layouts may be
used on each workspace. Xinerama is fully supported, allowing windows to be
tiled on several screens.")
(license bsd-3)))
(define-public ghc-xmonad-contrib
(package
(name "ghc-xmonad-contrib")
(version "0.11.3")
(source
(origin
(method url-fetch)
(uri (string-append "http://hackage.haskell.org/package/xmonad-contrib/"
"xmonad-contrib-" version ".tar.gz"))
(sha256
(base32
"14h9vr33yljymswj50wbimav263y9abdcgi07mvfis0zd08rxqxa"))))
(build-system haskell-build-system)
(propagated-inputs
`(("ghc-mtl" ,ghc-mtl)
("ghc-random" ,ghc-random)
("ghc-utf8-string" ,ghc-utf8-string)
("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
("ghc-x11" ,ghc-x11)
("ghc-x11-xft" ,ghc-x11-xft)
("xmonad" ,xmonad)))
(home-page "http://xmonad.org")
(synopsis "Third party extensions for xmonad")
(description
"Third party tiling algorithms, configurations, and scripts to Xmonad, a
tiling window manager for X.")
(license bsd-3)))

View File

@ -38,7 +38,8 @@
#:use-module (gnu packages gstreamer)
#:use-module (gnu packages linux)
#:use-module (gnu packages photo)
#:use-module (gnu packages pcre))
#:use-module (gnu packages pcre)
#:use-module (gnu packages pulseaudio))
(define-public gtk-xfce-engine
(package
@ -146,8 +147,9 @@ storage system.")
`(("pkg-config" ,pkg-config)
("intltool" ,intltool)))
(propagated-inputs
`(("gtk+-2" ,gtk+-2) ; required by libxfce4ui-1.pc
("gtk+-3" ,gtk+) ; required by libxfce4ui-2.pc
;; libxfce4kbd-private-2.pc refers to all these.
`(("gtk+" ,gtk+-2)
("libxfce4util" ,libxfce4util)
("xfconf" ,xfconf)))
(inputs `(("libsm" ,libsm)
@ -267,6 +269,8 @@ management D-Bus specification.")
"1c4p3ckghvsad1sj5v8wmar5mh9cbhail9mmhad2f9pwwb10z4ih"))
(patches (list (search-patch "xfce4-panel-plugins.patch")))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--enable-gtk3")))
(native-inputs
`(("pkg-config" ,pkg-config)
("intltool" ,intltool)))
@ -349,6 +353,37 @@ handle text and images, and has a feature to execute actions on specific text by
matching them against regular expressions.")
(license (list gpl2+))))
(define-public xfce4-pulseaudio-plugin
(package
(name "xfce4-pulseaudio-plugin")
(version "0.2.3")
(source (origin
(method url-fetch)
(uri (string-append "http://archive.xfce.org/src/panel-plugins/"
name "/" (version-major+minor version) "/"
name "-" version ".tar.bz2"))
(sha256
(base32
"0crvb2gyxbnlf46712arg3m2vqx81dixqhqdwss0bngpijy3ca78"))))
(build-system gnu-build-system)
(native-inputs
`(("intltool" ,intltool)
("pkg-config" ,pkg-config)))
(inputs
`(("exo" ,exo)
("libnotify" ,libnotify)
("libxfce4ui" ,libxfce4ui)
("pulseaudio" ,pulseaudio)
("xfce4-panel" ,xfce4-panel)))
(home-page "http://git.xfce.org/panel-plugins/xfce4-pulseaudio-plugin/")
(synopsis "PulseAudio panel plugin for Xfce")
(description
"Xfce PulseAudio plugin is a plugin for the Xfce panel which provides a
convenient way to adjust the audio volume of the PulseAudio sound system and
to an auto mixer tool like pavucontrol. It can optionally handle multimedia
keys for controlling the audio volume.")
(license gpl2+)))
(define-public xfce4-appfinder
(package
(name "xfce4-appfinder")
@ -417,7 +452,9 @@ allows you to shutdown the computer from Xfce.")
"/src/" name "-" version ".tar.bz2"))
(sha256
(base32
"108za1cmjslwzkdl76x9kwxkq8z734kg9nz8rxk057f10pqwxgh4"))))
"108za1cmjslwzkdl76x9kwxkq8z734kg9nz8rxk057f10pqwxgh4"))
(patches
(list (search-patch "xfce4-settings-defaults.patch")))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
@ -631,15 +668,17 @@ on your desktop.")
("thunar-volman" ,thunar-volman)
("tumlber" ,tumbler)
("xfce4-appfinder" ,xfce4-appfinder)
("xfce4-battery-plugin" ,xfce4-battery-plugin)
("xfce4-clipman-plugin" ,xfce4-clipman-plugin)
("xfce4-panel" ,xfce4-panel)
("xfce4-session" ,xfce4-session)
("xfce4-settings" ,xfce4-settings)
("xfce4-terminal" ,xfce4-terminal)
("xfconf" ,xfconf)
("xfdesktop" ,xfdesktop)
("xfwm4" ,xfwm4)))
("xfwm4" ,xfwm4)
;; Panel plugins.
("xfce4-battery-plugin" ,xfce4-battery-plugin)
("xfce4-clipman-plugin" ,xfce4-clipman-plugin)
("xfce4-pulseaudio-plugin" ,xfce4-pulseaudio-plugin)))
(home-page "http://www.xfce.org/")
(synopsis "Desktop environment (meta-package)")
(description

View File

@ -467,3 +467,25 @@ Canonical XML (part of Libxml2) and Exclusive Canonical XML (part of
Libxml2).")
(license (license:x11-style "file://COPYING"
"See 'COPYING' in the distribution."))))
(define-public minixml
(package
(name "minixml")
(version "2.9")
(source (origin
(method url-fetch)
(uri (string-append "http://www.msweet.org/files/project3/mxml-"
version ".tar.gz"))
(sha256
(base32
"14pzhlfidj5v1qbxy7a59yn4jz9pnjrs2zwalz228jsq7ijm9vfd"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f)) ;no "check" target
(home-page "http://www.minixml.org/")
(synopsis "Small XML parsing library")
(description
"Mini-XML is a small C library to read and write XML files and strings in
UTF-8 and UTF-16 encoding.")
;; LGPL 2.0+ with additional exceptions for static linking
(license license:lgpl2.0+)))

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -884,6 +885,9 @@ This is the GNU operating system, welcome!\n\n")))
;; The LVM2 rules are needed as soon as LVM2 or the device-mapper is
;; used, so enable them by default. The FUSE and ALSA rules are
;; less critical, but handy.
;;
;; XXX Keep this in sync with the 'udev-service' call in
;; %desktop-services.
(udev-service #:rules (list lvm2 fuse alsa-utils crda)))))
;;; base.scm ends here

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -24,12 +25,18 @@
#:use-module (gnu services xorg)
#:use-module (gnu services networking)
#:use-module (gnu system shadow)
#:use-module (gnu system linux) ; unix-pam-service
#:use-module (gnu packages glib)
#:use-module (gnu packages admin)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gnome)
#:use-module (gnu packages avahi)
#:use-module (gnu packages wicd)
#:use-module (gnu packages polkit)
#:use-module ((gnu packages linux)
#:select (lvm2 fuse alsa-utils crda))
#:use-module (guix monads)
#:use-module (guix records)
#:use-module (guix store)
#:use-module (guix gexp)
#:use-module (ice-9 match)
@ -39,6 +46,9 @@
geoclue-application
%standard-geoclue-applications
geoclue-service
polkit-service
elogind-configuration
elogind-service
%desktop-services))
;;; Commentary:
@ -372,6 +382,199 @@ site} for more information."
(shell
"/run/current-system/profile/sbin/nologin"))))))))
;;;
;;; Polkit privilege management service.
;;;
(define* (polkit-service #:key (polkit polkit))
"Return a service that runs the @command{polkit} privilege management
service. By querying the @command{polkit} service, a privileged system
component can know when it should grant additional capabilities to ordinary
users. For example, an ordinary user can be granted the capability to suspend
the system if the user is logged in locally."
(with-monad %store-monad
(return
(service
(documentation "Run the polkit privilege management service.")
(provision '(polkit-daemon))
(requirement '(dbus-system))
(start #~(make-forkexec-constructor
(list (string-append #$polkit "/lib/polkit-1/polkitd"))))
(stop #~(make-kill-destructor))
(user-groups (list (user-group
(name "polkitd")
(system? #t))))
(user-accounts (list (user-account
(name "polkitd")
(group "polkitd")
(system? #t)
(comment "Polkit daemon user")
(home-directory "/var/empty")
(shell
"/run/current-system/profile/sbin/nologin"))))
(pam-services (list (unix-pam-service "polkit-1")))))))
;;;
;;; Elogind login and seat management service.
;;;
(define-record-type* <elogind-configuration> elogind-configuration
make-elogind-configuration
elogind-configuration
(kill-user-processes? elogind-kill-user-processes?
(default #f))
(kill-only-users elogind-kill-only-users
(default '()))
(kill-exclude-users elogind-kill-exclude-users
(default '("root")))
(inhibit-delay-max-seconds elogind-inhibit-delay-max-seconds
(default 5))
(handle-power-key elogind-handle-power-key
(default 'poweroff))
(handle-suspend-key elogind-handle-suspend-key
(default 'suspend))
(handle-hibernate-key elogind-handle-hibernate-key
;; (default 'hibernate)
;; XXX Ignore it for now, since we don't
;; yet handle resume-from-hibernation in
;; our initrd.
(default 'ignore))
(handle-lid-switch elogind-handle-lid-switch
(default 'suspend))
(handle-lid-switch-docked elogind-handle-lid-switch-docked
(default 'ignore))
(power-key-ignore-inhibited? elogind-power-key-ignore-inhibited?
(default #f))
(suspend-key-ignore-inhibited? elogind-suspend-key-ignore-inhibited?
(default #f))
(hibernate-key-ignore-inhibited? elogind-hibernate-key-ignore-inhibited?
(default #f))
(lid-switch-ignore-inhibited? elogind-lid-switch-ignore-inhibited?
(default #t))
(holdoff-timeout-seconds elogind-holdoff-timeout-seconds
(default 30))
(idle-action elogind-idle-action
(default 'ignore))
(idle-action-seconds elogind-idle-action-seconds
(default (* 30 60)))
(runtime-directory-size-percent elogind-runtime-directory-size-percent
(default 10))
(runtime-directory-size elogind-runtime-directory-size
(default #f))
(remove-ipc? elogind-remove-ipc?
(default #t))
(suspend-state elogind-suspend-state
(default '("mem" "standby" "freeze")))
(suspend-mode elogind-suspend-mode
(default '()))
(hibernate-state elogind-hibernate-state
(default '("disk")))
(hibernate-mode elogind-hibernate-mode
(default '("platform" "shutdown")))
(hybrid-sleep-state elogind-hybrid-sleep-state
(default '("disk")))
(hybrid-sleep-mode elogind-hybrid-sleep-mode
(default
'("suspend" "platform" "shutdown"))))
(define (elogind-configuration-file config)
(define (yesno x)
(match x
(#t "yes")
(#f "no")
(_ (error "expected #t or #f, instead got:" x))))
(define char-set:user-name
(string->char-set "abcdefghijklmnopqrstuvwxyz0123456789_-"))
(define (valid-list? l pred)
(and-map (lambda (x) (string-every pred x)) l))
(define (user-name-list users)
(unless (valid-list? users char-set:user-name)
(error "invalid user list" users))
(string-join users " "))
(define (enum val allowed)
(unless (memq val allowed)
(error "invalid value" val allowed))
(symbol->string val))
(define (non-negative-integer x)
(unless (exact-integer? x) (error "not an integer" x))
(when (negative? x) (error "negative number not allowed" x))
(number->string x))
(define handle-actions
'(ignore poweroff reboot halt kexec suspend hibernate hybrid-sleep lock))
(define (handle-action x)
(enum x handle-actions))
(define (sleep-list tokens)
(unless (valid-list? tokens char-set:user-name)
(error "invalid sleep list" tokens))
(string-join tokens " "))
(define-syntax ini-file-clause
(syntax-rules ()
((_ config (prop (parser getter)))
(string-append prop "=" (parser (getter config)) "\n"))
((_ config str)
(string-append str "\n"))))
(define-syntax-rule (ini-file config file clause ...)
(text-file file (string-append (ini-file-clause config clause) ...)))
(ini-file
config "logind.conf"
"[Login]"
("KillUserProcesses" (yesno elogind-kill-user-processes?))
("KillOnlyUsers" (user-name-list elogind-kill-only-users))
("KillExcludeUsers" (user-name-list elogind-kill-exclude-users))
("InhibitDelayMaxSecs" (non-negative-integer elogind-inhibit-delay-max-seconds))
("HandlePowerKey" (handle-action elogind-handle-power-key))
("HandleSuspendKey" (handle-action elogind-handle-suspend-key))
("HandleHibernateKey" (handle-action elogind-handle-hibernate-key))
("HandleLidSwitch" (handle-action elogind-handle-lid-switch))
("HandleLidSwitchDocked" (handle-action elogind-handle-lid-switch-docked))
("PowerKeyIgnoreInhibited" (yesno elogind-power-key-ignore-inhibited?))
("SuspendKeyIgnoreInhibited" (yesno elogind-suspend-key-ignore-inhibited?))
("HibernateKeyIgnoreInhibited" (yesno elogind-hibernate-key-ignore-inhibited?))
("LidSwitchIgnoreInhibited" (yesno elogind-lid-switch-ignore-inhibited?))
("HoldoffTimeoutSecs" (non-negative-integer elogind-holdoff-timeout-seconds))
("IdleAction" (handle-action elogind-idle-action))
("IdleActionSeconds" (non-negative-integer elogind-idle-action-seconds))
("RuntimeDirectorySize"
(identity
(lambda (config)
(match (elogind-runtime-directory-size-percent config)
(#f (non-negative-integer (elogind-runtime-directory-size config)))
(percent (string-append (non-negative-integer percent) "%"))))))
("RemoveIpc" (yesno elogind-remove-ipc?))
"[Sleep]"
("SuspendState" (sleep-list elogind-suspend-state))
("SuspendMode" (sleep-list elogind-suspend-mode))
("HibernateState" (sleep-list elogind-hibernate-state))
("HibernateMode" (sleep-list elogind-hibernate-mode))
("HybridSleepState" (sleep-list elogind-hybrid-sleep-state))
("HybridSleepMode" (sleep-list elogind-hybrid-sleep-mode))))
(define* (elogind-service #:key (elogind elogind)
(config (elogind-configuration)))
"Return a service that runs the @command{elogind} login and seat management
service. The @command{elogind} service integrates with PAM to allow other
system components to know the set of logged-in users as well as their session
types (graphical, console, remote, etc.). It can also clean up after users
when they log out."
(mlet %store-monad ((config-file (elogind-configuration-file config)))
(return
(service
(documentation "Run the elogind login and seat management service.")
(provision '(elogind))
(requirement '(dbus-system))
(start #~(make-forkexec-constructor
(list (string-append #$elogind "/libexec/elogind/elogind"))
#:environment-variables
(list (string-append "ELOGIND_CONF_FILE=" #$config-file))))
(stop #~(make-kill-destructor))))))
;;;
;;; The default set of desktop services.
@ -383,23 +586,38 @@ site} for more information."
(avahi-service)
(wicd-service)
(upower-service)
;; FIXME: The colord and geoclue services could all be bus-activated
;; by default, so they don't run at program startup. However, user
;; creation and /var/lib.colord creation happen at service activation
;; time, so we currently add them to the set of default services.
;; FIXME: The colord, geoclue, and polkit services could all be
;; bus-activated by default, so they don't run at program startup.
;; However, user creation and /var/lib/colord creation happen at
;; service activation time, so we currently add them to the set of
;; default services.
(colord-service)
(geoclue-service)
(dbus-service (list avahi wicd upower colord geoclue))
(polkit-service)
(elogind-service)
(dbus-service (list avahi wicd upower colord geoclue polkit elogind))
(ntp-service)
(map (lambda (mservice)
;; Provide an nscd ready to use nss-mdns.
(mlet %store-monad ((service mservice))
(if (memq 'nscd (service-provision service))
(cond
;; Provide an nscd ready to use nss-mdns.
((memq 'nscd (service-provision service))
(nscd-service (nscd-configuration)
#:name-services (list nss-mdns))
mservice)))
#:name-services (list nss-mdns)))
;; Add more rules to udev-service.
;;
;; XXX Keep this in sync with the 'udev-service' call in
;; %base-services. Here we intend only to add 'upower',
;; 'colord', and 'elogind'.
((memq 'udev (service-provision service))
(udev-service #:rules
(list lvm2 fuse alsa-utils crda
upower colord elogind)))
(else mservice))))
%base-services)))
;;; desktop.scm ends here

View File

@ -50,6 +50,7 @@
%devtmpfs-file-system
%immutable-store
%control-groups
%elogind-file-systems
%base-file-systems
%container-file-systems
@ -258,6 +259,26 @@ UUID representation."
'("cpuset" "cpu" "cpuacct" "memory" "devices" "freezer"
"blkio" "perf_event" "hugetlb")))))
(define %elogind-file-systems
;; We don't use systemd, but these file systems are needed for elogind,
;; which was extracted from systemd.
(list (file-system
(device "none")
(mount-point "/run/systemd")
(type "tmpfs")
(check? #f)
(flags '(no-suid no-dev no-exec))
(options "mode=0755")
(create-mount-point? #t))
(file-system
(device "none")
(mount-point "/run/user")
(type "tmpfs")
(check? #f)
(flags '(no-suid no-dev no-exec))
(options "mode=0755")
(create-mount-point? #t))))
(define %base-file-systems
;; List of basic file systems to be mounted. Note that /proc and /sys are
;; currently mounted by the initrd.
@ -265,6 +286,7 @@ UUID representation."
%pseudo-terminal-file-system
%shared-memory-file-system
%immutable-store)
%elogind-file-systems
%control-groups))
;; File systems for Linux containers differ from %base-file-systems in that

View File

@ -349,7 +349,7 @@ Use Alt-F2 for documentation.
parted ddrescue
grub ;mostly so xrefs to its manual work
cryptsetup
wireless-tools iw wpa-supplicant-light iproute
wireless-tools iw wpa-supplicant-minimal iproute
;; XXX: We used to have GNU fdisk here, but as of version
;; 2.0.0a, that pulls Guile 1.8, which takes unreasonable
;; space; furthermore util-linux's fdisk is already

View File

@ -83,6 +83,8 @@
(letrec-syntax ((utf8-locale (syntax-rules ()
((_ name*)
(locale-definition
;; Note: We choose "utf8", which is the
;; "normalized codeset".
(name (string-append name* ".utf8"))
(source name*)
(charset "UTF-8")))))

Some files were not shown because too many files have changed in this diff Show More