From 64fce637082568e3edbabf68659ee7003baf55c2 Mon Sep 17 00:00:00 2001 From: rennes Date: Sat, 24 Jun 2017 12:53:16 -0500 Subject: gnu: Add lollypop. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/gnome.scm (lollypop): New variable. Co-authored-by: Ludovic Courtès --- gnu/packages/gnome.scm | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'gnu/packages/gnome.scm') diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 3491f4be1c..972f3ec15b 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -96,6 +96,7 @@ #:use-module (gnu packages lua) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages music) #:use-module (gnu packages networking) #:use-module (gnu packages password-utils) #:use-module (gnu packages pcre) @@ -6371,3 +6372,63 @@ duration, cost, and current progress. It can also show a report of resource utilization that highlights under-utilized and over-utilized resources. These views can be printed as PDF or PostScript files, or exported to HTML.") (license license:gpl2+))) + +(define-public lollypop + (package + (name "lollypop") + (version "0.9.240") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/gnumdk/lollypop/" + "releases/download/" version "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0n1ycmg6dgz1pajs80fwlcbxw3rx1hff1xw6ja67zngm85ydbjvq")))) + (build-system glib-or-gtk-build-system) + (arguments + `(#:imported-modules ((guix build python-build-system) + ,@%glib-or-gtk-build-system-modules) + #:phases (modify-phases %standard-phases + (add-after 'install 'wrap-program + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (gi-typelib-path (getenv "GI_TYPELIB_PATH"))) + (wrap-program (string-append out "/bin/lollypop") + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))) + #t)) + (add-after 'install 'wrap + (@@ (guix build python-build-system) wrap))))) + (native-inputs + `(("intltool" ,intltool) + ("itstool" ,itstool) + ("pkg-config" ,pkg-config))) + (inputs + `(("gobject-introspection" ,gobject-introspection) + ("gtk+" ,gtk+) + ("libnotify" ,libnotify) + ("libsecret" ,libsecret) + ("libsoup" ,libsoup) + ("python" ,python) + ("python-beautifulsoup4" ,python-beautifulsoup4) + ("python-gst" ,python-gst) + ("python-pycairo" ,python-pycairo) + ("python-pygobject" ,python-pygobject) + ("python-pylast" ,python-pylast) + ("totem-pl-parser" ,totem-pl-parser) + ("webkitgtk" ,webkitgtk))) + (propagated-inputs + `(;; gst-plugins-base is required to start Lollypop, + ;; the others are required to play streaming. + ("gst-plugins-base" ,gst-plugins-base) + ("gst-plugins-good" ,gst-plugins-good) + ("gst-plugins-ugly" ,gst-plugins-ugly))) + (home-page "https://gnumdk.github.io/lollypop-web") + (synopsis "GNOME music playing application") + (description + "Lollypop is a music player designed to play well with GNOME desktop. +Lollypop plays audio formats such as mp3, mp4, ogg and flac and gets information +from artists and tracks from the web. It also fetches cover artworks +automatically and it can stream songs from online music services and charts.") + (license license:gpl3+))) -- cgit 1.4.1 From 5887d554ec8f626f9cb8e9f88e34109ad68076e8 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Thu, 13 Jul 2017 21:11:15 +0200 Subject: gnu: evince: Fix CVE-2017-1000083. * gnu/packages/patches/evince-CVE-2017-1000083.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/gnome.scm (evince)[source]: Use it. --- gnu/local.mk | 1 + gnu/packages/gnome.scm | 1 + gnu/packages/patches/evince-CVE-2017-1000083.patch | 109 +++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 gnu/packages/patches/evince-CVE-2017-1000083.patch (limited to 'gnu/packages/gnome.scm') diff --git a/gnu/local.mk b/gnu/local.mk index 4da9cba27d..1ced658911 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -576,6 +576,7 @@ dist_patch_DATA = \ %D%/packages/patches/eudev-rules-directory.patch \ %D%/packages/patches/eudev-conflicting-declaration.patch \ %D%/packages/patches/evilwm-lost-focus-bug.patch \ + %D%/packages/patches/evince-CVE-2017-1000083.patch \ %D%/packages/patches/expat-CVE-2016-0718-fix-regression.patch \ %D%/packages/patches/exim-CVE-2017-1000369.patch \ %D%/packages/patches/fabric-tests.patch \ diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 972f3ec15b..3125fa03ca 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -615,6 +615,7 @@ forgotten when the session ends.") (uri (string-append "mirror://gnome/sources/" name "/" (version-major+minor version) "/" name "-" version ".tar.xz")) + (patches (search-patches "evince-CVE-2017-1000083.patch")) (sha256 (base32 "13yw0i68dgqp9alyliy3zifszh7rikkpi1xbz5binvxxgfpraf04")))) diff --git a/gnu/packages/patches/evince-CVE-2017-1000083.patch b/gnu/packages/patches/evince-CVE-2017-1000083.patch new file mode 100644 index 0000000000..2ca062f337 --- /dev/null +++ b/gnu/packages/patches/evince-CVE-2017-1000083.patch @@ -0,0 +1,109 @@ +Fix CVE-2017-1000083. + +http://seclists.org/oss-sec/2017/q3/128 +https://bugzilla.gnome.org/show_bug.cgi?id=784630 + +Patch copied from upstream source repository: + +https://git.gnome.org/browse/evince/commit/?id=717df38fd8509bf883b70d680c9b1b3cf36732ee + +From 717df38fd8509bf883b70d680c9b1b3cf36732ee Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Thu, 6 Jul 2017 20:02:00 +0200 +Subject: comics: Remove support for tar and tar-like commands + +diff --git a/backend/comics/comics-document.c b/backend/comics/comics-document.c +index 4c74731..641d785 100644 +--- a/backend/comics/comics-document.c ++++ b/backend/comics/comics-document.c +@@ -56,8 +56,7 @@ typedef enum + RARLABS, + GNAUNRAR, + UNZIP, +- P7ZIP, +- TAR ++ P7ZIP + } ComicBookDecompressType; + + typedef struct _ComicsDocumentClass ComicsDocumentClass; +@@ -117,9 +116,6 @@ static const ComicBookDecompressCommand command_usage_def[] = { + + /* 7zip */ + {NULL , "%s l -- %s" , "%s x -y %s -o%s", FALSE, OFFSET_7Z}, +- +- /* tar */ +- {"%s -xOf" , "%s -tf %s" , NULL , FALSE, NO_OFFSET} + }; + + static GSList* get_supported_image_extensions (void); +@@ -364,13 +360,6 @@ comics_check_decompress_command (gchar *mime_type, + comics_document->command_usage = GNAUNRAR; + return TRUE; + } +- comics_document->selected_command = +- g_find_program_in_path ("bsdtar"); +- if (comics_document->selected_command) { +- comics_document->command_usage = TAR; +- return TRUE; +- } +- + } else if (g_content_type_is_a (mime_type, "application/x-cbz") || + g_content_type_is_a (mime_type, "application/zip")) { + /* InfoZIP's unzip program */ +@@ -396,12 +385,6 @@ comics_check_decompress_command (gchar *mime_type, + comics_document->command_usage = P7ZIP; + return TRUE; + } +- comics_document->selected_command = +- g_find_program_in_path ("bsdtar"); +- if (comics_document->selected_command) { +- comics_document->command_usage = TAR; +- return TRUE; +- } + + } else if (g_content_type_is_a (mime_type, "application/x-cb7") || + g_content_type_is_a (mime_type, "application/x-7z-compressed")) { +@@ -425,27 +408,6 @@ comics_check_decompress_command (gchar *mime_type, + comics_document->command_usage = P7ZIP; + return TRUE; + } +- comics_document->selected_command = +- g_find_program_in_path ("bsdtar"); +- if (comics_document->selected_command) { +- comics_document->command_usage = TAR; +- return TRUE; +- } +- } else if (g_content_type_is_a (mime_type, "application/x-cbt") || +- g_content_type_is_a (mime_type, "application/x-tar")) { +- /* tar utility (Tape ARchive) */ +- comics_document->selected_command = +- g_find_program_in_path ("tar"); +- if (comics_document->selected_command) { +- comics_document->command_usage = TAR; +- return TRUE; +- } +- comics_document->selected_command = +- g_find_program_in_path ("bsdtar"); +- if (comics_document->selected_command) { +- comics_document->command_usage = TAR; +- return TRUE; +- } + } else { + g_set_error (error, + EV_DOCUMENT_ERROR, +diff --git a/configure.ac b/configure.ac +index 9e9f831..7eb0f1f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -795,7 +795,7 @@ AC_SUBST(TIFF_MIME_TYPES) + AC_SUBST(APPDATA_TIFF_MIME_TYPES) + AM_SUBST_NOTMAKE(APPDATA_TIFF_MIME_TYPES) + if test "x$enable_comics" = "xyes"; then +- COMICS_MIME_TYPES="application/x-cbr;application/x-cbz;application/x-cb7;application/x-cbt;application/x-ext-cbr;application/x-ext-cbz;application/vnd.comicbook+zip;application/x-ext-cb7;application/x-ext-cbt" ++ COMICS_MIME_TYPES="application/x-cbr;application/x-cbz;application/x-cb7;application/x-ext-cbr;application/x-ext-cbz;application/vnd.comicbook+zip;application/x-ext-cb7;" + APPDATA_COMICS_MIME_TYPES=$(echo "$COMICS_MIME_TYPES" | sed -e 's/;/<\/mimetype>\n /g') + if test -z "$EVINCE_MIME_TYPES"; then + EVINCE_MIME_TYPES="${COMICS_MIME_TYPES}" +-- +cgit v0.12 + -- cgit 1.4.1 From 59132b800093e486e4d81aed6b837e9ac76aa86c Mon Sep 17 00:00:00 2001 From: 宋文武 Date: Wed, 12 Jul 2017 20:35:57 +0800 Subject: gnu: Rename (gnu packages qemu) to (gnu packages virtualization). * gnu/packages/qemu.scm: Rename this ... * gnu/packages/virtualization.scm: ... to this. * gnu/local.mk (GNU_SYSTEM_MODULES), gnu/packages/bootloaders.scm, gnu/packages/debug.scm, gnu/packages/gnome.scm, gnu/system/vm.scm, gnu/tests/install.scm: Adjust accordingly. --- gnu/local.mk | 2 +- gnu/packages/bootloaders.scm | 2 +- gnu/packages/debug.scm | 2 +- gnu/packages/gnome.scm | 2 +- gnu/packages/qemu.scm | 507 ---------------------------------------- gnu/packages/virtualization.scm | 507 ++++++++++++++++++++++++++++++++++++++++ gnu/system/vm.scm | 2 +- gnu/tests/install.scm | 2 +- 8 files changed, 513 insertions(+), 513 deletions(-) delete mode 100644 gnu/packages/qemu.scm create mode 100644 gnu/packages/virtualization.scm (limited to 'gnu/packages/gnome.scm') diff --git a/gnu/local.mk b/gnu/local.mk index b79bc1992c..50fac30404 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -328,7 +328,6 @@ GNU_SYSTEM_MODULES = \ %D%/packages/pv.scm \ %D%/packages/python.scm \ %D%/packages/tryton.scm \ - %D%/packages/qemu.scm \ %D%/packages/qt.scm \ %D%/packages/ragel.scm \ %D%/packages/rails.scm \ @@ -398,6 +397,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/version-control.scm \ %D%/packages/video.scm \ %D%/packages/vim.scm \ + %D%/packages/virtualization.scm \ %D%/packages/vpn.scm \ %D%/packages/w3m.scm \ %D%/packages/wdiff.scm \ diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 9ae6175280..802e8ab8dc 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -40,8 +40,8 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (gnu packages python) - #:use-module (gnu packages qemu) #:use-module (gnu packages texinfo) + #:use-module (gnu packages virtualization) #:use-module (guix build-system gnu) #:use-module (guix download) #:use-module (guix git-download) diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm index 27193c8bba..34c1061418 100644 --- a/gnu/packages/debug.scm +++ b/gnu/packages/debug.scm @@ -32,7 +32,7 @@ #:use-module (gnu packages llvm) #:use-module (gnu packages perl) #:use-module (gnu packages pretty-print) - #:use-module (gnu packages qemu) + #:use-module (gnu packages virtualization) #:use-module (ice-9 match) #:use-module (srfi srfi-1)) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 3125fa03ca..4221bbc76c 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -132,8 +132,8 @@ #:use-module (gnu packages samba) #:use-module (gnu packages readline) #:use-module (gnu packages fonts) - #:use-module (gnu packages qemu) #:use-module (gnu packages speech) + #:use-module (gnu packages virtualization) #:use-module (srfi srfi-1)) (define-public brasero diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm deleted file mode 100644 index 0bd314c660..0000000000 --- a/gnu/packages/qemu.scm +++ /dev/null @@ -1,507 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès -;;; Copyright © 2015, 2016, 2017 Mark H Weaver -;;; Copyright © 2016, 2017 Efraim Flashner -;;; Copyright © 2016 Ricardo Wurmus -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (gnu packages qemu) - #:use-module (gnu packages) - #:use-module (gnu packages admin) - #:use-module (gnu packages attr) - #:use-module (gnu packages autotools) - #:use-module (gnu packages check) - #:use-module (gnu packages compression) - #:use-module (gnu packages curl) - #:use-module (gnu packages cyrus-sasl) - #:use-module (gnu packages disk) - #:use-module (gnu packages dns) - #:use-module (gnu packages gl) - #:use-module (gnu packages glib) - #:use-module (gnu packages gnome) - #:use-module (gnu packages gtk) - #:use-module (gnu packages image) - #:use-module (gnu packages libusb) - #:use-module (gnu packages linux) - #:use-module (gnu packages ncurses) - #:use-module (gnu packages perl) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages polkit) - #:use-module (gnu packages python) - #:use-module (gnu packages sdl) - #:use-module (gnu packages spice) - #:use-module (gnu packages texinfo) - #:use-module (gnu packages tls) - #:use-module (gnu packages web) - #:use-module (gnu packages xdisorg) - #:use-module (gnu packages xml) - #:use-module (guix build-system gnu) - #:use-module (guix build-system python) - #:use-module (guix download) - #:use-module ((guix licenses) #:select (gpl2 gpl2+ lgpl2.1+)) - #:use-module (guix packages) - #:use-module (guix utils) - #:use-module (srfi srfi-1)) - -(define (qemu-patch commit file-name sha256) - "Return an origin for COMMIT." - (origin - (method url-fetch) - (uri (string-append - "http://git.qemu.org/?p=qemu.git;a=commitdiff_plain;h=" - commit)) - (sha256 sha256) - (file-name file-name))) - -(define-public qemu - (package - (name "qemu") - (version "2.9.0") - (source (origin - (method url-fetch) - (uri (string-append "http://wiki.qemu-project.org/download/qemu-" - version ".tar.xz")) - (patches (search-patches "qemu-CVE-2017-7493.patch" - "qemu-CVE-2017-8112.patch" - "qemu-CVE-2017-8309.patch" - "qemu-CVE-2017-8379.patch" - "qemu-CVE-2017-8380.patch" - "qemu-CVE-2017-9524.patch")) - (sha256 - (base32 - "08mhfs0ndbkyqgw7fjaa9vjxf4dinrly656f6hjzvmaz7hzc677h")))) - (build-system gnu-build-system) - (arguments - '(;; Running tests in parallel can occasionally lead to failures, like: - ;; boot_sector_test: assertion failed (signature == SIGNATURE): (0x00000000 == 0x0000dead) - #:parallel-tests? #f - - #:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key inputs outputs (configure-flags '()) - #:allow-other-keys) - ;; The `configure' script doesn't understand some of the - ;; GNU options. Thus, add a new phase that's compatible. - (let ((out (assoc-ref outputs "out"))) - (setenv "SHELL" (which "bash")) - - ;; While we're at it, patch for tests. - (substitute* "tests/libqtest.c" - (("/bin/sh") (which "sh"))) - - ;; The binaries need to be linked against -lrt. - (setenv "LDFLAGS" "-lrt") - (zero? - (apply system* - `("./configure" - ,(string-append "--cc=" (which "gcc")) - ;; Some architectures insist on using HOST_CC - ,(string-append "--host-cc=" (which "gcc")) - "--disable-debug-info" ; save build space - "--enable-virtfs" ; just to be sure - ,(string-append "--prefix=" out) - ,@configure-flags)))))) - (add-after 'install 'install-info - (lambda* (#:key inputs outputs #:allow-other-keys) - ;; Install the Info manual, unless Texinfo is missing. - (or (not (assoc-ref inputs "texinfo")) - (let ((out (assoc-ref outputs "out"))) - (and (zero? (system* "make" "info")) - (let ((infodir (string-append out "/share/info"))) - (for-each (lambda (info) - (install-file info infodir)) - (find-files "." "\\.info")) - #t)))))) - (add-before 'check 'make-gtester-verbose - (lambda _ - ;; Make GTester verbose to facilitate investigation upon failure. - (setenv "V" "1") #t)) - (add-before 'check 'disable-test-qga - (lambda _ - (substitute* "tests/Makefile.include" - ;; Comment out the test-qga test, which needs /sys and - ;; fails within the build environment. - (("check-unit-.* tests/test-qga" all) - (string-append "# " all))) - #t))))) - (inputs ; TODO: Add optional inputs. - `(("alsa-lib" ,alsa-lib) - ("attr" ,attr) - ("glib" ,glib) - ;; ("libaio" ,libaio) - ("libattr" ,attr) - ("libcap" ,libcap) ; virtfs support requires libcap & libattr - ("libjpeg" ,libjpeg-8) - ("libpng" ,libpng) - ("libusb" ,libusb) ;USB pass-through support - ("mesa" ,mesa) - ("ncurses" ,ncurses) - ;; ("pciutils" ,pciutils) - ("pixman" ,pixman) - ("sdl" ,sdl) - ("spice" ,spice) - ("util-linux" ,util-linux) - ;; ("vde2" ,vde2) - ("virglrenderer" ,virglrenderer) - ("zlib" ,zlib))) - (native-inputs `(("glib:bin" ,glib "bin") ; gtester, etc. - ("perl" ,perl) - ("pkg-config" ,pkg-config) - ("python" ,python-2) ; incompatible with Python 3 according to error message - ("texinfo" ,texinfo))) - (home-page "http://www.qemu-project.org") - (synopsis "Machine emulator and virtualizer") - (description - "QEMU is a generic machine emulator and virtualizer. - -When used as a machine emulator, QEMU can run OSes and programs made for one -machine (e.g. an ARM board) on a different machine---e.g., your own PC. By -using dynamic translation, it achieves very good performance. - -When used as a virtualizer, QEMU achieves near native performances by -executing the guest code directly on the host CPU. QEMU supports -virtualization when executing under the Xen hypervisor or using -the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86, -server and embedded PowerPC, and S390 guests.") - - ;; Many files are GPLv2+, but some are GPLv2-only---e.g., `memory.c'. - (license gpl2) - - ;; Several tests fail on MIPS; see . - (supported-systems (delete "mips64el-linux" %supported-systems)))) - -(define-public qemu-minimal - ;; QEMU without GUI support. - (package (inherit qemu) - (name "qemu-minimal") - (synopsis "Machine emulator and virtualizer (without GUI)") - (arguments - `(#:configure-flags - ;; Restrict to the targets supported by Guix. - '("--target-list=i386-softmmu,x86_64-softmmu,mips64el-softmmu,arm-softmmu,aarch64-softmmu") - ,@(package-arguments qemu))) - - ;; Remove dependencies on optional libraries, notably GUI libraries. - (inputs (fold alist-delete (package-inputs qemu) - '("libusb" "mesa" "sdl" "spice" "virglrenderer"))))) - -(define-public libosinfo - (package - (name "libosinfo") - (version "1.0.0") - (source - (origin - (method url-fetch) - (uri (string-append "https://releases.pagure.org/libosinfo/libosinfo-" - version ".tar.gz")) - (sha256 - (base32 - "0srrs2m6irqd4f867g8ls6jp2dq3ql0l9d0fh80d55sivvn2bd7p")))) - (build-system gnu-build-system) - (arguments - `(#:configure-flags - (list (string-append "--with-usb-ids-path=" - (assoc-ref %build-inputs "usb.ids")) - (string-append "--with-pci-ids-path=" - (assoc-ref %build-inputs "pci.ids"))) - #:phases - (modify-phases %standard-phases - ;; This odd test fails for unknown reasons. - (add-after 'unpack 'disable-broken-test - (lambda _ - (substitute* "test/Makefile.in" - (("test-isodetect\\$\\(EXEEXT\\)") "")) - #t))))) - (inputs - `(("libsoup" ,libsoup) - ("libxml2" ,libxml2) - ("libxslt" ,libxslt) - ("gobject-introspection" ,gobject-introspection))) - (native-inputs - `(("check" ,check) - ("glib" ,glib "bin") ; glib-mkenums, etc. - ("gtk-doc" ,gtk-doc) - ("vala" ,vala) - ("intltool" ,intltool) - ("pkg-config" ,pkg-config) - ("pci.ids" - ,(origin - (method url-fetch) - (uri "https://github.com/pciutils/pciids/raw/ad02084f0bc143e3c15e31a6152a3dfb1d7a3156/pci.ids") - (sha256 - (base32 - "0kfhpj5rnh24hz2714qhfmxk281vwc2w50sm73ggw5d15af7zfsw")))) - ("usb.ids" - ,(origin - (method url-fetch) - (uri "http://linux-usb.cvs.sourceforge.net/viewvc/linux-usb/htdocs/usb.ids?revision=1.551") - (file-name "usb.ids") - (sha256 - (base32 - "17rg5i0wbyk289gr8v4kgvnc9q5bidz7ldcvv9x58l083wn16hq3")))))) - (home-page "https://libosinfo.org/") - (synopsis "Operating system information database") - (description "libosinfo is a GObject based library API for managing -information about operating systems, hypervisors and the (virtual) hardware -devices they can support. It includes a database containing device metadata -and provides APIs to match/identify optimal devices for deploying an operating -system on a hypervisor. Via GObject Introspection, the API is available in -all common programming languages. Vala bindings are also provided.") - ;; The library files are released under LGPLv2.1 or later; the source - ;; files in the "tools" directory are released under GPLv2+. - (license (list lgpl2.1+ gpl2+)))) - -(define-public libvirt - (package - (name "libvirt") - (version "3.5.0") - (source (origin - (method url-fetch) - (uri (string-append "http://libvirt.org/sources/libvirt-" - version ".tar.xz")) - (sha256 - (base32 - "05mm4xdw6g960rwvc9189nhxpm1vrilnmpl4h4m1lha11pivlqr9")))) - (build-system gnu-build-system) - (arguments - `(;; FAIL: virshtest - ;; FAIL: virfirewalltest - ;; FAIL: virkmodtest - ;; FAIL: virnetsockettest - ;; FAIL: networkxml2firewalltest - ;; FAIL: nwfilterebiptablestest - ;; FAIL: nwfilterxml2firewalltest - ;; Times out after PASS: virsh-vcpupin - #:tests? #f - #:configure-flags - (list "--with-polkit" - "--sysconfdir=/etc" - "--localstatedir=/var") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-tests - (lambda _ - (substitute* '("tests/commandtest.c" - "gnulib/tests/test-posix_spawn1.c" - "gnulib/tests/test-posix_spawn2.c") - (("/bin/sh") (which "sh"))) - #t)) - (replace 'install - ;; Since the sysconfdir and localstatedir should be /etc and /var - ;; at runtime, we must prevent writing to them at installation - ;; time. - (lambda _ - (zero? (system* "make" "install" - "sysconfdir=/tmp/etc" - "localstatedir=/tmp/var"))))))) - (inputs - `(("libxml2" ,libxml2) - ("gnutls" ,gnutls) - ("dbus" ,dbus) - ("qemu" ,qemu) - ("polkit" ,polkit) - ("libpcap" ,libpcap) - ("libnl" ,libnl) - ("libuuid" ,util-linux) - ("lvm2" ,lvm2) ; for libdevmapper - ("curl" ,curl) - ("openssl" ,openssl) - ("cyrus-sasl" ,cyrus-sasl) - ("perl" ,perl) - ("python" ,python-2) - ("libyajl" ,libyajl) - ("audit" ,audit) - ("dmidecode" ,dmidecode) - ("dnsmasq" ,dnsmasq) - ("ebtables" ,ebtables) - ("iproute" ,iproute) - ("iptables" ,iptables))) - (native-inputs - `(("pkg-config" ,pkg-config))) - (home-page "http://libvirt.org") - (synopsis "Simple API for virtualization") - (description "Libvirt is a C toolkit to interact with the virtualization -capabilities of recent versions of Linux. The library aims at providing long -term stable C API initially for the Xen paravirtualization but should be able -to integrate other virtualization mechanisms if needed.") - (license lgpl2.1+))) - -(define-public libvirt-glib - (package - (name "libvirt-glib") - (version "1.0.0") - (source (origin - (method url-fetch) - (uri (string-append "ftp://libvirt.org/libvirt/glib/" - "libvirt-glib-" version ".tar.gz")) - (sha256 - (base32 - "0iwa5sdbii52pjpdm5j37f67sdmf0kpcky4liwhy1nf43k85i4fa")))) - (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-tests - (lambda _ - (substitute* "tests/test-events.c" - (("/bin/true") (which "true"))) - #t))))) - (inputs - `(("libxml2" ,libxml2) - ("libvirt" ,libvirt) - ("gobject-introspection" ,gobject-introspection) - ("glib" ,glib) - ("openssl" ,openssl) - ("cyrus-sasl" ,cyrus-sasl) - ("lvm2" ,lvm2) ; for libdevmapper - ("libyajl" ,libyajl))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("intltool" ,intltool) - ("glib" ,glib "bin") - ("vala" ,vala))) - (home-page "http://libvirt.org") - (synopsis "GLib wrapper around libvirt") - (description "libvirt-glib wraps the libvirt library to provide a -high-level object-oriented API better suited for glib-based applications, via -three libraries: - -@enumerate -@item libvirt-glib - GLib main loop integration & misc helper APIs -@item libvirt-gconfig - GObjects for manipulating libvirt XML documents -@item libvirt-gobject - GObjects for managing libvirt objects -@end enumerate -") - (license lgpl2.1+))) - -(define-public python-libvirt - (package - (name "python-libvirt") - (version "3.4.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "libvirt-python" version)) - (sha256 - (base32 - "04dma3979171p9yf0cg7m03shk038hc9vyfm9lb8z60qyn0pg9xg")))) - (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-nosetests-path - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "setup.py" - (("\"/usr/bin/nosetests\"") - (string-append "\"" (which "nosetests") "\"")) - (("self\\.spawn\\(\\[sys\\.executable, nose\\]\\)") - (format #f "self.spawn([\"~a\", nose])" (which "bash")))) - #t))))) - (inputs - `(("libvirt" ,libvirt))) - (propagated-inputs - `(("python-lxml" ,python-lxml))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("python-nose" ,python-nose))) - (home-page "http://libvirt.org") - (synopsis "Python bindings to libvirt") - (description "This package provides Python bindings to the libvirt -virtualization library.") - (license lgpl2.1+))) - -(define-public python2-libvirt - (package-with-python2 python-libvirt)) - -(define-public virt-manager - (package - (name "virt-manager") - (version "1.4.1") - (source (origin - (method url-fetch) - (uri (string-append "https://virt-manager.org/download/sources" - "/virt-manager/virt-manager-" - version ".tar.gz")) - (sha256 - (base32 - "0i1rkxz730vw1nqghrp189jhhp53pw81k0h71hhxmyqlkyclkig6")))) - (build-system python-build-system) - (arguments - `(#:python ,python-2 - #:use-setuptools? #f ; Uses custom distutils 'install' command. - ;; Some of the tests seem to require network access to install virtual - ;; machines. - #:tests? #f - #:modules ((ice-9 match) - (srfi srfi-26) - (guix build python-build-system) - (guix build utils)) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-setup - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "virtcli/cliconfig.py" - (("/usr") (assoc-ref outputs "out"))) - #t)) - (add-before 'wrap 'wrap-with-GI_TYPELIB_PATH - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((bin (string-append (assoc-ref outputs "out") "/bin")) - (bin-files (find-files bin ".*")) - (paths (map (match-lambda - ((output . directory) - (let* ((girepodir (string-append - directory - "/lib/girepository-1.0"))) - (if (file-exists? girepodir) - girepodir #f)))) - inputs))) - (for-each (lambda (file) - (format #t "wrapping ~a\n" file) - (wrap-program file - `("GI_TYPELIB_PATH" ":" prefix - ,(filter identity paths)))) - bin-files)) - #t))))) - (inputs - `(("gtk+" ,gtk+) - ("gtk-vnc" ,gtk-vnc) - ("libvirt" ,libvirt) - ("libvirt-glib" ,libvirt-glib) - ("libosinfo" ,libosinfo) - ("vte" ,vte) - ("gobject-introspection" ,gobject-introspection) - ("python2-libvirt" ,python2-libvirt) - ("python2-requests" ,python2-requests) - ("python2-ipaddr" ,python2-ipaddr) - ("python2-pygobject" ,python2-pygobject) - ("python2-libxml2" ,python2-libxml2))) - ;; virt-manager searches for qemu-img or kvm-img in the PATH. - (propagated-inputs - `(("qemu" ,qemu))) - (native-inputs - `(("glib" ,glib "bin") ; glib-compile-schemas. - ("gtk+" ,gtk+ "bin") ; gtk-update-icon-cache - ("perl" ,perl) ; pod2man - ("intltool" ,intltool))) - (home-page "https://virt-manager.org/") - (synopsis "Manage virtual machines") - (description - "The virt-manager application is a desktop user interface for managing -virtual machines through libvirt. It primarily targets KVM VMs, but also -manages Xen and LXC (Linux containers). It presents a summary view of running -domains, their live performance and resource utilization statistics.") - (license gpl2+))) diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm new file mode 100644 index 0000000000..79209c3006 --- /dev/null +++ b/gnu/packages/virtualization.scm @@ -0,0 +1,507 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès +;;; Copyright © 2015, 2016, 2017 Mark H Weaver +;;; Copyright © 2016, 2017 Efraim Flashner +;;; Copyright © 2016 Ricardo Wurmus +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages virtualization) + #:use-module (gnu packages) + #:use-module (gnu packages admin) + #:use-module (gnu packages attr) + #:use-module (gnu packages autotools) + #:use-module (gnu packages check) + #:use-module (gnu packages compression) + #:use-module (gnu packages curl) + #:use-module (gnu packages cyrus-sasl) + #:use-module (gnu packages disk) + #:use-module (gnu packages dns) + #:use-module (gnu packages gl) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gtk) + #:use-module (gnu packages image) + #:use-module (gnu packages libusb) + #:use-module (gnu packages linux) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages polkit) + #:use-module (gnu packages python) + #:use-module (gnu packages sdl) + #:use-module (gnu packages spice) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages tls) + #:use-module (gnu packages web) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xml) + #:use-module (guix build-system gnu) + #:use-module (guix build-system python) + #:use-module (guix download) + #:use-module ((guix licenses) #:select (gpl2 gpl2+ lgpl2.1+)) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (srfi srfi-1)) + +(define (qemu-patch commit file-name sha256) + "Return an origin for COMMIT." + (origin + (method url-fetch) + (uri (string-append + "http://git.qemu.org/?p=qemu.git;a=commitdiff_plain;h=" + commit)) + (sha256 sha256) + (file-name file-name))) + +(define-public qemu + (package + (name "qemu") + (version "2.9.0") + (source (origin + (method url-fetch) + (uri (string-append "http://wiki.qemu-project.org/download/qemu-" + version ".tar.xz")) + (patches (search-patches "qemu-CVE-2017-7493.patch" + "qemu-CVE-2017-8112.patch" + "qemu-CVE-2017-8309.patch" + "qemu-CVE-2017-8379.patch" + "qemu-CVE-2017-8380.patch" + "qemu-CVE-2017-9524.patch")) + (sha256 + (base32 + "08mhfs0ndbkyqgw7fjaa9vjxf4dinrly656f6hjzvmaz7hzc677h")))) + (build-system gnu-build-system) + (arguments + '(;; Running tests in parallel can occasionally lead to failures, like: + ;; boot_sector_test: assertion failed (signature == SIGNATURE): (0x00000000 == 0x0000dead) + #:parallel-tests? #f + + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs outputs (configure-flags '()) + #:allow-other-keys) + ;; The `configure' script doesn't understand some of the + ;; GNU options. Thus, add a new phase that's compatible. + (let ((out (assoc-ref outputs "out"))) + (setenv "SHELL" (which "bash")) + + ;; While we're at it, patch for tests. + (substitute* "tests/libqtest.c" + (("/bin/sh") (which "sh"))) + + ;; The binaries need to be linked against -lrt. + (setenv "LDFLAGS" "-lrt") + (zero? + (apply system* + `("./configure" + ,(string-append "--cc=" (which "gcc")) + ;; Some architectures insist on using HOST_CC + ,(string-append "--host-cc=" (which "gcc")) + "--disable-debug-info" ; save build space + "--enable-virtfs" ; just to be sure + ,(string-append "--prefix=" out) + ,@configure-flags)))))) + (add-after 'install 'install-info + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Install the Info manual, unless Texinfo is missing. + (or (not (assoc-ref inputs "texinfo")) + (let ((out (assoc-ref outputs "out"))) + (and (zero? (system* "make" "info")) + (let ((infodir (string-append out "/share/info"))) + (for-each (lambda (info) + (install-file info infodir)) + (find-files "." "\\.info")) + #t)))))) + (add-before 'check 'make-gtester-verbose + (lambda _ + ;; Make GTester verbose to facilitate investigation upon failure. + (setenv "V" "1") #t)) + (add-before 'check 'disable-test-qga + (lambda _ + (substitute* "tests/Makefile.include" + ;; Comment out the test-qga test, which needs /sys and + ;; fails within the build environment. + (("check-unit-.* tests/test-qga" all) + (string-append "# " all))) + #t))))) + (inputs ; TODO: Add optional inputs. + `(("alsa-lib" ,alsa-lib) + ("attr" ,attr) + ("glib" ,glib) + ;; ("libaio" ,libaio) + ("libattr" ,attr) + ("libcap" ,libcap) ; virtfs support requires libcap & libattr + ("libjpeg" ,libjpeg-8) + ("libpng" ,libpng) + ("libusb" ,libusb) ;USB pass-through support + ("mesa" ,mesa) + ("ncurses" ,ncurses) + ;; ("pciutils" ,pciutils) + ("pixman" ,pixman) + ("sdl" ,sdl) + ("spice" ,spice) + ("util-linux" ,util-linux) + ;; ("vde2" ,vde2) + ("virglrenderer" ,virglrenderer) + ("zlib" ,zlib))) + (native-inputs `(("glib:bin" ,glib "bin") ; gtester, etc. + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-2) ; incompatible with Python 3 according to error message + ("texinfo" ,texinfo))) + (home-page "http://www.qemu-project.org") + (synopsis "Machine emulator and virtualizer") + (description + "QEMU is a generic machine emulator and virtualizer. + +When used as a machine emulator, QEMU can run OSes and programs made for one +machine (e.g. an ARM board) on a different machine---e.g., your own PC. By +using dynamic translation, it achieves very good performance. + +When used as a virtualizer, QEMU achieves near native performances by +executing the guest code directly on the host CPU. QEMU supports +virtualization when executing under the Xen hypervisor or using +the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86, +server and embedded PowerPC, and S390 guests.") + + ;; Many files are GPLv2+, but some are GPLv2-only---e.g., `memory.c'. + (license gpl2) + + ;; Several tests fail on MIPS; see . + (supported-systems (delete "mips64el-linux" %supported-systems)))) + +(define-public qemu-minimal + ;; QEMU without GUI support. + (package (inherit qemu) + (name "qemu-minimal") + (synopsis "Machine emulator and virtualizer (without GUI)") + (arguments + `(#:configure-flags + ;; Restrict to the targets supported by Guix. + '("--target-list=i386-softmmu,x86_64-softmmu,mips64el-softmmu,arm-softmmu,aarch64-softmmu") + ,@(package-arguments qemu))) + + ;; Remove dependencies on optional libraries, notably GUI libraries. + (inputs (fold alist-delete (package-inputs qemu) + '("libusb" "mesa" "sdl" "spice" "virglrenderer"))))) + +(define-public libosinfo + (package + (name "libosinfo") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://releases.pagure.org/libosinfo/libosinfo-" + version ".tar.gz")) + (sha256 + (base32 + "0srrs2m6irqd4f867g8ls6jp2dq3ql0l9d0fh80d55sivvn2bd7p")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--with-usb-ids-path=" + (assoc-ref %build-inputs "usb.ids")) + (string-append "--with-pci-ids-path=" + (assoc-ref %build-inputs "pci.ids"))) + #:phases + (modify-phases %standard-phases + ;; This odd test fails for unknown reasons. + (add-after 'unpack 'disable-broken-test + (lambda _ + (substitute* "test/Makefile.in" + (("test-isodetect\\$\\(EXEEXT\\)") "")) + #t))))) + (inputs + `(("libsoup" ,libsoup) + ("libxml2" ,libxml2) + ("libxslt" ,libxslt) + ("gobject-introspection" ,gobject-introspection))) + (native-inputs + `(("check" ,check) + ("glib" ,glib "bin") ; glib-mkenums, etc. + ("gtk-doc" ,gtk-doc) + ("vala" ,vala) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("pci.ids" + ,(origin + (method url-fetch) + (uri "https://github.com/pciutils/pciids/raw/ad02084f0bc143e3c15e31a6152a3dfb1d7a3156/pci.ids") + (sha256 + (base32 + "0kfhpj5rnh24hz2714qhfmxk281vwc2w50sm73ggw5d15af7zfsw")))) + ("usb.ids" + ,(origin + (method url-fetch) + (uri "http://linux-usb.cvs.sourceforge.net/viewvc/linux-usb/htdocs/usb.ids?revision=1.551") + (file-name "usb.ids") + (sha256 + (base32 + "17rg5i0wbyk289gr8v4kgvnc9q5bidz7ldcvv9x58l083wn16hq3")))))) + (home-page "https://libosinfo.org/") + (synopsis "Operating system information database") + (description "libosinfo is a GObject based library API for managing +information about operating systems, hypervisors and the (virtual) hardware +devices they can support. It includes a database containing device metadata +and provides APIs to match/identify optimal devices for deploying an operating +system on a hypervisor. Via GObject Introspection, the API is available in +all common programming languages. Vala bindings are also provided.") + ;; The library files are released under LGPLv2.1 or later; the source + ;; files in the "tools" directory are released under GPLv2+. + (license (list lgpl2.1+ gpl2+)))) + +(define-public libvirt + (package + (name "libvirt") + (version "3.5.0") + (source (origin + (method url-fetch) + (uri (string-append "http://libvirt.org/sources/libvirt-" + version ".tar.xz")) + (sha256 + (base32 + "05mm4xdw6g960rwvc9189nhxpm1vrilnmpl4h4m1lha11pivlqr9")))) + (build-system gnu-build-system) + (arguments + `(;; FAIL: virshtest + ;; FAIL: virfirewalltest + ;; FAIL: virkmodtest + ;; FAIL: virnetsockettest + ;; FAIL: networkxml2firewalltest + ;; FAIL: nwfilterebiptablestest + ;; FAIL: nwfilterxml2firewalltest + ;; Times out after PASS: virsh-vcpupin + #:tests? #f + #:configure-flags + (list "--with-polkit" + "--sysconfdir=/etc" + "--localstatedir=/var") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-tests + (lambda _ + (substitute* '("tests/commandtest.c" + "gnulib/tests/test-posix_spawn1.c" + "gnulib/tests/test-posix_spawn2.c") + (("/bin/sh") (which "sh"))) + #t)) + (replace 'install + ;; Since the sysconfdir and localstatedir should be /etc and /var + ;; at runtime, we must prevent writing to them at installation + ;; time. + (lambda _ + (zero? (system* "make" "install" + "sysconfdir=/tmp/etc" + "localstatedir=/tmp/var"))))))) + (inputs + `(("libxml2" ,libxml2) + ("gnutls" ,gnutls) + ("dbus" ,dbus) + ("qemu" ,qemu) + ("polkit" ,polkit) + ("libpcap" ,libpcap) + ("libnl" ,libnl) + ("libuuid" ,util-linux) + ("lvm2" ,lvm2) ; for libdevmapper + ("curl" ,curl) + ("openssl" ,openssl) + ("cyrus-sasl" ,cyrus-sasl) + ("perl" ,perl) + ("python" ,python-2) + ("libyajl" ,libyajl) + ("audit" ,audit) + ("dmidecode" ,dmidecode) + ("dnsmasq" ,dnsmasq) + ("ebtables" ,ebtables) + ("iproute" ,iproute) + ("iptables" ,iptables))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://libvirt.org") + (synopsis "Simple API for virtualization") + (description "Libvirt is a C toolkit to interact with the virtualization +capabilities of recent versions of Linux. The library aims at providing long +term stable C API initially for the Xen paravirtualization but should be able +to integrate other virtualization mechanisms if needed.") + (license lgpl2.1+))) + +(define-public libvirt-glib + (package + (name "libvirt-glib") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (string-append "ftp://libvirt.org/libvirt/glib/" + "libvirt-glib-" version ".tar.gz")) + (sha256 + (base32 + "0iwa5sdbii52pjpdm5j37f67sdmf0kpcky4liwhy1nf43k85i4fa")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-tests + (lambda _ + (substitute* "tests/test-events.c" + (("/bin/true") (which "true"))) + #t))))) + (inputs + `(("libxml2" ,libxml2) + ("libvirt" ,libvirt) + ("gobject-introspection" ,gobject-introspection) + ("glib" ,glib) + ("openssl" ,openssl) + ("cyrus-sasl" ,cyrus-sasl) + ("lvm2" ,lvm2) ; for libdevmapper + ("libyajl" ,libyajl))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("intltool" ,intltool) + ("glib" ,glib "bin") + ("vala" ,vala))) + (home-page "http://libvirt.org") + (synopsis "GLib wrapper around libvirt") + (description "libvirt-glib wraps the libvirt library to provide a +high-level object-oriented API better suited for glib-based applications, via +three libraries: + +@enumerate +@item libvirt-glib - GLib main loop integration & misc helper APIs +@item libvirt-gconfig - GObjects for manipulating libvirt XML documents +@item libvirt-gobject - GObjects for managing libvirt objects +@end enumerate +") + (license lgpl2.1+))) + +(define-public python-libvirt + (package + (name "python-libvirt") + (version "3.4.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "libvirt-python" version)) + (sha256 + (base32 + "04dma3979171p9yf0cg7m03shk038hc9vyfm9lb8z60qyn0pg9xg")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-nosetests-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "setup.py" + (("\"/usr/bin/nosetests\"") + (string-append "\"" (which "nosetests") "\"")) + (("self\\.spawn\\(\\[sys\\.executable, nose\\]\\)") + (format #f "self.spawn([\"~a\", nose])" (which "bash")))) + #t))))) + (inputs + `(("libvirt" ,libvirt))) + (propagated-inputs + `(("python-lxml" ,python-lxml))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python-nose" ,python-nose))) + (home-page "http://libvirt.org") + (synopsis "Python bindings to libvirt") + (description "This package provides Python bindings to the libvirt +virtualization library.") + (license lgpl2.1+))) + +(define-public python2-libvirt + (package-with-python2 python-libvirt)) + +(define-public virt-manager + (package + (name "virt-manager") + (version "1.4.1") + (source (origin + (method url-fetch) + (uri (string-append "https://virt-manager.org/download/sources" + "/virt-manager/virt-manager-" + version ".tar.gz")) + (sha256 + (base32 + "0i1rkxz730vw1nqghrp189jhhp53pw81k0h71hhxmyqlkyclkig6")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2 + #:use-setuptools? #f ; Uses custom distutils 'install' command. + ;; Some of the tests seem to require network access to install virtual + ;; machines. + #:tests? #f + #:modules ((ice-9 match) + (srfi srfi-26) + (guix build python-build-system) + (guix build utils)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-setup + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "virtcli/cliconfig.py" + (("/usr") (assoc-ref outputs "out"))) + #t)) + (add-before 'wrap 'wrap-with-GI_TYPELIB_PATH + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((bin (string-append (assoc-ref outputs "out") "/bin")) + (bin-files (find-files bin ".*")) + (paths (map (match-lambda + ((output . directory) + (let* ((girepodir (string-append + directory + "/lib/girepository-1.0"))) + (if (file-exists? girepodir) + girepodir #f)))) + inputs))) + (for-each (lambda (file) + (format #t "wrapping ~a\n" file) + (wrap-program file + `("GI_TYPELIB_PATH" ":" prefix + ,(filter identity paths)))) + bin-files)) + #t))))) + (inputs + `(("gtk+" ,gtk+) + ("gtk-vnc" ,gtk-vnc) + ("libvirt" ,libvirt) + ("libvirt-glib" ,libvirt-glib) + ("libosinfo" ,libosinfo) + ("vte" ,vte) + ("gobject-introspection" ,gobject-introspection) + ("python2-libvirt" ,python2-libvirt) + ("python2-requests" ,python2-requests) + ("python2-ipaddr" ,python2-ipaddr) + ("python2-pygobject" ,python2-pygobject) + ("python2-libxml2" ,python2-libxml2))) + ;; virt-manager searches for qemu-img or kvm-img in the PATH. + (propagated-inputs + `(("qemu" ,qemu))) + (native-inputs + `(("glib" ,glib "bin") ; glib-compile-schemas. + ("gtk+" ,gtk+ "bin") ; gtk-update-icon-cache + ("perl" ,perl) ; pod2man + ("intltool" ,intltool))) + (home-page "https://virt-manager.org/") + (synopsis "Manage virtual machines") + (description + "The virt-manager application is a desktop user interface for managing +virtual machines through libvirt. It primarily targets KVM VMs, but also +manages Xen and LXC (Linux containers). It presents a summary view of running +domains, their live performance and resource utilization statistics.") + (license gpl2+))) diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 66a2448ceb..dd9be2c6fa 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -39,7 +39,7 @@ #:use-module (gnu packages gawk) #:use-module (gnu packages bash) #:use-module (gnu packages less) - #:use-module (gnu packages qemu) + #:use-module (gnu packages virtualization) #:use-module (gnu packages disk) #:use-module (gnu packages zile) #:use-module (gnu packages linux) diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm index 7c5d48104e..22e4181ab1 100644 --- a/gnu/tests/install.scm +++ b/gnu/tests/install.scm @@ -27,8 +27,8 @@ #:use-module ((gnu build vm) #:select (qemu-command)) #:use-module (gnu packages bootloaders) #:use-module (gnu packages ocr) - #:use-module (gnu packages qemu) #:use-module (gnu packages package-management) + #:use-module (gnu packages virtualization) #:use-module (guix store) #:use-module (guix monads) #:use-module (guix packages) -- cgit 1.4.1 From e4e525096b88390a0de48d5595401423c9486445 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 18 Jul 2017 02:00:17 +0200 Subject: gnu: moka-icon-theme: Update to 5.3.6. * gnu/packages/gnome.scm (moka-icon-theme): Update to 5.3.6. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu/packages/gnome.scm') diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 4221bbc76c..c753b297d1 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -5822,7 +5822,7 @@ like GNOME, Unity, Budgie, Pantheon, XFCE, Mate, etc.") (define-public moka-icon-theme (package (name "moka-icon-theme") - (version "5.3.5") + (version "5.3.6") (source (origin (method url-fetch) (uri (string-append "https://github.com/moka-project" @@ -5831,7 +5831,7 @@ like GNOME, Unity, Budgie, Pantheon, XFCE, Mate, etc.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "062rab0ggmgb3y0d6b3k5d47wsadi28cdnyyr2vqbjhza01dglci")))) + "04axinv79qnngsxkwqzi5j9lc3hn24rjqps5ai8d42pdnfaf0x37")))) (build-system gnu-build-system) (arguments '(#:phases -- cgit 1.4.1 From ec5c24f9a8421172a0cf9133d512014b31815a76 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 18 Jul 2017 22:46:47 +0200 Subject: gnu: totem: Disable automatic plugin installation. * gnu/packages/gnome.scm (totem)[arguments]: Add #:configure-flags. --- gnu/packages/gnome.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'gnu/packages/gnome.scm') diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index c753b297d1..c959d54da6 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3493,7 +3493,11 @@ for application developers.") ("nettle" ,nettle) ("vala" ,vala))) (arguments - `(#:phases + `(;; Disable automatic GStreamer plugin installation via PackageKit and + ;; all that. + #:configure-flags '("--disable-easy-codec-installation") + + #:phases (modify-phases %standard-phases (add-after 'install 'wrap-totem -- cgit 1.4.1 From a388c951ddb9fb0d30a6c8ea24fed035247baecb Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 19 Jul 2017 11:09:04 +0200 Subject: gnu: totem: Do not build static libraries. * gnu/packages/gnome.scm (totem)[arguments]: Pass "--disable-static". This reduces the size of Totem from 11 MiB to 9 MiB. --- gnu/packages/gnome.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'gnu/packages/gnome.scm') diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index c959d54da6..345dc6a748 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3495,7 +3495,11 @@ for application developers.") (arguments `(;; Disable automatic GStreamer plugin installation via PackageKit and ;; all that. - #:configure-flags '("--disable-easy-codec-installation") + #:configure-flags '("--disable-easy-codec-installation" + + ;; Do not build .a files for the plugins, it's + ;; completely useless. This saves 2 MiB. + "--disable-static") #:phases (modify-phases %standard-phases -- cgit 1.4.1 From ab466d79e1d1e9dc42c9f58cbce83a9dda9739f3 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 19 Jul 2017 23:54:52 +0200 Subject: gnu: Add eolie. * gnu/packages/gnome.scm (eolie): New variable. --- gnu/packages/gnome.scm | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'gnu/packages/gnome.scm') diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 345dc6a748..be00fcff54 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3886,6 +3886,67 @@ the same backend as XSANE uses. This means that all existing scanners will work and the interface is well tested.") (license license:gpl3+))) +(define-public eolie + (package + (name "eolie") + (version "0.9.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/gnumdk/eolie/" + "releases/download/" + (version-major+minor version) + "/eolie-" version ".tar.xz")) + (sha256 + (base32 + "1lb3rd2as12vq24fcf9nmlhggf8vka3kli2i92i8iylwi7nq5n2a")))) + (build-system glib-or-gtk-build-system) + (arguments + `(#:modules ((guix build glib-or-gtk-build-system) + (guix build utils) + (ice-9 match)) + #:phases + (modify-phases %standard-phases + (add-after 'wrap 'wrap-more + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + ;; These libraries must be on LD_LIBRARY_PATH. + (libs '("gtkspell3" "webkitgtk" "libsoup" "libsecret" + "atk" "gtk+" "gsettings-desktop-schemas" + "gobject-introspection")) + (path (string-join + (map (lambda (lib) + (string-append (assoc-ref inputs lib) "/lib")) + libs) + ":"))) + (wrap-program (string-append out "/bin/eolie") + `("LD_LIBRARY_PATH" ":" prefix (,path)) + `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))) + `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))) + #t))))) + (native-inputs + `(("intltool" ,intltool) + ("itstool" ,itstool) + ("pkg-config" ,pkg-config))) + (inputs + `(("gobject-introspection" ,gobject-introspection) + ("glib-networking" ,glib-networking) + ("cairo" ,cairo) + ("gtk+" ,gtk+) + ("atk" ,atk) ; propagated by gtk+, but we need it in LD_LIBRARY_PATH + ("python" ,python-wrapper) + ("python-pygobject" ,python-pygobject) + ("python-pycairo" ,python-pycairo) + ("libsecret" ,libsecret) + ("gtkspell3" ,gtkspell3) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("webkitgtk" ,webkitgtk))) + (home-page "https://github.com/gnumdk/eolie/") + (synopsis "Web browser for GNOME") + (description + "Eolie is a new web browser for GNOME. It features Firefox sync support, +a secret password store, an adblocker, and a modern UI.") + (license license:gpl3+))) + (define-public epiphany (package (name "epiphany") -- cgit 1.4.1