mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
Merge branch 'master' into gnome-updates
This commit is contained in:
commit
9f5e796753
43 changed files with 402 additions and 902 deletions
|
@ -166,6 +166,11 @@ Display package(s) located in the specified file. These files usually
|
||||||
have the following form: @file{gnu/packages/emacs.scm}, but don't type
|
have the following form: @file{gnu/packages/emacs.scm}, but don't type
|
||||||
them manually! Press @key{TAB} to complete the file name.
|
them manually! Press @key{TAB} to complete the file name.
|
||||||
|
|
||||||
|
@item M-x guix-package-from-file
|
||||||
|
Display package that the code within the specified file evaluates to.
|
||||||
|
@xref{Invoking guix package, @code{--install-from-file}}, for an example
|
||||||
|
of what such a file may look like.
|
||||||
|
|
||||||
@item M-x guix-search-by-regexp
|
@item M-x guix-search-by-regexp
|
||||||
Search for packages by a specified regexp. By default ``name'',
|
Search for packages by a specified regexp. By default ``name'',
|
||||||
``synopsis'' and ``description'' of the packages will be searched. This
|
``synopsis'' and ``description'' of the packages will be searched. This
|
||||||
|
|
|
@ -375,7 +375,7 @@ If that command fails because you do not have the required public key,
|
||||||
then run this command to import it:
|
then run this command to import it:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
$ gpg --keyserver keys.gnupg.net --recv-keys 3D9AEBB5
|
$ gpg --keyserver keys.gnupg.net --recv-keys 090B11993D9AEBB5
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@noindent
|
@noindent
|
||||||
|
@ -7331,7 +7331,7 @@ See @code{man loadkeys} for details.
|
||||||
|
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Scheme Procedure} gpm-service-type [#:gpm @var{gpm}] @
|
@deffn {Scheme Procedure} gpm-service [#:gpm @var{gpm}] @
|
||||||
[#:options]
|
[#:options]
|
||||||
Run @var{gpm}, the general-purpose mouse daemon, with the given
|
Run @var{gpm}, the general-purpose mouse daemon, with the given
|
||||||
command-line @var{options}. GPM allows users to use the mouse in the console,
|
command-line @var{options}. GPM allows users to use the mouse in the console,
|
||||||
|
|
37
emacs/guix-about.el
Normal file
37
emacs/guix-about.el
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
;;; guix-about.el --- Various info about Guix
|
||||||
|
|
||||||
|
;; Copyright © 2016 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 Location as published by
|
||||||
|
;; the Free Software Foundation, either version 3 of the Location, 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 Location for more details.
|
||||||
|
|
||||||
|
;; You should have received a copy of the GNU General Public Location
|
||||||
|
;; along with this program. If not, see <http://www.gnu.org/locations/>.
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
|
||||||
|
;; This file provides the code to display various info about Guix (e.g., its
|
||||||
|
;; version).
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(require 'guix-config)
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun guix-version ()
|
||||||
|
"Display Guix version in the echo area."
|
||||||
|
(interactive)
|
||||||
|
(message "%s %s" guix-config-name guix-config-version))
|
||||||
|
|
||||||
|
(provide 'guix-about)
|
||||||
|
|
||||||
|
;;; guix-about.el ends here
|
|
@ -1,7 +1,7 @@
|
||||||
;;; guix-config.el --- Compile-time configuration of Guix.
|
;;; guix-config.el --- Compile-time configuration of Guix.
|
||||||
|
|
||||||
;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
|
;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
|
||||||
;; Copyright © 2015 Alex Kost <alezost@gmail.com>
|
;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
|
||||||
|
|
||||||
;; This file is part of GNU Guix.
|
;; This file is part of GNU Guix.
|
||||||
|
|
||||||
|
@ -20,6 +20,12 @@
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
|
(defconst guix-config-name "@PACKAGE_NAME@"
|
||||||
|
"Guix full name.")
|
||||||
|
|
||||||
|
(defconst guix-config-version "@PACKAGE_VERSION@"
|
||||||
|
"Guix version.")
|
||||||
|
|
||||||
(defconst guix-config-emacs-interface-directory
|
(defconst guix-config-emacs-interface-directory
|
||||||
(replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@"))
|
(replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@"))
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ Return nil, if current buffer does not define a module."
|
||||||
(defun guix-guile-boolean (arg)
|
(defun guix-guile-boolean (arg)
|
||||||
"Return a string with guile boolean value.
|
"Return a string with guile boolean value.
|
||||||
Transform elisp ARG (nil or non-nil) to the guile boolean (#f or #t)."
|
Transform elisp ARG (nil or non-nil) to the guile boolean (#f or #t)."
|
||||||
(concat "#" (prin1-to-string (if arg 't 'f))))
|
(if arg "#t" "#f"))
|
||||||
|
|
||||||
(defun guix-guile-keyword-regexp (keyword)
|
(defun guix-guile-keyword-regexp (keyword)
|
||||||
"Return regexp to find guile KEYWORD."
|
"Return regexp to find guile KEYWORD."
|
||||||
|
|
|
@ -32,14 +32,6 @@
|
||||||
;; still "name-version" string. So ‘id’ package parameter in the code
|
;; still "name-version" string. So ‘id’ package parameter in the code
|
||||||
;; below is either an object-address number or a full-name string.
|
;; below is either an object-address number or a full-name string.
|
||||||
|
|
||||||
;; To speed-up the process of getting information, the following
|
|
||||||
;; auxiliary variables are used:
|
|
||||||
;;
|
|
||||||
;; - `%packages' - VHash of "package address"/"package" pairs.
|
|
||||||
;;
|
|
||||||
;; - `%package-table' - Hash table of
|
|
||||||
;; "name+version key"/"list of packages" pairs.
|
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(use-modules
|
(use-modules
|
||||||
|
@ -101,38 +93,6 @@ (define* (make-package-specification name #:optional version output)
|
||||||
(string-append full-name ":" output)
|
(string-append full-name ":" output)
|
||||||
full-name)))
|
full-name)))
|
||||||
|
|
||||||
(define name+version->key cons)
|
|
||||||
(define key->name+version car+cdr)
|
|
||||||
|
|
||||||
(define %package-vhash
|
|
||||||
(delay
|
|
||||||
(fold-packages (lambda (pkg res)
|
|
||||||
(vhash-consq (object-address pkg) pkg res))
|
|
||||||
vlist-null)))
|
|
||||||
|
|
||||||
(define (package-vhash)
|
|
||||||
"Return vhash of 'package ID (address)'/'package' pairs."
|
|
||||||
(force %package-vhash))
|
|
||||||
|
|
||||||
(define %package-table
|
|
||||||
(delay
|
|
||||||
(let ((table (make-hash-table (vlist-length (package-vhash)))))
|
|
||||||
(vlist-for-each
|
|
||||||
(lambda (elem)
|
|
||||||
(match elem
|
|
||||||
((address . pkg)
|
|
||||||
(let* ((key (name+version->key (package-name pkg)
|
|
||||||
(package-version pkg)))
|
|
||||||
(ref (hash-ref table key)))
|
|
||||||
(hash-set! table key
|
|
||||||
(if ref (cons pkg ref) (list pkg)))))))
|
|
||||||
(package-vhash))
|
|
||||||
table)))
|
|
||||||
|
|
||||||
(define (package-table)
|
|
||||||
"Return hash table of 'name+version key'/'list of packages' pairs."
|
|
||||||
(force %package-table))
|
|
||||||
|
|
||||||
(define (manifest-entry->name+version+output entry)
|
(define (manifest-entry->name+version+output entry)
|
||||||
(values
|
(values
|
||||||
(manifest-entry-name entry)
|
(manifest-entry-name entry)
|
||||||
|
@ -340,15 +300,39 @@ (define (package-param package param)
|
||||||
|
|
||||||
;;; Finding packages.
|
;;; Finding packages.
|
||||||
|
|
||||||
(define (package-by-address address)
|
(define-values (package-by-address
|
||||||
(match (vhash-assq address (package-vhash))
|
register-package)
|
||||||
((_ . package) package)
|
(let ((table (delay (fold-packages
|
||||||
(_ #f)))
|
(lambda (package table)
|
||||||
|
(vhash-consq (object-address package)
|
||||||
|
package table))
|
||||||
|
vlist-null))))
|
||||||
|
(values
|
||||||
|
(lambda (address)
|
||||||
|
"Return package by its object ADDRESS."
|
||||||
|
(match (vhash-assq address (force table))
|
||||||
|
((_ . package) package)
|
||||||
|
(_ #f)))
|
||||||
|
(lambda (package)
|
||||||
|
"Register PACKAGE by its 'object-address', so that later
|
||||||
|
'package-by-address' can be used to access it."
|
||||||
|
(let ((table* (force table)))
|
||||||
|
(set! table
|
||||||
|
(delay (vhash-consq (object-address package)
|
||||||
|
package table*))))))))
|
||||||
|
|
||||||
(define (packages-by-name+version name version)
|
(define packages-by-name+version
|
||||||
(or (hash-ref (package-table)
|
(let ((table (delay (fold-packages
|
||||||
(name+version->key name version))
|
(lambda (package table)
|
||||||
'()))
|
(let ((file (location-file
|
||||||
|
(package-location package))))
|
||||||
|
(vhash-cons (cons (package-name package)
|
||||||
|
(package-version package))
|
||||||
|
package table)))
|
||||||
|
vlist-null))))
|
||||||
|
(lambda (name version)
|
||||||
|
"Return packages matching NAME and VERSION."
|
||||||
|
(vhash-fold* cons '() (cons name version) (force table)))))
|
||||||
|
|
||||||
(define (packages-by-full-name full-name)
|
(define (packages-by-full-name full-name)
|
||||||
(call-with-values
|
(call-with-values
|
||||||
|
@ -435,6 +419,15 @@ (define (newest-available-packages)
|
||||||
'()
|
'()
|
||||||
(find-newest-available-packages)))
|
(find-newest-available-packages)))
|
||||||
|
|
||||||
|
(define (packages-from-file file)
|
||||||
|
"Return a list of packages from FILE."
|
||||||
|
(let ((package (load (canonicalize-path file))))
|
||||||
|
(if (package? package)
|
||||||
|
(begin
|
||||||
|
(register-package package)
|
||||||
|
(list package))
|
||||||
|
'())))
|
||||||
|
|
||||||
|
|
||||||
;;; Making package/output patterns.
|
;;; Making package/output patterns.
|
||||||
|
|
||||||
|
@ -687,6 +680,8 @@ (define %patterns-makers
|
||||||
(lookup-license license-name))))
|
(lookup-license license-name))))
|
||||||
(location-proc (lambda (_ location)
|
(location-proc (lambda (_ location)
|
||||||
(packages-by-location-file location)))
|
(packages-by-location-file location)))
|
||||||
|
(file-proc (lambda (_ file)
|
||||||
|
(packages-from-file file)))
|
||||||
(all-proc (lambda _ (all-available-packages)))
|
(all-proc (lambda _ (all-available-packages)))
|
||||||
(newest-proc (lambda _ (newest-available-packages))))
|
(newest-proc (lambda _ (newest-available-packages))))
|
||||||
`((package
|
`((package
|
||||||
|
@ -697,6 +692,7 @@ (define %patterns-makers
|
||||||
(regexp . ,regexp-proc)
|
(regexp . ,regexp-proc)
|
||||||
(license . ,license-proc)
|
(license . ,license-proc)
|
||||||
(location . ,location-proc)
|
(location . ,location-proc)
|
||||||
|
(from-file . ,file-proc)
|
||||||
(all-available . ,all-proc)
|
(all-available . ,all-proc)
|
||||||
(newest-available . ,newest-proc))
|
(newest-available . ,newest-proc))
|
||||||
(output
|
(output
|
||||||
|
@ -707,6 +703,7 @@ (define %patterns-makers
|
||||||
(regexp . ,regexp-proc)
|
(regexp . ,regexp-proc)
|
||||||
(license . ,license-proc)
|
(license . ,license-proc)
|
||||||
(location . ,location-proc)
|
(location . ,location-proc)
|
||||||
|
(from-file . ,file-proc)
|
||||||
(all-available . ,all-proc)
|
(all-available . ,all-proc)
|
||||||
(newest-available . ,newest-proc)))))
|
(newest-available . ,newest-proc)))))
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,9 @@
|
||||||
,(lambda (_ entries locations)
|
,(lambda (_ entries locations)
|
||||||
(apply #'guix-message-packages-by-location
|
(apply #'guix-message-packages-by-location
|
||||||
entries 'package locations)))
|
entries 'package locations)))
|
||||||
|
(from-file
|
||||||
|
(0 "No package in file '%s'." val)
|
||||||
|
(1 "Package from file '%s'." val))
|
||||||
(regexp
|
(regexp
|
||||||
(0 "No packages matching '%s'." val)
|
(0 "No packages matching '%s'." val)
|
||||||
(1 "A single package matching '%s'." val)
|
(1 "A single package matching '%s'." val)
|
||||||
|
@ -80,6 +83,10 @@
|
||||||
,(lambda (_ entries locations)
|
,(lambda (_ entries locations)
|
||||||
(apply #'guix-message-packages-by-location
|
(apply #'guix-message-packages-by-location
|
||||||
entries 'output locations)))
|
entries 'output locations)))
|
||||||
|
(from-file
|
||||||
|
(0 "No package in file '%s'." val)
|
||||||
|
(1 "Package from file '%s'." val)
|
||||||
|
(many "Package outputs from file '%s'." val))
|
||||||
(regexp
|
(regexp
|
||||||
(0 "No package outputs matching '%s'." val)
|
(0 "No package outputs matching '%s'." val)
|
||||||
(1 "A single package output matching '%s'." val)
|
(1 "A single package output matching '%s'." val)
|
||||||
|
|
|
@ -393,15 +393,17 @@ formatted with this string, an action button is inserted.")
|
||||||
(guix-format-insert nil)
|
(guix-format-insert nil)
|
||||||
(let ((location-file (car (split-string location ":"))))
|
(let ((location-file (car (split-string location ":"))))
|
||||||
(guix-info-insert-value-indent location 'guix-package-location)
|
(guix-info-insert-value-indent location 'guix-package-location)
|
||||||
(guix-info-insert-indent)
|
;; Do not show "Packages" button if a package 'from file' is displayed.
|
||||||
(guix-info-insert-action-button
|
(unless (eq (guix-ui-current-search-type) 'from-file)
|
||||||
"Packages"
|
(guix-info-insert-indent)
|
||||||
(lambda (btn)
|
(guix-info-insert-action-button
|
||||||
(guix-package-get-display (guix-ui-current-profile)
|
"Packages"
|
||||||
'location
|
(lambda (btn)
|
||||||
(button-get btn 'location)))
|
(guix-package-get-display (guix-ui-current-profile)
|
||||||
(format "Display packages from location '%s'" location-file)
|
'location
|
||||||
'location location-file))))
|
(button-get btn 'location)))
|
||||||
|
(format "Display packages from location '%s'" location-file)
|
||||||
|
'location location-file)))))
|
||||||
|
|
||||||
(defun guix-package-info-insert-systems (systems entry)
|
(defun guix-package-info-insert-systems (systems entry)
|
||||||
"Insert supported package SYSTEMS at point."
|
"Insert supported package SYSTEMS at point."
|
||||||
|
@ -1000,6 +1002,19 @@ Interactively with prefix, prompt for PROFILE."
|
||||||
(guix-ui-read-profile)))
|
(guix-ui-read-profile)))
|
||||||
(guix-package-get-display profile 'location location))
|
(guix-package-get-display profile 'location location))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun guix-package-from-file (file &optional profile)
|
||||||
|
"Display Guix package that the code from FILE evaluates to.
|
||||||
|
If PROFILE is nil, use `guix-current-profile'.
|
||||||
|
Interactively with prefix, prompt for PROFILE."
|
||||||
|
(interactive
|
||||||
|
(list (read-file-name "File with package: ")
|
||||||
|
(guix-ui-read-profile)))
|
||||||
|
(guix-buffer-get-display-entries
|
||||||
|
'info 'package
|
||||||
|
(list (or profile guix-current-profile) 'from-file file)
|
||||||
|
'add))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun guix-search-by-regexp (regexp &optional params profile)
|
(defun guix-search-by-regexp (regexp &optional params profile)
|
||||||
"Search for Guix packages by REGEXP.
|
"Search for Guix packages by REGEXP.
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
AUTOLOADS = emacs/guix-autoloads.el
|
AUTOLOADS = emacs/guix-autoloads.el
|
||||||
|
|
||||||
ELFILES = \
|
ELFILES = \
|
||||||
|
emacs/guix-about.el \
|
||||||
emacs/guix-backend.el \
|
emacs/guix-backend.el \
|
||||||
emacs/guix-base.el \
|
emacs/guix-base.el \
|
||||||
emacs/guix-build-log.el \
|
emacs/guix-build-log.el \
|
||||||
|
|
13
gnu/local.mk
13
gnu/local.mk
|
@ -108,6 +108,7 @@ GNU_SYSTEM_MODULES = \
|
||||||
gnu/packages/enchant.scm \
|
gnu/packages/enchant.scm \
|
||||||
gnu/packages/engineering.scm \
|
gnu/packages/engineering.scm \
|
||||||
gnu/packages/enlightenment.scm \
|
gnu/packages/enlightenment.scm \
|
||||||
|
gnu/packages/entr.scm \
|
||||||
gnu/packages/fcitx.scm \
|
gnu/packages/fcitx.scm \
|
||||||
gnu/packages/feh.scm \
|
gnu/packages/feh.scm \
|
||||||
gnu/packages/figlet.scm \
|
gnu/packages/figlet.scm \
|
||||||
|
@ -708,18 +709,6 @@ dist_patch_DATA = \
|
||||||
gnu/packages/patches/python-paste-remove-timing-test.patch \
|
gnu/packages/patches/python-paste-remove-timing-test.patch \
|
||||||
gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
|
gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
|
||||||
gnu/packages/patches/python-pandas-fix-tslib-test-failure.patch \
|
gnu/packages/patches/python-pandas-fix-tslib-test-failure.patch \
|
||||||
gnu/packages/patches/qemu-CVE-2015-8558.patch \
|
|
||||||
gnu/packages/patches/qemu-CVE-2015-8567.patch \
|
|
||||||
gnu/packages/patches/qemu-CVE-2015-8613.patch \
|
|
||||||
gnu/packages/patches/qemu-CVE-2015-8619.patch \
|
|
||||||
gnu/packages/patches/qemu-CVE-2015-8701.patch \
|
|
||||||
gnu/packages/patches/qemu-CVE-2015-8743.patch \
|
|
||||||
gnu/packages/patches/qemu-CVE-2016-1568.patch \
|
|
||||||
gnu/packages/patches/qemu-CVE-2016-1922.patch \
|
|
||||||
gnu/packages/patches/qemu-CVE-2016-1981.patch \
|
|
||||||
gnu/packages/patches/qemu-CVE-2016-2197.patch \
|
|
||||||
gnu/packages/patches/qemu-usb-ehci-oob-read.patch \
|
|
||||||
gnu/packages/patches/qemu-virtio-9p-use-accessor-to-get-thread-pool.patch \
|
|
||||||
gnu/packages/patches/qt4-ldflags.patch \
|
gnu/packages/patches/qt4-ldflags.patch \
|
||||||
gnu/packages/patches/ratpoison-shell.patch \
|
gnu/packages/patches/ratpoison-shell.patch \
|
||||||
gnu/packages/patches/readline-link-ncurses.patch \
|
gnu/packages/patches/readline-link-ncurses.patch \
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2015 David Thompson <davet@gnu.org>
|
;;; Copyright © 2015 David Thompson <davet@gnu.org>
|
||||||
;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name>
|
;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name>
|
||||||
|
;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -47,11 +48,23 @@ (define-public libical
|
||||||
"14lmjj63zyx88rf1z71l0v9ms4c2vpdhmixksjjxgywp5p2f7708"))))
|
"14lmjj63zyx88rf1z71l0v9ms4c2vpdhmixksjjxgywp5p2f7708"))))
|
||||||
(build-system cmake-build-system)
|
(build-system cmake-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
'(#:tests? #f)) ; test suite appears broken
|
'(#:tests? #f ; test suite appears broken
|
||||||
|
#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(add-before 'configure 'patch-paths
|
||||||
|
(lambda _
|
||||||
|
(let ((tzdata (assoc-ref %build-inputs "tzdata")))
|
||||||
|
(substitute* "src/libical/icaltz-util.c"
|
||||||
|
(("char \\*search_paths \\[\\] =.*$")
|
||||||
|
(string-append
|
||||||
|
"char *search_paths [] = "
|
||||||
|
"{\"" tzdata "/share/zoneinfo\"};\n"))))
|
||||||
|
#t)))))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("perl" ,perl)))
|
`(("perl" ,perl)))
|
||||||
(inputs
|
(inputs
|
||||||
`(("icu4c" ,icu4c)))
|
`(("icu4c" ,icu4c)
|
||||||
|
("tzdata" ,tzdata)))
|
||||||
(home-page "https://libical.github.io/libical/")
|
(home-page "https://libical.github.io/libical/")
|
||||||
(synopsis "iCalendar protocols and data formats implementation")
|
(synopsis "iCalendar protocols and data formats implementation")
|
||||||
(description
|
(description
|
||||||
|
|
|
@ -40,7 +40,7 @@ (define-public connman
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://kernel.org/pub/linux/network/connman/"
|
(uri (string-append "mirror://kernel.org/linux/network/connman/"
|
||||||
name "-" version ".tar.xz"))
|
name "-" version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
|
|
66
gnu/packages/entr.scm
Normal file
66
gnu/packages/entr.scm
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
|
;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
|
||||||
|
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
|
||||||
|
;;;
|
||||||
|
;;; This file is part of GNU Guix.
|
||||||
|
;;;
|
||||||
|
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||||
|
;;; under the terms of the GNU General Public License as published by
|
||||||
|
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||||
|
;;; your option) any later version.
|
||||||
|
;;;
|
||||||
|
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||||
|
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;;; GNU General Public License for more details.
|
||||||
|
;;;
|
||||||
|
;;; You should have received a copy of the GNU General Public License
|
||||||
|
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
(define-module (gnu packages entr)
|
||||||
|
#:use-module (guix licenses)
|
||||||
|
#:use-module (guix packages)
|
||||||
|
#:use-module (guix download)
|
||||||
|
#:use-module (guix build-system gnu))
|
||||||
|
|
||||||
|
(define-public entr
|
||||||
|
(package
|
||||||
|
(name "entr")
|
||||||
|
(version "3.5")
|
||||||
|
(source (origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (string-append "http://entrproject.org/code/entr-"
|
||||||
|
version ".tar.gz"))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"05k4jyjna0pr2dalwc1l1dhrcyk6pw7hbss7jl4ykwfadcs5br73"))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(arguments
|
||||||
|
`(#:test-target "test"
|
||||||
|
#:phases (modify-phases %standard-phases
|
||||||
|
(replace 'configure
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(let ((out (assoc-ref outputs "out")))
|
||||||
|
(setenv "CONFIG_SHELL" (which "bash"))
|
||||||
|
(setenv "CC" (which "gcc"))
|
||||||
|
(setenv "DESTDIR" (string-append out "/"))
|
||||||
|
(setenv "PREFIX" "")
|
||||||
|
(setenv "MANPREFIX" "man")
|
||||||
|
(zero? (system* "./configure")))))
|
||||||
|
(add-before 'build 'remove-fhs-file-names
|
||||||
|
(lambda _
|
||||||
|
;; Use the tools available in $PATH.
|
||||||
|
(substitute* "entr.c"
|
||||||
|
(("/bin/cat") "cat")
|
||||||
|
(("/usr/bin/clear") "clear")))))))
|
||||||
|
(home-page "http://entrproject.org/")
|
||||||
|
(synopsis "Run arbitrary commands when files change")
|
||||||
|
(description
|
||||||
|
"entr is a zero-configuration tool with no external build- or run-time
|
||||||
|
dependencies. The interface to entr is not only minimal, it aims to be simple
|
||||||
|
enough to create a new category of ad hoc automation. These micro-tests
|
||||||
|
reduce keystrokes, but more importantly they emphasize the utility of
|
||||||
|
automated checks.")
|
||||||
|
|
||||||
|
;; Per 'LICENSE', portability code under missing/ is under BSD-2.
|
||||||
|
(license isc)))
|
|
@ -129,7 +129,7 @@ (define-public gzochi
|
||||||
(define-public tiled
|
(define-public tiled
|
||||||
(package
|
(package
|
||||||
(name "tiled")
|
(name "tiled")
|
||||||
(version "0.15.1")
|
(version "0.16.1")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://github.com/bjorn/tiled/archive/v"
|
(uri (string-append "https://github.com/bjorn/tiled/archive/v"
|
||||||
|
@ -137,7 +137,7 @@ (define-public tiled
|
||||||
(file-name (string-append name "-" version ".tar.gz"))
|
(file-name (string-append name "-" version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"10bbjdv5r36229r1dqg32bxcj9yvpkx9jgs9v4s1qb71v856b15h"))))
|
"0s1i6yhm1z9ayzjh8cprcc9jvj5m87l9snyqg6w7zlj3q9zn4rn6"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs `(("qt" ,qt)
|
(inputs `(("qt" ,qt)
|
||||||
("zlib" ,zlib)))
|
("zlib" ,zlib)))
|
||||||
|
|
|
@ -93,6 +93,7 @@ (define-module (gnu packages games)
|
||||||
#:use-module (gnu packages xml)
|
#:use-module (gnu packages xml)
|
||||||
#:use-module (gnu packages tcl)
|
#:use-module (gnu packages tcl)
|
||||||
#:use-module (gnu packages fribidi)
|
#:use-module (gnu packages fribidi)
|
||||||
|
#:use-module (gnu packages xdisorg)
|
||||||
#:use-module (guix build-system trivial)
|
#:use-module (guix build-system trivial)
|
||||||
#:use-module (guix build-system gnu)
|
#:use-module (guix build-system gnu)
|
||||||
#:use-module (guix build-system haskell)
|
#:use-module (guix build-system haskell)
|
||||||
|
|
|
@ -93,7 +93,6 @@ (define-module (gnu packages gnome)
|
||||||
#:use-module (gnu packages xml)
|
#:use-module (gnu packages xml)
|
||||||
#:use-module (gnu packages geeqie)
|
#:use-module (gnu packages geeqie)
|
||||||
#:use-module (gnu packages gl)
|
#:use-module (gnu packages gl)
|
||||||
#:use-module (gnu packages qt) ; for libxkbcommon
|
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
#:use-module (gnu packages texlive)
|
#:use-module (gnu packages texlive)
|
||||||
#:use-module (gnu packages tls)
|
#:use-module (gnu packages tls)
|
||||||
|
|
|
@ -148,7 +148,7 @@ (define-public libassuan
|
||||||
(define-public libksba
|
(define-public libksba
|
||||||
(package
|
(package
|
||||||
(name "libksba")
|
(name "libksba")
|
||||||
(version "1.3.3")
|
(version "1.3.4")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
|
@ -157,7 +157,7 @@ (define-public libksba
|
||||||
version ".tar.bz2"))
|
version ".tar.bz2"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"11kp3h9l3b8ikydkcdkwgx45r662zi30m26ra5llyhfh6kz5yzqc"))))
|
"0kxdb02z41cwm1xbwfwj9nbc0dzjhwyq8c475mlhhmpcxcy8ihpn"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(propagated-inputs
|
(propagated-inputs
|
||||||
`(("libgpg-error" ,libgpg-error)))
|
`(("libgpg-error" ,libgpg-error)))
|
||||||
|
|
|
@ -24,6 +24,7 @@ (define-module (gnu packages gnustep)
|
||||||
#:use-module (guix licenses)
|
#:use-module (guix licenses)
|
||||||
#:use-module (gnu packages xorg)
|
#:use-module (gnu packages xorg)
|
||||||
#:use-module (gnu packages gnome)
|
#:use-module (gnu packages gnome)
|
||||||
|
#:use-module (gnu packages gtk)
|
||||||
#:use-module (gnu packages texinfo)
|
#:use-module (gnu packages texinfo)
|
||||||
#:use-module (gnu packages autotools)
|
#:use-module (gnu packages autotools)
|
||||||
#:use-module (gnu packages glib)
|
#:use-module (gnu packages glib)
|
||||||
|
@ -216,3 +217,31 @@ (define-public wmclock
|
||||||
a dockable tile. It features multiple language support, 24h or 12h time
|
a dockable tile. It features multiple language support, 24h or 12h time
|
||||||
display, and can run a user-specified program on mouse click.")
|
display, and can run a user-specified program on mouse click.")
|
||||||
(license gpl2+)))
|
(license gpl2+)))
|
||||||
|
|
||||||
|
(define-public wmfire
|
||||||
|
(package
|
||||||
|
(name "wmfire")
|
||||||
|
(version "1.2.4")
|
||||||
|
(source (origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (string-append "http://www.improbability.net/"
|
||||||
|
name "/" name "-" version ".tar.gz"))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"101grahd80n97y2dczb629clmcgiavdpbbwy78kk5wgs362m12z3"))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(inputs
|
||||||
|
`(("gtk+" ,gtk+-2)
|
||||||
|
("libgtop" ,libgtop)))
|
||||||
|
(native-inputs
|
||||||
|
`(("pkg-config" ,pkg-config)))
|
||||||
|
(home-page "http://www.improbability.net/")
|
||||||
|
(synopsis "Display flames to represent CPU usage, memory usage, etc.")
|
||||||
|
(description
|
||||||
|
"wmfire is an applet for Window Maker that can monitor the average cpu
|
||||||
|
load, or individual cpu load on SMP computers. Additionally it can monitor the
|
||||||
|
memory, network load, a file or just be set to show a pretty flame. On
|
||||||
|
entering the dock a burning spot replaces the cursor, and after two seconds
|
||||||
|
symbols to represent the current monitor are \"burnt\" onscreen. The flame
|
||||||
|
colour can also be changed.")
|
||||||
|
(license gpl2+)))
|
||||||
|
|
|
@ -25,6 +25,7 @@ (define-module (gnu packages graphviz)
|
||||||
#:use-module (gnu packages gtk)
|
#:use-module (gnu packages gtk)
|
||||||
#:use-module (gnu packages xml)
|
#:use-module (gnu packages xml)
|
||||||
#:use-module (gnu packages glib)
|
#:use-module (gnu packages glib)
|
||||||
|
#:use-module (gnu packages guile)
|
||||||
#:use-module (gnu packages bison)
|
#:use-module (gnu packages bison)
|
||||||
#:use-module (gnu packages image)
|
#:use-module (gnu packages image)
|
||||||
#:use-module (gnu packages autotools)
|
#:use-module (gnu packages autotools)
|
||||||
|
@ -32,6 +33,7 @@ (define-module (gnu packages graphviz)
|
||||||
#:use-module (gnu packages fontutils)
|
#:use-module (gnu packages fontutils)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
#:use-module (gnu packages gd)
|
#:use-module (gnu packages gd)
|
||||||
|
#:use-module (gnu packages swig)
|
||||||
#:use-module ((guix licenses) #:select (lgpl2.0+ epl1.0)))
|
#:use-module ((guix licenses) #:select (lgpl2.0+ epl1.0)))
|
||||||
|
|
||||||
(define-public graphviz
|
(define-public graphviz
|
||||||
|
@ -69,12 +71,26 @@ (define-public graphviz
|
||||||
(rename-file (string-append out "/share/graphviz/doc")
|
(rename-file (string-append out "/share/graphviz/doc")
|
||||||
(string-append doc "/share/graphviz/doc"))
|
(string-append doc "/share/graphviz/doc"))
|
||||||
#t))
|
#t))
|
||||||
%standard-phases))))
|
(alist-cons-after
|
||||||
|
'move-docs 'move-guile-bindings
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(let* ((out (assoc-ref outputs "out"))
|
||||||
|
(lib (string-append out "/lib"))
|
||||||
|
(extdir (string-append lib
|
||||||
|
"/guile/2.0/extensions")))
|
||||||
|
(mkdir-p extdir)
|
||||||
|
(rename-file (string-append
|
||||||
|
lib "/graphviz/guile/libgv_guile.so")
|
||||||
|
(string-append extdir
|
||||||
|
"/libgv_guile.so"))))
|
||||||
|
%standard-phases)))))
|
||||||
(inputs
|
(inputs
|
||||||
`(("libXrender" ,libxrender)
|
`(("libXrender" ,libxrender)
|
||||||
("libX11" ,libx11)
|
("libX11" ,libx11)
|
||||||
("gts" ,gts)
|
("gts" ,gts)
|
||||||
("gd" ,gd) ; FIXME: Our GD is too old
|
("gd" ,gd) ; FIXME: Our GD is too old
|
||||||
|
("guile" ,guile-2.0) ;Guile bindings
|
||||||
|
("swig" ,swig)
|
||||||
("pango" ,pango)
|
("pango" ,pango)
|
||||||
("fontconfig" ,fontconfig)
|
("fontconfig" ,fontconfig)
|
||||||
("freetype" ,freetype)
|
("freetype" ,freetype)
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
|
;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
|
||||||
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
|
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
|
||||||
;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
|
;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
|
||||||
|
;;; Copyright © 2016 Eraim Flashner <efraim@flashner.co.il>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -362,14 +363,14 @@ (define-public guile-reader
|
||||||
(define-public guile-ncurses
|
(define-public guile-ncurses
|
||||||
(package
|
(package
|
||||||
(name "guile-ncurses")
|
(name "guile-ncurses")
|
||||||
(version "1.6")
|
(version "1.7")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-"
|
(uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-"
|
||||||
version ".tar.gz"))
|
version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0wmk681zzi1wxw543r2s2r84ndnzxp69kr7pc01aw4l55hg7jn73"))))
|
"153vv75gb7l62sp3666rc97i63rnaqbx2rjar7d9b5w81fhwv4r5"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs `(("ncurses" ,ncurses)
|
(inputs `(("ncurses" ,ncurses)
|
||||||
("guile" ,guile-2.0)))
|
("guile" ,guile-2.0)))
|
||||||
|
@ -378,21 +379,17 @@ (define-public guile-ncurses
|
||||||
(string-append "--with-guilesitedir="
|
(string-append "--with-guilesitedir="
|
||||||
(assoc-ref %outputs "out")
|
(assoc-ref %outputs "out")
|
||||||
"/share/guile/site/2.0"))
|
"/share/guile/site/2.0"))
|
||||||
|
#:phases
|
||||||
;; Work around <http://bugs.gnu.org/21677>.
|
(modify-phases %standard-phases
|
||||||
#:make-flags '("XFAIL_TESTS=curses_034_util.test")
|
(add-after 'install 'post-install
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
#:phases (alist-cons-after
|
(let* ((out (assoc-ref outputs "out"))
|
||||||
'install 'post-install
|
(dir (string-append out "/share/guile/site/"))
|
||||||
(lambda* (#:key outputs #:allow-other-keys)
|
(files (find-files dir ".scm")))
|
||||||
(let* ((out (assoc-ref outputs "out"))
|
(substitute* files
|
||||||
(dir (string-append out "/share/guile/site/"))
|
(("\"libguile-ncurses\"")
|
||||||
(files (find-files dir ".scm")))
|
(format #f "\"~a/lib/libguile-ncurses\""
|
||||||
(substitute* files
|
out)))))))))
|
||||||
(("\"libguile-ncurses\"")
|
|
||||||
(format #f "\"~a/lib/libguile-ncurses\""
|
|
||||||
out)))))
|
|
||||||
%standard-phases)))
|
|
||||||
(home-page "http://www.gnu.org/software/guile-ncurses/")
|
(home-page "http://www.gnu.org/software/guile-ncurses/")
|
||||||
(synopsis "Guile bindings to ncurses")
|
(synopsis "Guile bindings to ncurses")
|
||||||
(description
|
(description
|
||||||
|
|
|
@ -2622,15 +2622,20 @@ (define-public thinkfan
|
||||||
`("-DUSE_ATASMART:BOOL=ON")
|
`("-DUSE_ATASMART:BOOL=ON")
|
||||||
#:phases
|
#:phases
|
||||||
(modify-phases %standard-phases
|
(modify-phases %standard-phases
|
||||||
;; Install scripts for various foreign init systems.
|
;; Install scripts for various foreign init systems. Also fix
|
||||||
|
;; hard-coded path for daemon.
|
||||||
(add-after 'install 'install-rc-scripts
|
(add-after 'install 'install-rc-scripts
|
||||||
(lambda* (#:key outputs #:allow-other-keys)
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
(for-each (cute install-file <>
|
(let ((out (assoc-ref outputs "out"))
|
||||||
(string-append (assoc-ref outputs "out")
|
(files (find-files
|
||||||
"/share/thinkfan"))
|
(string-append "../thinkfan-" ,version "/rcscripts")
|
||||||
(find-files (string-append "../thinkfan-" ,version
|
".*")))
|
||||||
"/rcscripts")
|
(substitute* files
|
||||||
".*"))
|
(("/usr/sbin/(\\$NAME|thinkfan)" _ name)
|
||||||
|
(string-append out "/sbin/" name)))
|
||||||
|
(for-each (cute install-file <>
|
||||||
|
(string-append out "/share/thinkfan"))
|
||||||
|
files))
|
||||||
#t)))))
|
#t)))))
|
||||||
(inputs
|
(inputs
|
||||||
`(("libatasmart" ,libatasmart)))
|
`(("libatasmart" ,libatasmart)))
|
||||||
|
|
|
@ -667,7 +667,7 @@ (define-public msmtp
|
||||||
(define-public exim
|
(define-public exim
|
||||||
(package
|
(package
|
||||||
(name "exim")
|
(name "exim")
|
||||||
(version "4.86.2")
|
(version "4.87")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
|
@ -677,7 +677,7 @@ (define-public exim
|
||||||
version ".tar.bz2")))
|
version ".tar.bz2")))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1cvfcc1hi60lydv8h3a2rxlfc0v2nflwpvzjj7h7cdsqs2pxwmkp"))))
|
"1jbxn13shq90kpn0s73qpjnx5xm8jrpwhcwwgqw5s6sdzw6iwsbl"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs
|
(inputs
|
||||||
`(("bdb" ,bdb)
|
`(("bdb" ,bdb)
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
|
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
|
||||||
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
|
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
|
||||||
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
|
||||||
|
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -92,7 +93,7 @@ (define-public ntp
|
||||||
(define-public openntpd
|
(define-public openntpd
|
||||||
(package
|
(package
|
||||||
(name "openntpd")
|
(name "openntpd")
|
||||||
(version "5.7p3")
|
(version "5.9p1")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
;; XXX Use mirror://openbsd
|
;; XXX Use mirror://openbsd
|
||||||
|
@ -101,7 +102,7 @@ (define-public openntpd
|
||||||
version ".tar.gz"))
|
version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0filjmb3b8rc39bvhm8q2azzj10ljfgq41qih71pxv919j57qhag"))))
|
"1cwp6vxv7nj039kgbf0mgfm06f8zc4axawdc7ijl2r2ddl2h8310"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(home-page "http://www.openntpd.org/")
|
(home-page "http://www.openntpd.org/")
|
||||||
(synopsis "NTP client and server by the OpenBSD Project")
|
(synopsis "NTP client and server by the OpenBSD Project")
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
From 156a2e4dbffa85997636a7a39ef12da6f1b40254 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
Date: Mon, 14 Dec 2015 09:21:23 +0100
|
|
||||||
Subject: [PATCH] ehci: make idt processing more robust
|
|
||||||
|
|
||||||
Make ehci_process_itd return an error in case we didn't do any actual
|
|
||||||
iso transfer because we've found no active transaction. That'll avoid
|
|
||||||
ehci happily run in circles forever if the guest builds a loop out of
|
|
||||||
idts.
|
|
||||||
|
|
||||||
This is CVE-2015-8558.
|
|
||||||
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Tested-by: P J P <ppandit@redhat.com>
|
|
||||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
---
|
|
||||||
hw/usb/hcd-ehci.c | 5 +++--
|
|
||||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
|
|
||||||
index 4e2161b..d07f228 100644
|
|
||||||
--- a/hw/usb/hcd-ehci.c
|
|
||||||
+++ b/hw/usb/hcd-ehci.c
|
|
||||||
@@ -1389,7 +1389,7 @@ static int ehci_process_itd(EHCIState *ehci,
|
|
||||||
{
|
|
||||||
USBDevice *dev;
|
|
||||||
USBEndpoint *ep;
|
|
||||||
- uint32_t i, len, pid, dir, devaddr, endp;
|
|
||||||
+ uint32_t i, len, pid, dir, devaddr, endp, xfers = 0;
|
|
||||||
uint32_t pg, off, ptr1, ptr2, max, mult;
|
|
||||||
|
|
||||||
ehci->periodic_sched_active = PERIODIC_ACTIVE;
|
|
||||||
@@ -1479,9 +1479,10 @@ static int ehci_process_itd(EHCIState *ehci,
|
|
||||||
ehci_raise_irq(ehci, USBSTS_INT);
|
|
||||||
}
|
|
||||||
itd->transact[i] &= ~ITD_XACT_ACTIVE;
|
|
||||||
+ xfers++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- return 0;
|
|
||||||
+ return xfers ? 0 : -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
2.6.3
|
|
||||||
|
|
|
@ -1,93 +0,0 @@
|
||||||
From aa4a3dce1c88ed51b616806b8214b7c8428b7470 Mon Sep 17 00:00:00 2001
|
|
||||||
From: P J P <ppandit@redhat.com>
|
|
||||||
Date: Tue, 15 Dec 2015 12:27:54 +0530
|
|
||||||
Subject: [PATCH] net: vmxnet3: avoid memory leakage in activate_device
|
|
||||||
|
|
||||||
Vmxnet3 device emulator does not check if the device is active
|
|
||||||
before activating it, also it did not free the transmit & receive
|
|
||||||
buffers while deactivating the device, thus resulting in memory
|
|
||||||
leakage on the host. This patch fixes both these issues to avoid
|
|
||||||
host memory leakage.
|
|
||||||
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Reviewed-by: Dmitry Fleytman <dmitry@daynix.com>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
Signed-off-by: Jason Wang <jasowang@redhat.com>
|
|
||||||
---
|
|
||||||
hw/net/vmxnet3.c | 24 ++++++++++++++++--------
|
|
||||||
1 file changed, 16 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
|
|
||||||
index a5dd79a..9c1adfc 100644
|
|
||||||
--- a/hw/net/vmxnet3.c
|
|
||||||
+++ b/hw/net/vmxnet3.c
|
|
||||||
@@ -1194,8 +1194,13 @@ static void vmxnet3_reset_mac(VMXNET3State *s)
|
|
||||||
|
|
||||||
static void vmxnet3_deactivate_device(VMXNET3State *s)
|
|
||||||
{
|
|
||||||
- VMW_CBPRN("Deactivating vmxnet3...");
|
|
||||||
- s->device_active = false;
|
|
||||||
+ if (s->device_active) {
|
|
||||||
+ VMW_CBPRN("Deactivating vmxnet3...");
|
|
||||||
+ vmxnet_tx_pkt_reset(s->tx_pkt);
|
|
||||||
+ vmxnet_tx_pkt_uninit(s->tx_pkt);
|
|
||||||
+ vmxnet_rx_pkt_uninit(s->rx_pkt);
|
|
||||||
+ s->device_active = false;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
static void vmxnet3_reset(VMXNET3State *s)
|
|
||||||
@@ -1204,7 +1209,6 @@ static void vmxnet3_reset(VMXNET3State *s)
|
|
||||||
|
|
||||||
vmxnet3_deactivate_device(s);
|
|
||||||
vmxnet3_reset_interrupt_states(s);
|
|
||||||
- vmxnet_tx_pkt_reset(s->tx_pkt);
|
|
||||||
s->drv_shmem = 0;
|
|
||||||
s->tx_sop = true;
|
|
||||||
s->skip_current_tx_pkt = false;
|
|
||||||
@@ -1431,6 +1435,12 @@ static void vmxnet3_activate_device(VMXNET3State *s)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* Verify if device is active */
|
|
||||||
+ if (s->device_active) {
|
|
||||||
+ VMW_CFPRN("Vmxnet3 device is active");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
vmxnet3_adjust_by_guest_type(s);
|
|
||||||
vmxnet3_update_features(s);
|
|
||||||
vmxnet3_update_pm_state(s);
|
|
||||||
@@ -1627,7 +1637,7 @@ static void vmxnet3_handle_command(VMXNET3State *s, uint64_t cmd)
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VMXNET3_CMD_QUIESCE_DEV:
|
|
||||||
- VMW_CBPRN("Set: VMXNET3_CMD_QUIESCE_DEV - pause the device");
|
|
||||||
+ VMW_CBPRN("Set: VMXNET3_CMD_QUIESCE_DEV - deactivate the device");
|
|
||||||
vmxnet3_deactivate_device(s);
|
|
||||||
break;
|
|
||||||
|
|
||||||
@@ -1741,7 +1751,7 @@ vmxnet3_io_bar1_write(void *opaque,
|
|
||||||
* shared address only after we get the high part
|
|
||||||
*/
|
|
||||||
if (val == 0) {
|
|
||||||
- s->device_active = false;
|
|
||||||
+ vmxnet3_deactivate_device(s);
|
|
||||||
}
|
|
||||||
s->temp_shared_guest_driver_memory = val;
|
|
||||||
s->drv_shmem = 0;
|
|
||||||
@@ -2021,9 +2031,7 @@ static bool vmxnet3_peer_has_vnet_hdr(VMXNET3State *s)
|
|
||||||
static void vmxnet3_net_uninit(VMXNET3State *s)
|
|
||||||
{
|
|
||||||
g_free(s->mcast_list);
|
|
||||||
- vmxnet_tx_pkt_reset(s->tx_pkt);
|
|
||||||
- vmxnet_tx_pkt_uninit(s->tx_pkt);
|
|
||||||
- vmxnet_rx_pkt_uninit(s->rx_pkt);
|
|
||||||
+ vmxnet3_deactivate_device(s);
|
|
||||||
qemu_del_nic(s->nic);
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.6.3
|
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
From 36fef36b91f7ec0435215860f1458b5342ce2811 Mon Sep 17 00:00:00 2001
|
|
||||||
From: P J P <ppandit@redhat.com>
|
|
||||||
Date: Mon, 21 Dec 2015 15:13:13 +0530
|
|
||||||
Subject: [PATCH] scsi: initialise info object with appropriate size
|
|
||||||
|
|
||||||
While processing controller 'CTRL_GET_INFO' command, the routine
|
|
||||||
'megasas_ctrl_get_info' overflows the '&info' object size. Use its
|
|
||||||
appropriate size to null initialise it.
|
|
||||||
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Message-Id: <alpine.LFD.2.20.1512211501420.22471@wniryva>
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
||||||
Signed-off-by: P J P <ppandit@redhat.com>
|
|
||||||
---
|
|
||||||
hw/scsi/megasas.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
|
|
||||||
index d7dc667..576f56c 100644
|
|
||||||
--- a/hw/scsi/megasas.c
|
|
||||||
+++ b/hw/scsi/megasas.c
|
|
||||||
@@ -718,7 +718,7 @@ static int megasas_ctrl_get_info(MegasasState *s, MegasasCmd *cmd)
|
|
||||||
BusChild *kid;
|
|
||||||
int num_pd_disks = 0;
|
|
||||||
|
|
||||||
- memset(&info, 0x0, cmd->iov_size);
|
|
||||||
+ memset(&info, 0x0, dcmd_size);
|
|
||||||
if (cmd->iov_size < dcmd_size) {
|
|
||||||
trace_megasas_dcmd_invalid_xfer_len(cmd->index, cmd->iov_size,
|
|
||||||
dcmd_size);
|
|
||||||
--
|
|
||||||
2.6.3
|
|
||||||
|
|
|
@ -1,119 +0,0 @@
|
||||||
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
|
|
||||||
Date: Wed, 13 Jan 2016 09:09:58 +0100
|
|
||||||
Subject: [PATCH] hmp: fix sendkey out of bounds write (CVE-2015-8619)
|
|
||||||
|
|
||||||
When processing 'sendkey' command, hmp_sendkey routine null
|
|
||||||
terminates the 'keyname_buf' array. This results in an OOB
|
|
||||||
write issue, if 'keyname_len' was to fall outside of
|
|
||||||
'keyname_buf' array.
|
|
||||||
|
|
||||||
Since the keyname's length is known the keyname_buf can be
|
|
||||||
removed altogether by adding a length parameter to
|
|
||||||
index_from_key() and using it for the error output as well.
|
|
||||||
|
|
||||||
Reported-by: Ling Liu <liuling-it@360.cn>
|
|
||||||
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
|
|
||||||
Message-Id: <20160113080958.GA18934@olga>
|
|
||||||
[Comparison with "<" dumbed down, test for junk after strtoul()
|
|
||||||
tweaked]
|
|
||||||
Signed-off-by: Markus Armbruster <armbru@redhat.com>
|
|
||||||
|
|
||||||
(cherry picked from commit 64ffbe04eaafebf4045a3ace52a360c14959d196)
|
|
||||||
---
|
|
||||||
hmp.c | 18 ++++++++----------
|
|
||||||
include/ui/console.h | 2 +-
|
|
||||||
ui/input-legacy.c | 5 +++--
|
|
||||||
3 files changed, 12 insertions(+), 13 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hmp.c b/hmp.c
|
|
||||||
index 2140605..1904203 100644
|
|
||||||
--- a/hmp.c
|
|
||||||
+++ b/hmp.c
|
|
||||||
@@ -1734,21 +1734,18 @@ void hmp_sendkey(Monitor *mon, const QDict *qdict)
|
|
||||||
int has_hold_time = qdict_haskey(qdict, "hold-time");
|
|
||||||
int hold_time = qdict_get_try_int(qdict, "hold-time", -1);
|
|
||||||
Error *err = NULL;
|
|
||||||
- char keyname_buf[16];
|
|
||||||
char *separator;
|
|
||||||
int keyname_len;
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
separator = strchr(keys, '-');
|
|
||||||
keyname_len = separator ? separator - keys : strlen(keys);
|
|
||||||
- pstrcpy(keyname_buf, sizeof(keyname_buf), keys);
|
|
||||||
|
|
||||||
/* Be compatible with old interface, convert user inputted "<" */
|
|
||||||
- if (!strncmp(keyname_buf, "<", 1) && keyname_len == 1) {
|
|
||||||
- pstrcpy(keyname_buf, sizeof(keyname_buf), "less");
|
|
||||||
+ if (keys[0] == '<' && keyname_len == 1) {
|
|
||||||
+ keys = "less";
|
|
||||||
keyname_len = 4;
|
|
||||||
}
|
|
||||||
- keyname_buf[keyname_len] = 0;
|
|
||||||
|
|
||||||
keylist = g_malloc0(sizeof(*keylist));
|
|
||||||
keylist->value = g_malloc0(sizeof(*keylist->value));
|
|
||||||
@@ -1761,16 +1758,17 @@ void hmp_sendkey(Monitor *mon, const QDict *qdict)
|
|
||||||
}
|
|
||||||
tmp = keylist;
|
|
||||||
|
|
||||||
- if (strstart(keyname_buf, "0x", NULL)) {
|
|
||||||
+ if (strstart(keys, "0x", NULL)) {
|
|
||||||
char *endp;
|
|
||||||
- int value = strtoul(keyname_buf, &endp, 0);
|
|
||||||
- if (*endp != '\0') {
|
|
||||||
+ int value = strtoul(keys, &endp, 0);
|
|
||||||
+ assert(endp <= keys + keyname_len);
|
|
||||||
+ if (endp != keys + keyname_len) {
|
|
||||||
goto err_out;
|
|
||||||
}
|
|
||||||
keylist->value->type = KEY_VALUE_KIND_NUMBER;
|
|
||||||
keylist->value->u.number = value;
|
|
||||||
} else {
|
|
||||||
- int idx = index_from_key(keyname_buf);
|
|
||||||
+ int idx = index_from_key(keys, keyname_len);
|
|
||||||
if (idx == Q_KEY_CODE_MAX) {
|
|
||||||
goto err_out;
|
|
||||||
}
|
|
||||||
@@ -1792,7 +1790,7 @@ out:
|
|
||||||
return;
|
|
||||||
|
|
||||||
err_out:
|
|
||||||
- monitor_printf(mon, "invalid parameter: %s\n", keyname_buf);
|
|
||||||
+ monitor_printf(mon, "invalid parameter: %.*s\n", keyname_len, keys);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/include/ui/console.h b/include/ui/console.h
|
|
||||||
index c249db4..5739bdd 100644
|
|
||||||
--- a/include/ui/console.h
|
|
||||||
+++ b/include/ui/console.h
|
|
||||||
@@ -433,7 +433,7 @@ static inline int vnc_display_pw_expire(const char *id, time_t expires)
|
|
||||||
void curses_display_init(DisplayState *ds, int full_screen);
|
|
||||||
|
|
||||||
/* input.c */
|
|
||||||
-int index_from_key(const char *key);
|
|
||||||
+int index_from_key(const char *key, size_t key_length);
|
|
||||||
|
|
||||||
/* gtk.c */
|
|
||||||
void early_gtk_display_init(int opengl);
|
|
||||||
diff --git a/ui/input-legacy.c b/ui/input-legacy.c
|
|
||||||
index e0a39f0..3f28bbc 100644
|
|
||||||
--- a/ui/input-legacy.c
|
|
||||||
+++ b/ui/input-legacy.c
|
|
||||||
@@ -57,12 +57,13 @@ struct QEMUPutLEDEntry {
|
|
||||||
static QTAILQ_HEAD(, QEMUPutLEDEntry) led_handlers =
|
|
||||||
QTAILQ_HEAD_INITIALIZER(led_handlers);
|
|
||||||
|
|
||||||
-int index_from_key(const char *key)
|
|
||||||
+int index_from_key(const char *key, size_t key_length)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; QKeyCode_lookup[i] != NULL; i++) {
|
|
||||||
- if (!strcmp(key, QKeyCode_lookup[i])) {
|
|
||||||
+ if (!strncmp(key, QKeyCode_lookup[i], key_length) &&
|
|
||||||
+ !QKeyCode_lookup[i][key_length]) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,47 +0,0 @@
|
||||||
From 007cd223de527b5f41278f2d886c1a4beb3e67aa Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Mon, 28 Dec 2015 16:24:08 +0530
|
|
||||||
Subject: [PATCH] net: rocker: fix an incorrect array bounds check
|
|
||||||
|
|
||||||
While processing transmit(tx) descriptors in 'tx_consume' routine
|
|
||||||
the switch emulator suffers from an off-by-one error, if a
|
|
||||||
descriptor was to have more than allowed(ROCKER_TX_FRAGS_MAX=16)
|
|
||||||
fragments. Fix an incorrect bounds check to avoid it.
|
|
||||||
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Signed-off-by: Jason Wang <jasowang@redhat.com>
|
|
||||||
---
|
|
||||||
hw/net/rocker/rocker.c | 8 ++++----
|
|
||||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/net/rocker/rocker.c b/hw/net/rocker/rocker.c
|
|
||||||
index c57f1a6..2e77e50 100644
|
|
||||||
--- a/hw/net/rocker/rocker.c
|
|
||||||
+++ b/hw/net/rocker/rocker.c
|
|
||||||
@@ -232,6 +232,9 @@ static int tx_consume(Rocker *r, DescInfo *info)
|
|
||||||
frag_addr = rocker_tlv_get_le64(tlvs[ROCKER_TLV_TX_FRAG_ATTR_ADDR]);
|
|
||||||
frag_len = rocker_tlv_get_le16(tlvs[ROCKER_TLV_TX_FRAG_ATTR_LEN]);
|
|
||||||
|
|
||||||
+ if (iovcnt >= ROCKER_TX_FRAGS_MAX) {
|
|
||||||
+ goto err_too_many_frags;
|
|
||||||
+ }
|
|
||||||
iov[iovcnt].iov_len = frag_len;
|
|
||||||
iov[iovcnt].iov_base = g_malloc(frag_len);
|
|
||||||
if (!iov[iovcnt].iov_base) {
|
|
||||||
@@ -244,10 +247,7 @@ static int tx_consume(Rocker *r, DescInfo *info)
|
|
||||||
err = -ROCKER_ENXIO;
|
|
||||||
goto err_bad_io;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- if (++iovcnt > ROCKER_TX_FRAGS_MAX) {
|
|
||||||
- goto err_too_many_frags;
|
|
||||||
- }
|
|
||||||
+ iovcnt++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (iovcnt) {
|
|
||||||
--
|
|
||||||
2.6.3
|
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
From aa7f9966dfdff500bbbf1956d9e115b1fa8987a6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Thu, 31 Dec 2015 17:05:27 +0530
|
|
||||||
Subject: [PATCH] net: ne2000: fix bounds check in ioport operations
|
|
||||||
|
|
||||||
While doing ioport r/w operations, ne2000 device emulation suffers
|
|
||||||
from OOB r/w errors. Update respective array bounds check to avoid
|
|
||||||
OOB access.
|
|
||||||
|
|
||||||
Reported-by: Ling Liu <liuling-it@360.cn>
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Signed-off-by: Jason Wang <jasowang@redhat.com>
|
|
||||||
---
|
|
||||||
hw/net/ne2000.c | 10 ++++++----
|
|
||||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/net/ne2000.c b/hw/net/ne2000.c
|
|
||||||
index 010f9ef..a3dffff 100644
|
|
||||||
--- a/hw/net/ne2000.c
|
|
||||||
+++ b/hw/net/ne2000.c
|
|
||||||
@@ -467,8 +467,9 @@ static inline void ne2000_mem_writel(NE2000State *s, uint32_t addr,
|
|
||||||
uint32_t val)
|
|
||||||
{
|
|
||||||
addr &= ~1; /* XXX: check exact behaviour if not even */
|
|
||||||
- if (addr < 32 ||
|
|
||||||
- (addr >= NE2000_PMEM_START && addr < NE2000_MEM_SIZE)) {
|
|
||||||
+ if (addr < 32
|
|
||||||
+ || (addr >= NE2000_PMEM_START
|
|
||||||
+ && addr + sizeof(uint32_t) <= NE2000_MEM_SIZE)) {
|
|
||||||
stl_le_p(s->mem + addr, val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -497,8 +498,9 @@ static inline uint32_t ne2000_mem_readw(NE2000State *s, uint32_t addr)
|
|
||||||
static inline uint32_t ne2000_mem_readl(NE2000State *s, uint32_t addr)
|
|
||||||
{
|
|
||||||
addr &= ~1; /* XXX: check exact behaviour if not even */
|
|
||||||
- if (addr < 32 ||
|
|
||||||
- (addr >= NE2000_PMEM_START && addr < NE2000_MEM_SIZE)) {
|
|
||||||
+ if (addr < 32
|
|
||||||
+ || (addr >= NE2000_PMEM_START
|
|
||||||
+ && addr + sizeof(uint32_t) <= NE2000_MEM_SIZE)) {
|
|
||||||
return ldl_le_p(s->mem + addr);
|
|
||||||
} else {
|
|
||||||
return 0xffffffff;
|
|
||||||
--
|
|
||||||
2.6.3
|
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
From 4ab0359a8ae182a7ac5c99609667273167703fab Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Mon, 11 Jan 2016 14:10:42 -0500
|
|
||||||
Subject: [PATCH] ide: ahci: reset ncq object to unused on error
|
|
||||||
|
|
||||||
When processing NCQ commands, AHCI device emulation prepares a
|
|
||||||
NCQ transfer object; To which an aio control block(aiocb) object
|
|
||||||
is assigned in 'execute_ncq_command'. In case, when the NCQ
|
|
||||||
command is invalid, the 'aiocb' object is not assigned, and NCQ
|
|
||||||
transfer object is left as 'used'. This leads to a use after
|
|
||||||
free kind of error in 'bdrv_aio_cancel_async' via 'ahci_reset_port'.
|
|
||||||
Reset NCQ transfer object to 'unused' to avoid it.
|
|
||||||
|
|
||||||
[Maintainer edit: s/ACHI/AHCI/ in the commit message. --js]
|
|
||||||
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Reviewed-by: John Snow <jsnow@redhat.com>
|
|
||||||
Message-id: 1452282511-4116-1-git-send-email-ppandit@redhat.com
|
|
||||||
Signed-off-by: John Snow <jsnow@redhat.com>
|
|
||||||
---
|
|
||||||
hw/ide/ahci.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
|
|
||||||
index dd1912e..17f1cbd 100644
|
|
||||||
--- a/hw/ide/ahci.c
|
|
||||||
+++ b/hw/ide/ahci.c
|
|
||||||
@@ -910,6 +910,7 @@ static void ncq_err(NCQTransferState *ncq_tfs)
|
|
||||||
ide_state->error = ABRT_ERR;
|
|
||||||
ide_state->status = READY_STAT | ERR_STAT;
|
|
||||||
ncq_tfs->drive->port_regs.scr_err |= (1 << ncq_tfs->tag);
|
|
||||||
+ ncq_tfs->used = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ncq_finish(NCQTransferState *ncq_tfs)
|
|
||||||
--
|
|
||||||
2.6.3
|
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
From 4c1396cb576c9b14425558b73de1584c7a9735d7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: P J P <ppandit@redhat.com>
|
|
||||||
Date: Fri, 18 Dec 2015 11:35:07 +0530
|
|
||||||
Subject: [PATCH] i386: avoid null pointer dereference
|
|
||||||
|
|
||||||
Hello,
|
|
||||||
|
|
||||||
A null pointer dereference issue was reported by Mr Ling Liu, CC'd here. It
|
|
||||||
occurs while doing I/O port write operations via hmp interface. In that,
|
|
||||||
'current_cpu' remains null as it is not called from cpu_exec loop, which
|
|
||||||
results in the said issue.
|
|
||||||
|
|
||||||
Below is a proposed (tested)patch to fix this issue; Does it look okay?
|
|
||||||
|
|
||||||
===
|
|
||||||
From ae88a4947fab9a148cd794f8ad2d812e7f5a1d0f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Fri, 18 Dec 2015 11:16:07 +0530
|
|
||||||
Subject: [PATCH] i386: avoid null pointer dereference
|
|
||||||
|
|
||||||
When I/O port write operation is called from hmp interface,
|
|
||||||
'current_cpu' remains null, as it is not called from cpu_exec()
|
|
||||||
loop. This leads to a null pointer dereference in vapic_write
|
|
||||||
routine. Add check to avoid it.
|
|
||||||
|
|
||||||
Reported-by: Ling Liu <liuling-it@360.cn>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Message-Id: <alpine.LFD.2.20.1512181129320.9805@wniryva>
|
|
||||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
||||||
Signed-off-by: P J P <ppandit@redhat.com>
|
|
||||||
---
|
|
||||||
hw/i386/kvmvapic.c | 15 ++++++++++-----
|
|
||||||
1 file changed, 10 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/i386/kvmvapic.c b/hw/i386/kvmvapic.c
|
|
||||||
index c6d34b2..f0922da 100644
|
|
||||||
--- a/hw/i386/kvmvapic.c
|
|
||||||
+++ b/hw/i386/kvmvapic.c
|
|
||||||
@@ -634,13 +634,18 @@ static int vapic_prepare(VAPICROMState *s)
|
|
||||||
static void vapic_write(void *opaque, hwaddr addr, uint64_t data,
|
|
||||||
unsigned int size)
|
|
||||||
{
|
|
||||||
- CPUState *cs = current_cpu;
|
|
||||||
- X86CPU *cpu = X86_CPU(cs);
|
|
||||||
- CPUX86State *env = &cpu->env;
|
|
||||||
- hwaddr rom_paddr;
|
|
||||||
VAPICROMState *s = opaque;
|
|
||||||
+ X86CPU *cpu;
|
|
||||||
+ CPUX86State *env;
|
|
||||||
+ hwaddr rom_paddr;
|
|
||||||
|
|
||||||
- cpu_synchronize_state(cs);
|
|
||||||
+ if (!current_cpu) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ cpu_synchronize_state(current_cpu);
|
|
||||||
+ cpu = X86_CPU(current_cpu);
|
|
||||||
+ env = &cpu->env;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The VAPIC supports two PIO-based hypercalls, both via port 0x7E.
|
|
||||||
--
|
|
||||||
2.6.3
|
|
||||||
|
|
|
@ -1,95 +0,0 @@
|
||||||
From: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Date: Tue, 19 Jan 2016 14:17:20 +0100
|
|
||||||
Subject: [PATCH] e1000: eliminate infinite loops on out-of-bounds transfer
|
|
||||||
start
|
|
||||||
|
|
||||||
The start_xmit() and e1000_receive_iov() functions implement DMA transfers
|
|
||||||
iterating over a set of descriptors that the guest's e1000 driver
|
|
||||||
prepares:
|
|
||||||
|
|
||||||
- the TDLEN and RDLEN registers store the total size of the descriptor
|
|
||||||
area,
|
|
||||||
|
|
||||||
- while the TDH and RDH registers store the offset (in whole tx / rx
|
|
||||||
descriptors) into the area where the transfer is supposed to start.
|
|
||||||
|
|
||||||
Each time a descriptor is processed, the TDH and RDH register is bumped
|
|
||||||
(as appropriate for the transfer direction).
|
|
||||||
|
|
||||||
QEMU already contains logic to deal with bogus transfers submitted by the
|
|
||||||
guest:
|
|
||||||
|
|
||||||
- Normally, the transmit case wants to increase TDH from its initial value
|
|
||||||
to TDT. (TDT is allowed to be numerically smaller than the initial TDH
|
|
||||||
value; wrapping at or above TDLEN bytes to zero is normal.) The failsafe
|
|
||||||
that QEMU currently has here is a check against reaching the original
|
|
||||||
TDH value again -- a complete wraparound, which should never happen.
|
|
||||||
|
|
||||||
- In the receive case RDH is increased from its initial value until
|
|
||||||
"total_size" bytes have been received; preferably in a single step, or
|
|
||||||
in "s->rxbuf_size" byte steps, if the latter is smaller. However, null
|
|
||||||
RX descriptors are skipped without receiving data, while RDH is
|
|
||||||
incremented just the same. QEMU tries to prevent an infinite loop
|
|
||||||
(processing only null RX descriptors) by detecting whether RDH assumes
|
|
||||||
its original value during the loop. (Again, wrapping from RDLEN to 0 is
|
|
||||||
normal.)
|
|
||||||
|
|
||||||
What both directions miss is that the guest could program TDLEN and RDLEN
|
|
||||||
so low, and the initial TDH and RDH so high, that these registers will
|
|
||||||
immediately be truncated to zero, and then never reassume their initial
|
|
||||||
values in the loop -- a full wraparound will never occur.
|
|
||||||
|
|
||||||
The condition that expresses this is:
|
|
||||||
|
|
||||||
xdh_start >= s->mac_reg[XDLEN] / sizeof(desc)
|
|
||||||
|
|
||||||
i.e., TDH or RDH start out after the last whole rx or tx descriptor that
|
|
||||||
fits into the TDLEN or RDLEN sized area.
|
|
||||||
|
|
||||||
This condition could be checked before we enter the loops, but
|
|
||||||
pci_dma_read() / pci_dma_write() knows how to fill in buffers safely for
|
|
||||||
bogus DMA addresses, so we just extend the existing failsafes with the
|
|
||||||
above condition.
|
|
||||||
|
|
||||||
This is CVE-2016-1981.
|
|
||||||
|
|
||||||
Cc: "Michael S. Tsirkin" <mst@redhat.com>
|
|
||||||
Cc: Petr Matousek <pmatouse@redhat.com>
|
|
||||||
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
|
||||||
Cc: Prasad Pandit <ppandit@redhat.com>
|
|
||||||
Cc: Michael Roth <mdroth@linux.vnet.ibm.com>
|
|
||||||
Cc: Jason Wang <jasowang@redhat.com>
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1296044
|
|
||||||
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
|
|
||||||
Reviewed-by: Jason Wang <jasowang@redhat.com>
|
|
||||||
Signed-off-by: Jason Wang <jasowang@redhat.com>
|
|
||||||
(cherry picked from commit dd793a74882477ca38d49e191110c17dfee51dcc)
|
|
||||||
---
|
|
||||||
hw/net/e1000.c | 6 ++++--
|
|
||||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/net/e1000.c b/hw/net/e1000.c
|
|
||||||
index bec06e9..34d0823 100644
|
|
||||||
--- a/hw/net/e1000.c
|
|
||||||
+++ b/hw/net/e1000.c
|
|
||||||
@@ -908,7 +908,8 @@ start_xmit(E1000State *s)
|
|
||||||
* bogus values to TDT/TDLEN.
|
|
||||||
* there's nothing too intelligent we could do about this.
|
|
||||||
*/
|
|
||||||
- if (s->mac_reg[TDH] == tdh_start) {
|
|
||||||
+ if (s->mac_reg[TDH] == tdh_start ||
|
|
||||||
+ tdh_start >= s->mac_reg[TDLEN] / sizeof(desc)) {
|
|
||||||
DBGOUT(TXERR, "TDH wraparound @%x, TDT %x, TDLEN %x\n",
|
|
||||||
tdh_start, s->mac_reg[TDT], s->mac_reg[TDLEN]);
|
|
||||||
break;
|
|
||||||
@@ -1165,7 +1166,8 @@ e1000_receive_iov(NetClientState *nc, const struct iovec *iov, int iovcnt)
|
|
||||||
if (++s->mac_reg[RDH] * sizeof(desc) >= s->mac_reg[RDLEN])
|
|
||||||
s->mac_reg[RDH] = 0;
|
|
||||||
/* see comment in start_xmit; same here */
|
|
||||||
- if (s->mac_reg[RDH] == rdh_start) {
|
|
||||||
+ if (s->mac_reg[RDH] == rdh_start ||
|
|
||||||
+ rdh_start >= s->mac_reg[RDLEN] / sizeof(desc)) {
|
|
||||||
DBGOUT(RXERR, "RDH wraparound @%x, RDT %x, RDLEN %x\n",
|
|
||||||
rdh_start, s->mac_reg[RDT], s->mac_reg[RDLEN]);
|
|
||||||
set_ics(s, 0, E1000_ICS_RXO);
|
|
|
@ -1,40 +0,0 @@
|
||||||
From: John Snow <jsnow@redhat.com>
|
|
||||||
Date: Wed, 10 Feb 2016 13:29:40 -0500
|
|
||||||
Subject: [PATCH] ahci: Do not unmap NULL addresses
|
|
||||||
|
|
||||||
Definitely don't try to unmap a garbage address.
|
|
||||||
|
|
||||||
Reported-by: Zuozhi fzz <zuozhi.fzz@alibaba-inc.com>
|
|
||||||
Signed-off-by: John Snow <jsnow@redhat.com>
|
|
||||||
Message-id: 1454103689-13042-2-git-send-email-jsnow@redhat.com
|
|
||||||
(cherry picked from commit 99b4cb71069f109b79b27bc629fc0cf0886dbc4b)
|
|
||||||
---
|
|
||||||
hw/ide/ahci.c | 8 ++++++++
|
|
||||||
1 file changed, 8 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
|
|
||||||
index 17f1cbd..cdc9299 100644
|
|
||||||
--- a/hw/ide/ahci.c
|
|
||||||
+++ b/hw/ide/ahci.c
|
|
||||||
@@ -661,6 +661,10 @@ static bool ahci_map_fis_address(AHCIDevice *ad)
|
|
||||||
|
|
||||||
static void ahci_unmap_fis_address(AHCIDevice *ad)
|
|
||||||
{
|
|
||||||
+ if (ad->res_fis == NULL) {
|
|
||||||
+ DPRINTF(ad->port_no, "Attempt to unmap NULL FIS address\n");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
dma_memory_unmap(ad->hba->as, ad->res_fis, 256,
|
|
||||||
DMA_DIRECTION_FROM_DEVICE, 256);
|
|
||||||
ad->res_fis = NULL;
|
|
||||||
@@ -677,6 +681,10 @@ static bool ahci_map_clb_address(AHCIDevice *ad)
|
|
||||||
|
|
||||||
static void ahci_unmap_clb_address(AHCIDevice *ad)
|
|
||||||
{
|
|
||||||
+ if (ad->lst == NULL) {
|
|
||||||
+ DPRINTF(ad->port_no, "Attempt to unmap NULL CLB address\n");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
dma_memory_unmap(ad->hba->as, ad->lst, 1024,
|
|
||||||
DMA_DIRECTION_FROM_DEVICE, 1024);
|
|
||||||
ad->lst = NULL;
|
|
|
@ -1,49 +0,0 @@
|
||||||
From: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Date: Wed, 20 Jan 2016 01:26:46 +0530
|
|
||||||
Subject: [PATCH] usb: check page select value while processing iTD
|
|
||||||
|
|
||||||
While processing isochronous transfer descriptors(iTD), the page
|
|
||||||
select(PG) field value could lead to an OOB read access. Add
|
|
||||||
check to avoid it.
|
|
||||||
|
|
||||||
Reported-by: Qinghao Tang <luodalongde@gmail.com>
|
|
||||||
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
|
|
||||||
Message-id: 1453233406-12165-1-git-send-email-ppandit@redhat.com
|
|
||||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
||||||
(cherry picked from commit 49d925ce50383a286278143c05511d30ec41a36e)
|
|
||||||
---
|
|
||||||
hw/usb/hcd-ehci.c | 10 ++++++----
|
|
||||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
|
|
||||||
index d07f228..c40013e 100644
|
|
||||||
--- a/hw/usb/hcd-ehci.c
|
|
||||||
+++ b/hw/usb/hcd-ehci.c
|
|
||||||
@@ -1404,21 +1404,23 @@ static int ehci_process_itd(EHCIState *ehci,
|
|
||||||
if (itd->transact[i] & ITD_XACT_ACTIVE) {
|
|
||||||
pg = get_field(itd->transact[i], ITD_XACT_PGSEL);
|
|
||||||
off = itd->transact[i] & ITD_XACT_OFFSET_MASK;
|
|
||||||
- ptr1 = (itd->bufptr[pg] & ITD_BUFPTR_MASK);
|
|
||||||
- ptr2 = (itd->bufptr[pg+1] & ITD_BUFPTR_MASK);
|
|
||||||
len = get_field(itd->transact[i], ITD_XACT_LENGTH);
|
|
||||||
|
|
||||||
if (len > max * mult) {
|
|
||||||
len = max * mult;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- if (len > BUFF_SIZE) {
|
|
||||||
+ if (len > BUFF_SIZE || pg > 6) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ ptr1 = (itd->bufptr[pg] & ITD_BUFPTR_MASK);
|
|
||||||
qemu_sglist_init(&ehci->isgl, ehci->device, 2, ehci->as);
|
|
||||||
if (off + len > 4096) {
|
|
||||||
/* transfer crosses page border */
|
|
||||||
+ if (pg == 6) {
|
|
||||||
+ return -1; /* avoid page pg + 1 */
|
|
||||||
+ }
|
|
||||||
+ ptr2 = (itd->bufptr[pg + 1] & ITD_BUFPTR_MASK);
|
|
||||||
uint32_t len2 = off + len - 4096;
|
|
||||||
uint32_t len1 = len - len2;
|
|
||||||
qemu_sglist_add(&ehci->isgl, ptr1 + off, len1);
|
|
|
@ -1,34 +0,0 @@
|
||||||
From 4b3a4f2d458ca5a7c6c16ac36a8d9ac22cc253d6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Greg Kurz <gkurz@linux.vnet.ibm.com>
|
|
||||||
Date: Wed, 23 Dec 2015 10:56:58 +0100
|
|
||||||
Subject: [PATCH] virtio-9p: use accessor to get thread_pool
|
|
||||||
|
|
||||||
The aio_context_new() function does not allocate a thread pool. This is
|
|
||||||
deferred to the first call to the aio_get_thread_pool() accessor. It is
|
|
||||||
hence forbidden to access the thread_pool field directly, as it may be
|
|
||||||
NULL. The accessor *must* be used always.
|
|
||||||
|
|
||||||
Fixes: ebac1202c95a4f1b76b6ef3f0f63926fa76e753e
|
|
||||||
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
|
|
||||||
Tested-by: Michael Tokarev <mjt@tls.msk.ru>
|
|
||||||
Cc: qemu-stable@nongnu.org
|
|
||||||
Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
|
|
||||||
---
|
|
||||||
hw/9pfs/virtio-9p-coth.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/hw/9pfs/virtio-9p-coth.c b/hw/9pfs/virtio-9p-coth.c
|
|
||||||
index fb6e8f8..ab9425c 100644
|
|
||||||
--- a/hw/9pfs/virtio-9p-coth.c
|
|
||||||
+++ b/hw/9pfs/virtio-9p-coth.c
|
|
||||||
@@ -36,6 +36,6 @@ static int coroutine_enter_func(void *arg)
|
|
||||||
void co_run_in_worker_bh(void *opaque)
|
|
||||||
{
|
|
||||||
Coroutine *co = opaque;
|
|
||||||
- thread_pool_submit_aio(qemu_get_aio_context()->thread_pool,
|
|
||||||
+ thread_pool_submit_aio(aio_get_thread_pool(qemu_get_aio_context()),
|
|
||||||
coroutine_enter_func, co, coroutine_enter_cb, co);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.6.3
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
|
;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
|
||||||
|
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -54,30 +55,20 @@ (define (qemu-patch commit file-name sha256)
|
||||||
(define-public qemu
|
(define-public qemu
|
||||||
(package
|
(package
|
||||||
(name "qemu")
|
(name "qemu")
|
||||||
(version "2.5.0")
|
(version "2.5.1.1")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "http://wiki.qemu-project.org/download/qemu-"
|
(uri (string-append "http://wiki.qemu-project.org/download/qemu-"
|
||||||
version ".tar.bz2"))
|
version ".tar.bz2"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1m3j6xl7msrniidkvr5pw9d44yba5m7hm42xz8xy77v105s8hhrl"))
|
"1rpgr1v6gnsdb4bcxwn1krsz4d4h9xgvlg6ark648nkn8dp99n98"))))
|
||||||
(patches (search-patches
|
|
||||||
"qemu-virtio-9p-use-accessor-to-get-thread-pool.patch"
|
|
||||||
"qemu-CVE-2015-8558.patch"
|
|
||||||
"qemu-CVE-2015-8567.patch"
|
|
||||||
"qemu-CVE-2016-1922.patch"
|
|
||||||
"qemu-CVE-2015-8613.patch"
|
|
||||||
"qemu-CVE-2015-8701.patch"
|
|
||||||
"qemu-CVE-2015-8743.patch"
|
|
||||||
"qemu-CVE-2016-1568.patch"
|
|
||||||
"qemu-CVE-2015-8619.patch"
|
|
||||||
"qemu-CVE-2016-1981.patch"
|
|
||||||
"qemu-usb-ehci-oob-read.patch"
|
|
||||||
"qemu-CVE-2016-2197.patch"))))
|
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
'(#:phases (alist-replace
|
'(;; FIXME: On x86_64, the test 'check-qtest-x86_64' sometimes fails when
|
||||||
|
;; parallel builds are enabled.
|
||||||
|
#:parallel-tests? #f
|
||||||
|
#:phases (alist-replace
|
||||||
'configure
|
'configure
|
||||||
(lambda* (#:key inputs outputs (configure-flags '())
|
(lambda* (#:key inputs outputs (configure-flags '())
|
||||||
#:allow-other-keys)
|
#:allow-other-keys)
|
||||||
|
|
|
@ -56,44 +56,6 @@ (define-module (gnu packages qt)
|
||||||
#:use-module (gnu packages xorg)
|
#:use-module (gnu packages xorg)
|
||||||
#:use-module (gnu packages xml))
|
#:use-module (gnu packages xml))
|
||||||
|
|
||||||
(define-public libxkbcommon
|
|
||||||
(package
|
|
||||||
(name "libxkbcommon")
|
|
||||||
(version "0.5.0")
|
|
||||||
(source (origin
|
|
||||||
(method url-fetch)
|
|
||||||
(uri (string-append "http://xkbcommon.org/download/" name "-"
|
|
||||||
version ".tar.xz"))
|
|
||||||
(sha256
|
|
||||||
(base32
|
|
||||||
"176ii5dn2wh74q48sd8ac37ljlvgvp5f506glr96z6ibfhj7igch"))))
|
|
||||||
(build-system gnu-build-system)
|
|
||||||
(inputs
|
|
||||||
`(("libx11" ,libx11)
|
|
||||||
("libxcb" ,libxcb)
|
|
||||||
("xkeyboard-config" ,xkeyboard-config)))
|
|
||||||
(native-inputs
|
|
||||||
`(("bison" ,bison)
|
|
||||||
("pkg-config" ,pkg-config)))
|
|
||||||
(arguments
|
|
||||||
`(#:configure-flags
|
|
||||||
(list (string-append "--with-xkb-config-root="
|
|
||||||
(assoc-ref %build-inputs "xkeyboard-config")
|
|
||||||
"/share/X11/xkb")
|
|
||||||
(string-append "--with-x-locale-root="
|
|
||||||
(assoc-ref %build-inputs "libx11")
|
|
||||||
"/share/X11/locale"))))
|
|
||||||
(home-page "http://xkbcommon.org/")
|
|
||||||
(synopsis "Library to handle keyboard descriptions")
|
|
||||||
(description "Xkbcommon is a library to handle keyboard descriptions,
|
|
||||||
including loading them from disk, parsing them and handling their
|
|
||||||
state. It is mainly meant for client toolkits, window systems, and other
|
|
||||||
system applications; currently that includes Wayland, kmscon, GTK+, Qt,
|
|
||||||
Clutter, and more. Despite the name, it is not currently used by anything
|
|
||||||
X11 (yet).")
|
|
||||||
(license (x11-style "file://COPYING"
|
|
||||||
"See 'COPYING' in the distribution."))))
|
|
||||||
|
|
||||||
(define-public qt
|
(define-public qt
|
||||||
(package
|
(package
|
||||||
(name "qt")
|
(name "qt")
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
|
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
|
||||||
;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net>
|
;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net>
|
||||||
|
;;; Copyright © 2016 Al McElrath <hello@yrns.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -22,10 +23,13 @@ (define-module (gnu packages suckless)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (guix download)
|
#:use-module (guix download)
|
||||||
#:use-module (guix build-system gnu)
|
#:use-module (guix build-system gnu)
|
||||||
|
#:use-module (guix build-system glib-or-gtk)
|
||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
|
#:use-module (gnu packages gnome)
|
||||||
#:use-module (gnu packages xorg)
|
#:use-module (gnu packages xorg)
|
||||||
#:use-module (gnu packages fonts)
|
#:use-module (gnu packages fonts)
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
|
#:use-module (gnu packages webkit)
|
||||||
#:use-module (gnu packages fontutils))
|
#:use-module (gnu packages fontutils))
|
||||||
|
|
||||||
(define-public dwm
|
(define-public dwm
|
||||||
|
@ -189,3 +193,38 @@ (define-public st
|
||||||
antialiased fonts (using fontconfig), fallback fonts, resizing, and line
|
antialiased fonts (using fontconfig), fallback fonts, resizing, and line
|
||||||
drawing.")
|
drawing.")
|
||||||
(license license:x11)))
|
(license license:x11)))
|
||||||
|
|
||||||
|
(define-public surf
|
||||||
|
(package
|
||||||
|
(name "surf")
|
||||||
|
(version "0.7")
|
||||||
|
(source
|
||||||
|
(origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (string-append "http://dl.suckless.org/surf/surf-"
|
||||||
|
version ".tar.gz"))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"0jj93izd8fizxfa6ln9w1h9bwki81sz5dhskh5x1rl34zd38aq4m"))))
|
||||||
|
(build-system glib-or-gtk-build-system)
|
||||||
|
(arguments
|
||||||
|
'(#:tests? #f ; no tests
|
||||||
|
#:make-flags (list "CC=gcc"
|
||||||
|
(string-append "PREFIX=" %output))
|
||||||
|
#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(delete 'configure))))
|
||||||
|
(inputs
|
||||||
|
`(("glib-networking" ,glib-networking)
|
||||||
|
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
|
||||||
|
("webkitgtk" ,webkitgtk/gtk+-2)))
|
||||||
|
(native-inputs
|
||||||
|
`(("pkg-config" ,pkg-config)))
|
||||||
|
(home-page "http://surf.suckless.org/")
|
||||||
|
(synopsis "Simple web browser")
|
||||||
|
(description
|
||||||
|
"Surf is a simple web browser based on WebKit/GTK+. It is able to
|
||||||
|
display websites and follow links. It supports the XEmbed protocol which
|
||||||
|
makes it possible to embed it in another application. Furthermore, one can
|
||||||
|
point surf to another URI by setting its XProperties.")
|
||||||
|
(license license:x11)))
|
||||||
|
|
|
@ -373,14 +373,14 @@ (define-public libva
|
||||||
(define-public ffmpeg
|
(define-public ffmpeg
|
||||||
(package
|
(package
|
||||||
(name "ffmpeg")
|
(name "ffmpeg")
|
||||||
(version "3.0")
|
(version "3.0.2")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
|
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
|
||||||
version ".tar.xz"))
|
version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0w74b165l4ry4y72f4xmgd357pvbc7yr61y313v3ai6787p2rwqj"))))
|
"08sjp4dxgcinmv9ly7nm24swmn2cnbbhvph44ihlplf4n33kr542"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs
|
(inputs
|
||||||
`(("fontconfig" ,fontconfig)
|
`(("fontconfig" ,fontconfig)
|
||||||
|
@ -529,7 +529,7 @@ (define-public ffmpeg
|
||||||
(format #t "setting LD_LIBRARY_PATH to ~s~%" path)
|
(format #t "setting LD_LIBRARY_PATH to ~s~%" path)
|
||||||
(setenv "LD_LIBRARY_PATH" path)
|
(setenv "LD_LIBRARY_PATH" path)
|
||||||
#t))))))
|
#t))))))
|
||||||
(home-page "http://www.ffmpeg.org/")
|
(home-page "https://www.ffmpeg.org/")
|
||||||
(synopsis "Audio and video framework")
|
(synopsis "Audio and video framework")
|
||||||
(description "FFmpeg is a complete, cross-platform solution to record,
|
(description "FFmpeg is a complete, cross-platform solution to record,
|
||||||
convert and stream audio and video. It includes the libavcodec
|
convert and stream audio and video. It includes the libavcodec
|
||||||
|
@ -860,7 +860,7 @@ (define-public libvpx
|
||||||
(define-public youtube-dl
|
(define-public youtube-dl
|
||||||
(package
|
(package
|
||||||
(name "youtube-dl")
|
(name "youtube-dl")
|
||||||
(version "2016.04.06")
|
(version "2016.05.01")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "http://youtube-dl.org/downloads/"
|
(uri (string-append "http://youtube-dl.org/downloads/"
|
||||||
|
@ -868,7 +868,7 @@ (define-public youtube-dl
|
||||||
version ".tar.gz"))
|
version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1kdrjwrn0x1wmvansvd2222gfqnld4zdihf2jwnz36112r1p8nhi"))))
|
"1w04afmwq5pjvp3nl2k59q0cigqrj9n8fwkydcfldwpq83l15j5d"))))
|
||||||
(build-system python-build-system)
|
(build-system python-build-system)
|
||||||
(home-page "http://youtube-dl.org")
|
(home-page "http://youtube-dl.org")
|
||||||
(arguments
|
(arguments
|
||||||
|
@ -1266,14 +1266,15 @@ (define-public livestreamer
|
||||||
(define-public mlt
|
(define-public mlt
|
||||||
(package
|
(package
|
||||||
(name "mlt")
|
(name "mlt")
|
||||||
(version "0.9.8")
|
(version "6.2.0")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://sourceforge/mlt/mlt/mlt-"
|
(uri (string-append "https://github.com/mltframework/mlt/"
|
||||||
version ".tar.gz"))
|
"archive/v" version ".tar.gz"))
|
||||||
|
(file-name (string-append name "-" version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0rmrkj7z9g3nr4099f3ff0r14l3ixcfnlx2cdbkqa6pxin0pv9bz"))))
|
"1zwzfgxrcbwkxnkiwv0a1rzxdnnaly90yyarl9wdw84nx11ffbnx"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:tests? #f ; no tests
|
`(#:tests? #f ; no tests
|
||||||
|
@ -1299,11 +1300,12 @@ (define-public mlt
|
||||||
("jack" ,jack-1)
|
("jack" ,jack-1)
|
||||||
("ladspa" ,ladspa)
|
("ladspa" ,ladspa)
|
||||||
("libsamplerate" ,libsamplerate)
|
("libsamplerate" ,libsamplerate)
|
||||||
|
("pulseaudio" ,pulseaudio)
|
||||||
("sdl" ,sdl)
|
("sdl" ,sdl)
|
||||||
("sox" ,sox)))
|
("sox" ,sox)))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("pkg-config" ,pkg-config)))
|
`(("pkg-config" ,pkg-config)))
|
||||||
(home-page "http://www.mltframework.org/")
|
(home-page "https://www.mltframework.org/")
|
||||||
(synopsis "Author, manage, and run multitrack audio/video compositions")
|
(synopsis "Author, manage, and run multitrack audio/video compositions")
|
||||||
(description
|
(description
|
||||||
"MLT is a multimedia framework, designed and developed for television
|
"MLT is a multimedia framework, designed and developed for television
|
||||||
|
@ -1316,14 +1318,14 @@ (define-public mlt
|
||||||
(define-public v4l-utils
|
(define-public v4l-utils
|
||||||
(package
|
(package
|
||||||
(name "v4l-utils")
|
(name "v4l-utils")
|
||||||
(version "1.8.1")
|
(version "1.10.0")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "http://linuxtv.org/downloads/v4l-utils"
|
(uri (string-append "https://linuxtv.org/downloads/v4l-utils"
|
||||||
"/v4l-utils-" version ".tar.bz2"))
|
"/v4l-utils-" version ".tar.bz2"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0cqv8drw0z0kfmz4f50a8kzbrz6vbj6j6q78030hgshr7yq1jqig"))))
|
"0srkwh3r6f0bkb4kp0d7i0mlmp8babs3qc22cdy1sw4awmzd5skq"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
'(#:configure-flags
|
'(#:configure-flags
|
||||||
|
@ -1349,7 +1351,7 @@ (define-public v4l-utils
|
||||||
(define-public obs
|
(define-public obs
|
||||||
(package
|
(package
|
||||||
(name "obs")
|
(name "obs")
|
||||||
(version "0.13.2")
|
(version "0.14.1")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://github.com/jp9000/obs-studio"
|
(uri (string-append "https://github.com/jp9000/obs-studio"
|
||||||
|
@ -1357,7 +1359,7 @@ (define-public obs
|
||||||
(file-name (string-append name "-" version ".tar.gz"))
|
(file-name (string-append name "-" version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1awaqlhlzlqqnwqixw54z40hqcnr3fwlclq4vlsy2kvsfyqjfr2b"))))
|
"1w07ign2swfigmsjd2jyaqqdnj2zpzs8hzsjzzk5l377jbx3ml5g"))))
|
||||||
(build-system cmake-build-system)
|
(build-system cmake-build-system)
|
||||||
(arguments '(#:tests? #f)) ; no tests
|
(arguments '(#:tests? #f)) ; no tests
|
||||||
(native-inputs
|
(native-inputs
|
||||||
|
|
|
@ -37,7 +37,6 @@ (define-module (gnu packages wm)
|
||||||
#:use-module (gnu packages pulseaudio)
|
#:use-module (gnu packages pulseaudio)
|
||||||
#:use-module (gnu packages xorg)
|
#:use-module (gnu packages xorg)
|
||||||
#:use-module (gnu packages xdisorg)
|
#:use-module (gnu packages xdisorg)
|
||||||
#:use-module (gnu packages qt)
|
|
||||||
#:use-module (gnu packages asciidoc)
|
#:use-module (gnu packages asciidoc)
|
||||||
#:use-module (gnu packages xml)
|
#:use-module (gnu packages xml)
|
||||||
#:use-module (gnu packages m4)
|
#:use-module (gnu packages m4)
|
||||||
|
|
|
@ -54,8 +54,8 @@ (define-module (gnu packages xdisorg)
|
||||||
#:use-module (gnu packages guile)
|
#:use-module (gnu packages guile)
|
||||||
#:use-module (gnu packages xml)
|
#:use-module (gnu packages xml)
|
||||||
#:use-module (gnu packages gtk)
|
#:use-module (gnu packages gtk)
|
||||||
#:use-module (gnu packages qt)
|
#:use-module (gnu packages xorg)
|
||||||
#:use-module (gnu packages xorg))
|
#:use-module (gnu packages bison))
|
||||||
|
|
||||||
;; packages outside the x.org system proper
|
;; packages outside the x.org system proper
|
||||||
|
|
||||||
|
@ -122,6 +122,44 @@ (define-public xclip
|
||||||
avoiding password prompts when X11 forwarding has already been setup.")
|
avoiding password prompts when X11 forwarding has already been setup.")
|
||||||
(license license:gpl2+)))
|
(license license:gpl2+)))
|
||||||
|
|
||||||
|
(define-public libxkbcommon
|
||||||
|
(package
|
||||||
|
(name "libxkbcommon")
|
||||||
|
(version "0.5.0")
|
||||||
|
(source (origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (string-append "http://xkbcommon.org/download/" name "-"
|
||||||
|
version ".tar.xz"))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"176ii5dn2wh74q48sd8ac37ljlvgvp5f506glr96z6ibfhj7igch"))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(inputs
|
||||||
|
`(("libx11" ,libx11)
|
||||||
|
("libxcb" ,libxcb)
|
||||||
|
("xkeyboard-config" ,xkeyboard-config)))
|
||||||
|
(native-inputs
|
||||||
|
`(("bison" ,bison)
|
||||||
|
("pkg-config" ,pkg-config)))
|
||||||
|
(arguments
|
||||||
|
`(#:configure-flags
|
||||||
|
(list (string-append "--with-xkb-config-root="
|
||||||
|
(assoc-ref %build-inputs "xkeyboard-config")
|
||||||
|
"/share/X11/xkb")
|
||||||
|
(string-append "--with-x-locale-root="
|
||||||
|
(assoc-ref %build-inputs "libx11")
|
||||||
|
"/share/X11/locale"))))
|
||||||
|
(home-page "http://xkbcommon.org/")
|
||||||
|
(synopsis "Library to handle keyboard descriptions")
|
||||||
|
(description "Xkbcommon is a library to handle keyboard descriptions,
|
||||||
|
including loading them from disk, parsing them and handling their
|
||||||
|
state. It is mainly meant for client toolkits, window systems, and other
|
||||||
|
system applications; currently that includes Wayland, kmscon, GTK+, Qt,
|
||||||
|
Clutter, and more. Despite the name, it is not currently used by anything
|
||||||
|
X11 (yet).")
|
||||||
|
(license (license:x11-style "file://COPYING"
|
||||||
|
"See 'COPYING' in the distribution."))))
|
||||||
|
|
||||||
(define-public xdotool
|
(define-public xdotool
|
||||||
(package
|
(package
|
||||||
(name "xdotool")
|
(name "xdotool")
|
||||||
|
|
|
@ -128,17 +128,13 @@ (define marionette
|
||||||
"root\n"
|
"root\n"
|
||||||
(begin
|
(begin
|
||||||
(marionette-control "sendkey ctrl-alt-f1" marionette)
|
(marionette-control "sendkey ctrl-alt-f1" marionette)
|
||||||
;; Wait for the 'term-tty1' service to be running
|
;; Wait for the 'term-tty1' service to be running (using
|
||||||
|
;; 'start-service' is the simplest and most reliable way to do
|
||||||
|
;; that.)
|
||||||
(marionette-eval
|
(marionette-eval
|
||||||
'(begin
|
'(begin
|
||||||
(use-modules (gnu services herd))
|
(use-modules (gnu services herd))
|
||||||
|
(start-service 'term-tty1))
|
||||||
(let loop ((i 0))
|
|
||||||
(when (> i 10)
|
|
||||||
(error "terminal service not running" (current-services)))
|
|
||||||
(unless (memq 'term-tty1 (current-services))
|
|
||||||
(sleep 1)
|
|
||||||
(loop (+ i 1)))))
|
|
||||||
marionette)
|
marionette)
|
||||||
|
|
||||||
;; Now we can type.
|
;; Now we can type.
|
||||||
|
|
|
@ -44,6 +44,7 @@ (define-module (guix utils)
|
||||||
#:use-module (ice-9 format)
|
#:use-module (ice-9 format)
|
||||||
#:use-module ((ice-9 iconv) #:select (bytevector->string))
|
#:use-module ((ice-9 iconv) #:select (bytevector->string))
|
||||||
#:use-module (system foreign)
|
#:use-module (system foreign)
|
||||||
|
#:re-export (memoize) ; for backwards compatibility
|
||||||
#:export (bytevector->base16-string
|
#:export (bytevector->base16-string
|
||||||
base16-string->bytevector
|
base16-string->bytevector
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue