2013-02-09 19:09:35 +01:00
|
|
|
|
;;; GNU Guix --- Functional package management for GNU
|
2022-06-19 23:06:51 +02:00
|
|
|
|
;;; Copyright © 2013-2017, 2020-2022 Ludovic Courtès <ludo@gnu.org>
|
2018-03-28 10:05:54 +02:00
|
|
|
|
;;; Copyright © 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
|
2023-02-20 09:39:03 +01:00
|
|
|
|
;;; Copyright © 2016-2021, 2023 Efraim Flashner <efraim@flashner.co.il>
|
2017-10-18 09:37:04 +02:00
|
|
|
|
;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
|
2017-08-13 13:42:59 +02:00
|
|
|
|
;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
|
2017-10-15 22:03:22 +02:00
|
|
|
|
;;; Copyright © 2017 Andy Patterson <ajpatter@uwaterloo.ca>
|
2019-02-09 22:19:47 +01:00
|
|
|
|
;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
|
2021-01-03 07:55:27 +01:00
|
|
|
|
;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
|
2018-03-21 08:20:38 +01:00
|
|
|
|
;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
|
2018-04-22 13:30:08 +02:00
|
|
|
|
;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
|
2018-11-25 17:01:22 +01:00
|
|
|
|
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
|
2019-01-10 17:33:30 +01:00
|
|
|
|
;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
|
2020-02-16 20:21:07 +01:00
|
|
|
|
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
|
2021-04-02 12:49:34 +02:00
|
|
|
|
;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
|
2020-03-03 12:45:33 +01:00
|
|
|
|
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
2022-08-29 20:08:38 +02:00
|
|
|
|
;;; Copyright © 2020, 2021, 2022 Marius Bakke <marius@gnu.org>
|
2022-05-05 19:21:41 +02:00
|
|
|
|
;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
2020-11-23 00:25:15 +01:00
|
|
|
|
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
|
2020-11-28 06:33:13 +01:00
|
|
|
|
;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
|
2022-05-10 01:35:13 +02:00
|
|
|
|
;;; Copyright © 2021, 2022 Pierre Langlois <pierre.langlois@gmx.com>
|
2021-06-01 07:25:53 +02:00
|
|
|
|
;;; Copyright © 2021 Dion Mendel <guix@dm9.info>
|
2021-08-20 14:45:23 +02:00
|
|
|
|
;;; Copyright © 2021 Andrew Whatson <whatson@gmail.com>
|
2021-10-01 23:59:00 +02:00
|
|
|
|
;;; Copyright © 2021 Vincent Legoll <vincent.legoll@gmail.com>
|
|
|
|
|
;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
|
|
|
|
|
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
|
gnu: looking-glass-client: Update to B5.
* gnu/packages/virtualization.scm (looking-glass-client)
[version]: Update to B5.
[source]: Delete snippet and enable recursive fetch.
[inputs]: Add bash-minimal, freetype, gmp, libglvnd, libiberty, libx11,
libxcursor, libxfixes, libxi, libxinerama, libxkbcommon, libxpresent,
libxrandr, libxscrnsaver, openssl, wayland-protocols, zlib.
[phases]: Delete add-missing-include phase and add wrapper phase.
[home-page]: Update URL.
2022-01-01 18:01:33 +01:00
|
|
|
|
;;; Copyright © 2022 Oleg Pykhalov <go.wigust@gmail.com>
|
2022-03-13 09:58:53 +01:00
|
|
|
|
;;; Copyright © 2022 Ekaitz Zarraga <ekaitz@elenq.tech>
|
2022-03-29 12:43:02 +02:00
|
|
|
|
;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
|
2022-04-21 12:48:51 +02:00
|
|
|
|
;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
|
2013-02-09 19:09:35 +01:00
|
|
|
|
;;;
|
|
|
|
|
;;; 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/>.
|
|
|
|
|
|
2017-07-12 14:35:57 +02:00
|
|
|
|
(define-module (gnu packages virtualization)
|
2013-02-16 02:09:10 +01:00
|
|
|
|
#:use-module (gnu packages)
|
2021-07-01 18:48:16 +02:00
|
|
|
|
#:use-module (gnu packages acl)
|
2016-06-07 16:36:34 +02:00
|
|
|
|
#:use-module (gnu packages admin)
|
2019-01-21 10:13:38 +01:00
|
|
|
|
#:use-module (gnu packages assembly)
|
2016-07-29 10:23:55 +02:00
|
|
|
|
#:use-module (gnu packages attr)
|
2016-06-07 16:36:34 +02:00
|
|
|
|
#:use-module (gnu packages autotools)
|
2020-02-16 21:47:10 +01:00
|
|
|
|
#:use-module (gnu packages backup)
|
2020-07-03 00:28:57 +02:00
|
|
|
|
#:use-module (gnu packages base)
|
2021-04-02 12:49:34 +02:00
|
|
|
|
#:use-module (gnu packages bash)
|
2018-03-28 10:05:54 +02:00
|
|
|
|
#:use-module (gnu packages bison)
|
2022-03-13 09:58:53 +01:00
|
|
|
|
#:use-module (gnu packages bootloaders)
|
2021-03-16 19:20:39 +01:00
|
|
|
|
#:use-module (gnu packages build-tools)
|
2016-07-11 23:17:12 +02:00
|
|
|
|
#:use-module (gnu packages check)
|
2021-08-20 14:45:23 +02:00
|
|
|
|
#:use-module (gnu packages cluster)
|
2019-01-21 10:13:38 +01:00
|
|
|
|
#:use-module (gnu packages cmake)
|
2013-02-09 19:09:35 +01:00
|
|
|
|
#:use-module (gnu packages compression)
|
2022-09-11 13:32:24 +02:00
|
|
|
|
#:use-module (gnu packages containers)
|
2019-01-21 10:13:38 +01:00
|
|
|
|
#:use-module (gnu packages cross-base)
|
2022-11-08 20:08:12 +01:00
|
|
|
|
#:use-module (gnu packages cryptsetup)
|
2016-06-07 16:36:34 +02:00
|
|
|
|
#:use-module (gnu packages curl)
|
|
|
|
|
#:use-module (gnu packages cyrus-sasl)
|
2020-06-17 20:23:06 +02:00
|
|
|
|
#:use-module (gnu packages debian)
|
2016-06-07 16:36:34 +02:00
|
|
|
|
#:use-module (gnu packages disk)
|
2017-06-25 17:08:16 +02:00
|
|
|
|
#:use-module (gnu packages dns)
|
2017-10-18 09:37:04 +02:00
|
|
|
|
#:use-module (gnu packages docbook)
|
|
|
|
|
#:use-module (gnu packages documentation)
|
2019-01-21 10:13:38 +01:00
|
|
|
|
#:use-module (gnu packages figlet)
|
|
|
|
|
#:use-module (gnu packages firmware)
|
2018-03-28 10:05:54 +02:00
|
|
|
|
#:use-module (gnu packages flex)
|
2017-12-15 16:08:30 +01:00
|
|
|
|
#:use-module (gnu packages fontutils)
|
2019-02-25 15:55:09 +01:00
|
|
|
|
#:use-module (gnu packages freedesktop)
|
2018-04-26 08:17:05 +02:00
|
|
|
|
#:use-module (gnu packages gettext)
|
gnu: looking-glass-client: Update to B5.
* gnu/packages/virtualization.scm (looking-glass-client)
[version]: Update to B5.
[source]: Delete snippet and enable recursive fetch.
[inputs]: Add bash-minimal, freetype, gmp, libglvnd, libiberty, libx11,
libxcursor, libxfixes, libxi, libxinerama, libxkbcommon, libxpresent,
libxrandr, libxscrnsaver, openssl, wayland-protocols, zlib.
[phases]: Delete add-missing-include phase and add wrapper phase.
[home-page]: Update URL.
2022-01-01 18:01:33 +01:00
|
|
|
|
#:use-module (gnu packages gcc)
|
2016-07-29 10:23:55 +02:00
|
|
|
|
#:use-module (gnu packages gl)
|
|
|
|
|
#:use-module (gnu packages glib)
|
2016-07-11 23:17:12 +02:00
|
|
|
|
#:use-module (gnu packages gnome)
|
2018-06-09 13:01:27 +02:00
|
|
|
|
#:use-module (gnu packages gnupg)
|
2018-04-22 13:30:08 +02:00
|
|
|
|
#:use-module (gnu packages golang)
|
2020-07-03 00:28:57 +02:00
|
|
|
|
#:use-module (gnu packages graphviz)
|
2016-07-11 23:17:12 +02:00
|
|
|
|
#:use-module (gnu packages gtk)
|
2020-07-03 00:28:57 +02:00
|
|
|
|
#:use-module (gnu packages haskell)
|
|
|
|
|
#:use-module (gnu packages haskell-apps)
|
|
|
|
|
#:use-module (gnu packages haskell-check)
|
|
|
|
|
#:use-module (gnu packages haskell-crypto)
|
|
|
|
|
#:use-module (gnu packages haskell-web)
|
|
|
|
|
#:use-module (gnu packages haskell-xyz)
|
gnu: Consolidate libjpeg, libpng, and libtiff into one module.
* gnu/packages/image.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add image.scm and remove libjpeg.scm,
libpng.scm, and libtiff.scm.
* gnu/packages/libjpeg.scm, gnu/packages/libpng.scm, gnu/packages/libtiff.scm:
Delete files.
* gnu/packages/emacs.scm gnu/packages/games.scm, gnu/packages/gd.scm,
gnu/packages/geeqie.scm, gnu/packages/ghostscript.scm,
gnu/packages/gimp.scm, gnu/packages/gnome.scm, gnu/packages/gnunet.scm,
gnu/packages/gnustep.scm, gnu/packages/gnuzilla.scm,
gnu/packages/graphviz.scm, gnu/packages/gtk.scm,
gnu/packages/imagemagick.scm, gnu/packages/inkscape.scm,
gnu/packages/netpbm.scm, gnu/packages/pdf.scm, gnu/packages/plotutils.scm,
gnu/packages/qemu.scm, gnu/packages/qt.scm, gnu/packages/scheme.scm,
gnu/packages/sdl.scm, gnu/packages/slim.scm, gnu/packages/tcl.scm,
gnu/packages/texlive.scm, gnu/packages/video.scm, gnu/packages/xiph.scm,
gnu/packages/xorg.scm: Use (gnu packages image) module.
2014-06-25 14:39:02 +02:00
|
|
|
|
#:use-module (gnu packages image)
|
2019-12-11 13:31:09 +01:00
|
|
|
|
#:use-module (gnu packages libbsd)
|
2015-05-16 00:13:59 +02:00
|
|
|
|
#:use-module (gnu packages libusb)
|
2016-07-29 10:23:55 +02:00
|
|
|
|
#:use-module (gnu packages linux)
|
2020-07-03 00:28:57 +02:00
|
|
|
|
#:use-module (gnu packages m4)
|
gnu: looking-glass-client: Update to B5.
* gnu/packages/virtualization.scm (looking-glass-client)
[version]: Update to B5.
[source]: Delete snippet and enable recursive fetch.
[inputs]: Add bash-minimal, freetype, gmp, libglvnd, libiberty, libx11,
libxcursor, libxfixes, libxi, libxinerama, libxkbcommon, libxpresent,
libxrandr, libxscrnsaver, openssl, wayland-protocols, zlib.
[phases]: Delete add-missing-include phase and add wrapper phase.
[home-page]: Update URL.
2022-01-01 18:01:33 +01:00
|
|
|
|
#:use-module (gnu packages multiprecision)
|
2016-07-29 10:23:55 +02:00
|
|
|
|
#:use-module (gnu packages ncurses)
|
2018-06-22 14:55:10 +02:00
|
|
|
|
#:use-module (gnu packages nettle)
|
2017-10-18 09:37:04 +02:00
|
|
|
|
#:use-module (gnu packages networking)
|
2020-11-28 06:33:13 +01:00
|
|
|
|
#:use-module (gnu packages ninja)
|
2019-07-18 18:28:19 +02:00
|
|
|
|
#:use-module (gnu packages onc-rpc)
|
2018-06-09 13:01:27 +02:00
|
|
|
|
#:use-module (gnu packages package-management)
|
2022-03-10 10:31:44 +01:00
|
|
|
|
#:use-module (gnu packages pciutils)
|
2021-02-22 03:16:39 +01:00
|
|
|
|
#:use-module (gnu packages pcre)
|
2022-03-10 10:31:44 +01:00
|
|
|
|
#:use-module (gnu packages perl)
|
2016-07-29 10:23:55 +02:00
|
|
|
|
#:use-module (gnu packages pkg-config)
|
2016-06-07 16:36:34 +02:00
|
|
|
|
#:use-module (gnu packages polkit)
|
2017-10-18 09:37:04 +02:00
|
|
|
|
#:use-module (gnu packages protobuf)
|
2016-07-29 10:23:55 +02:00
|
|
|
|
#:use-module (gnu packages python)
|
2021-01-14 22:27:39 +01:00
|
|
|
|
#:use-module (gnu packages python-build)
|
2020-11-23 00:25:15 +01:00
|
|
|
|
#:use-module (gnu packages python-check)
|
2020-07-03 00:28:57 +02:00
|
|
|
|
#:use-module (gnu packages python-crypto)
|
gnu: Move more packages from python to python-web.
* gnu/packages/python.scm (python-requests, python2-requests)
(python-requests-2.7, python-oauthlib, python2-oauthlib)
(python-furl, python2-furl, python-wsgi-intercept)
(python-publicsuffix, python2-publicsuffix)
(python-publicsuffix2, python2-publicsuffix2): Move to...
* gnu/packages/python-web.scm: ... here.
* gnu/packages/bioinformatics.scm, gnu/packages/finance.scm:
gnu/packages/maths.scm, gnu/packages/terminals.scm,
gnu/packages/video.scm, gnu/packages/virtualization.scm: Adjust
accordingly.
2017-11-15 14:59:31 +01:00
|
|
|
|
#:use-module (gnu packages python-web)
|
gnu: Separate Python core packages from the rest.
* gnu/packages/python.scm: Move hundreds of package definitions from here...
* gnu/packages/python-xyz.scm: ...to this new module.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/ada.scm,
gnu/packages/admin.scm,
gnu/packages/android.scm,
gnu/packages/audio.scm,
gnu/packages/backup.scm,
gnu/packages/benchmark.scm,
gnu/packages/bioinformatics.scm,
gnu/packages/bittorrent.scm,
gnu/packages/calendar.scm,
gnu/packages/check.scm,
gnu/packages/chemistry.scm,
gnu/packages/cluster.scm,
gnu/packages/compression.scm,
gnu/packages/connman.scm,
gnu/packages/crypto.scm,
gnu/packages/cups.scm,
gnu/packages/databases.scm,
gnu/packages/dav.scm,
gnu/packages/direct-connect.scm,
gnu/packages/disk.scm,
gnu/packages/django.scm,
gnu/packages/dlang.scm,
gnu/packages/docker.scm,
gnu/packages/ebook.scm,
gnu/packages/elf.scm,
gnu/packages/emacs.scm,
gnu/packages/emulators.scm,
gnu/packages/engineering.scm,
gnu/packages/enlightenment.scm,
gnu/packages/finance.scm,
gnu/packages/fltk.scm,
gnu/packages/fontutils.scm,
gnu/packages/freedesktop.scm,
gnu/packages/game-development.scm,
gnu/packages/games.scm,
gnu/packages/geo.scm,
gnu/packages/gl.scm,
gnu/packages/glib.scm,
gnu/packages/gnome.scm,
gnu/packages/gnupg.scm,
gnu/packages/gnuzilla.scm,
gnu/packages/graph.scm,
gnu/packages/graphics.scm,
gnu/packages/graphviz.scm,
gnu/packages/gtk.scm,
gnu/packages/ham-radio.scm,
gnu/packages/image-processing.scm,
gnu/packages/image-viewers.scm,
gnu/packages/image.scm,
gnu/packages/irc.scm,
gnu/packages/jrnl.scm,
gnu/packages/julia.scm,
gnu/packages/kde-frameworks.scm,
gnu/packages/key-mon.scm,
gnu/packages/libffi.scm,
gnu/packages/libreoffice.scm,
gnu/packages/libusb.scm,
gnu/packages/lirc.scm,
gnu/packages/logging.scm,
gnu/packages/machine-learning.scm,
gnu/packages/mail.scm,
gnu/packages/mate.scm,
gnu/packages/maths.scm,
gnu/packages/medical.scm,
gnu/packages/messaging.scm,
gnu/packages/monitoring.scm,
gnu/packages/mp3.scm,
gnu/packages/mpd.scm,
gnu/packages/music.scm,
gnu/packages/networking.scm,
gnu/packages/nutrition.scm,
gnu/packages/openldap.scm,
gnu/packages/openstack.scm,
gnu/packages/package-management.scm,
gnu/packages/password-utils.scm,
gnu/packages/patchutils.scm,
gnu/packages/pdf.scm,
gnu/packages/photo.scm,
gnu/packages/polkit.scm,
gnu/packages/protobuf.scm,
gnu/packages/python-crypto.scm,
gnu/packages/python-web.scm,
gnu/packages/qt.scm,
gnu/packages/rdf.scm,
gnu/packages/ruby.scm,
gnu/packages/search.scm,
gnu/packages/selinux.scm,
gnu/packages/serialization.scm,
gnu/packages/shells.scm,
gnu/packages/simulation.scm,
gnu/packages/ssh.scm,
gnu/packages/statistics.scm,
gnu/packages/storage.scm,
gnu/packages/sync.scm,
gnu/packages/terminals.scm,
gnu/packages/textutils.scm,
gnu/packages/time.scm,
gnu/packages/tls.scm,
gnu/packages/tor.scm,
gnu/packages/tryton.scm,
gnu/packages/version-control.scm,
gnu/packages/video.scm,
gnu/packages/virtualization.scm,
gnu/packages/vpn.scm,
gnu/packages/web-browsers.scm,
gnu/packages/web.scm,
gnu/packages/wicd.scm,
gnu/packages/xdisorg.scm,
gnu/packages/xorg.scm: Update module references.
2019-01-15 14:21:30 +01:00
|
|
|
|
#:use-module (gnu packages python-xyz)
|
2017-12-08 16:51:10 +01:00
|
|
|
|
#:use-module (gnu packages pulseaudio)
|
2021-04-02 12:49:34 +02:00
|
|
|
|
#:use-module (gnu packages readline)
|
2021-08-20 14:45:23 +02:00
|
|
|
|
#:use-module (gnu packages rsync)
|
2017-07-13 13:30:02 +02:00
|
|
|
|
#:use-module (gnu packages selinux)
|
2016-07-29 10:23:55 +02:00
|
|
|
|
#:use-module (gnu packages sdl)
|
2020-01-23 21:18:27 +01:00
|
|
|
|
#:use-module (gnu packages sphinx)
|
2016-07-29 09:16:34 +02:00
|
|
|
|
#:use-module (gnu packages spice)
|
2020-07-03 00:28:57 +02:00
|
|
|
|
#:use-module (gnu packages ssh)
|
2016-07-29 10:23:55 +02:00
|
|
|
|
#:use-module (gnu packages texinfo)
|
2018-06-22 14:55:10 +02:00
|
|
|
|
#:use-module (gnu packages textutils)
|
2016-06-07 16:36:34 +02:00
|
|
|
|
#:use-module (gnu packages tls)
|
|
|
|
|
#:use-module (gnu packages web)
|
2019-01-21 10:13:38 +01:00
|
|
|
|
#:use-module (gnu packages wget)
|
2016-07-29 10:23:55 +02:00
|
|
|
|
#:use-module (gnu packages xdisorg)
|
2016-06-07 16:36:34 +02:00
|
|
|
|
#:use-module (gnu packages xml)
|
2018-12-21 15:20:35 +01:00
|
|
|
|
#:use-module (gnu packages xorg)
|
2018-12-16 22:14:11 +01:00
|
|
|
|
#:use-module (guix build-system cmake)
|
2016-07-29 10:23:55 +02:00
|
|
|
|
#:use-module (guix build-system gnu)
|
2018-04-22 13:30:08 +02:00
|
|
|
|
#:use-module (guix build-system go)
|
2020-01-01 16:10:12 +01:00
|
|
|
|
#:use-module (guix build-system meson)
|
2016-07-11 23:18:15 +02:00
|
|
|
|
#:use-module (guix build-system python)
|
2020-02-16 21:47:11 +01:00
|
|
|
|
#:use-module (guix build-system trivial)
|
2016-07-29 10:23:55 +02:00
|
|
|
|
#:use-module (guix download)
|
2018-06-09 13:01:27 +02:00
|
|
|
|
#:use-module (guix git-download)
|
2022-01-16 01:00:01 +01:00
|
|
|
|
#:use-module (guix gexp)
|
2018-07-24 16:43:54 +02:00
|
|
|
|
#:use-module ((guix licenses) #:prefix license:)
|
2016-07-29 10:23:55 +02:00
|
|
|
|
#:use-module (guix packages)
|
|
|
|
|
#:use-module (guix utils)
|
2020-05-03 10:00:44 +02:00
|
|
|
|
#:use-module (srfi srfi-1)
|
2021-02-22 03:16:39 +01:00
|
|
|
|
#:use-module (srfi srfi-26)
|
2020-05-03 10:00:44 +02:00
|
|
|
|
#:use-module (ice-9 match))
|
2013-02-09 19:09:35 +01:00
|
|
|
|
|
2020-05-19 15:55:08 +02:00
|
|
|
|
(define (qemu-patch commit file-name sha256-bv)
|
2015-10-19 17:55:18 +02:00
|
|
|
|
"Return an origin for COMMIT."
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append
|
|
|
|
|
"http://git.qemu.org/?p=qemu.git;a=commitdiff_plain;h="
|
|
|
|
|
commit))
|
2020-05-19 15:55:08 +02:00
|
|
|
|
(hash (content-hash sha256-bv sha256))
|
2015-10-19 17:55:18 +02:00
|
|
|
|
(file-name file-name)))
|
|
|
|
|
|
2015-11-21 00:34:32 +01:00
|
|
|
|
(define-public qemu
|
2013-02-09 19:09:35 +01:00
|
|
|
|
(package
|
2015-11-21 00:34:32 +01:00
|
|
|
|
(name "qemu")
|
2022-12-17 01:46:23 +01:00
|
|
|
|
(version "7.2.0")
|
2021-02-20 19:27:58 +01:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "https://download.qemu.org/qemu-"
|
|
|
|
|
version ".tar.xz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-12-17 01:46:23 +01:00
|
|
|
|
"0mr1xd78bgp1l61281sdx0338ji0aa68j2p9994sskblhwkcwjav"))
|
2022-01-11 17:18:21 +01:00
|
|
|
|
(patches (search-patches "qemu-build-info-manual.patch"
|
2022-09-26 17:19:50 +02:00
|
|
|
|
"qemu-disable-aarch64-migration-test.patch"
|
2021-10-23 12:03:18 +02:00
|
|
|
|
"qemu-fix-agent-paths.patch"))
|
2021-02-20 19:27:58 +01:00
|
|
|
|
(modules '((guix build utils)))
|
|
|
|
|
(snippet
|
|
|
|
|
'(begin
|
2022-12-17 23:26:09 +01:00
|
|
|
|
;; TODO: Scrub all firmwares from this directory!
|
|
|
|
|
(with-directory-excursion "pc-bios"
|
|
|
|
|
;; Delete firmwares provided by SeaBIOS.
|
2022-12-22 13:25:50 +01:00
|
|
|
|
(for-each delete-file (find-files "." "^(bios|vgabios).*\\.bin$"))
|
2022-12-22 16:00:56 +01:00
|
|
|
|
;; Delete SGABIOS.
|
|
|
|
|
(delete-file "sgabios.bin")
|
2022-12-25 12:34:31 +01:00
|
|
|
|
;; Delete ppc64 OpenBIOS. TODO: Remove sparc32 and sparc64 too
|
|
|
|
|
;; once they are supported in Guix.
|
|
|
|
|
(delete-file "openbios-ppc")
|
2022-12-25 13:44:17 +01:00
|
|
|
|
;; Delete riscv64 OpenSBI. TODO: Remove riscv32 when supported
|
|
|
|
|
;; in Guix.
|
|
|
|
|
(delete-file "opensbi-riscv64-generic-fw_dynamic.bin")
|
2022-12-22 13:25:50 +01:00
|
|
|
|
;; Delete iPXE firmwares.
|
|
|
|
|
(for-each delete-file (find-files "." "^(efi|pxe)-.*\\.rom$")))
|
2022-09-11 13:32:24 +02:00
|
|
|
|
;; Delete bundled code that we provide externally.
|
|
|
|
|
(for-each delete-file-recursively
|
2022-12-22 13:25:50 +01:00
|
|
|
|
'("dtc" "meson"
|
|
|
|
|
"roms/ipxe"
|
2022-12-25 12:34:31 +01:00
|
|
|
|
"roms/openbios"
|
2022-12-25 13:44:17 +01:00
|
|
|
|
"roms/opensbi"
|
2022-12-22 16:00:56 +01:00
|
|
|
|
"roms/seabios"
|
|
|
|
|
"roms/sgabios"))))))
|
2020-11-28 06:33:13 +01:00
|
|
|
|
(outputs '("out" "static" "doc")) ;5.3 MiB of HTML docs
|
2021-02-20 19:27:58 +01:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
2022-09-09 20:18:59 +02:00
|
|
|
|
(list
|
|
|
|
|
;; FIXME: Disable tests on i686 to work around
|
|
|
|
|
;; <https://bugs.gnu.org/40527>.
|
|
|
|
|
#:tests? (or (%current-target-system)
|
|
|
|
|
(not (string=? "i686-linux" (%current-system))))
|
|
|
|
|
#:configure-flags
|
|
|
|
|
#~(let ((gcc (search-input-file %build-inputs "/bin/gcc"))
|
2022-12-17 23:26:09 +01:00
|
|
|
|
(meson (search-input-file %build-inputs "bin/meson"))
|
2022-12-25 12:34:31 +01:00
|
|
|
|
(openbios (search-input-file %build-inputs
|
|
|
|
|
"share/qemu/openbios-ppc"))
|
2022-12-25 13:44:17 +01:00
|
|
|
|
(opensbi (search-input-file
|
|
|
|
|
%build-inputs
|
|
|
|
|
"share/qemu/opensbi-riscv64-generic-fw_dynamic.bin"))
|
2022-12-17 23:26:09 +01:00
|
|
|
|
(seabios (search-input-file %build-inputs
|
2022-12-22 13:50:30 +01:00
|
|
|
|
"share/qemu/bios.bin"))
|
2022-12-22 16:00:56 +01:00
|
|
|
|
(sgabios (search-input-file %build-inputs
|
|
|
|
|
"/share/qemu/sgabios.bin"))
|
2022-12-22 13:25:50 +01:00
|
|
|
|
(ipxe (search-input-file %build-inputs
|
2022-12-22 13:50:30 +01:00
|
|
|
|
"share/qemu/pxe-virtio.rom"))
|
2022-09-09 20:18:59 +02:00
|
|
|
|
(out #$output))
|
|
|
|
|
(list (string-append "--cc=" gcc)
|
|
|
|
|
;; Some architectures insist on using HOST_CC.
|
|
|
|
|
(string-append "--host-cc=" gcc)
|
2022-12-17 23:26:09 +01:00
|
|
|
|
(string-append "--meson=" meson)
|
2022-09-09 20:18:59 +02:00
|
|
|
|
(string-append "--prefix=" out)
|
2022-12-17 23:26:09 +01:00
|
|
|
|
|
2022-09-09 20:18:59 +02:00
|
|
|
|
"--sysconfdir=/etc"
|
2022-09-11 13:32:24 +02:00
|
|
|
|
"--enable-fdt=system"
|
2022-12-17 23:26:09 +01:00
|
|
|
|
(string-append "--firmwarepath=" out "/share/qemu:"
|
2022-12-22 13:25:50 +01:00
|
|
|
|
(dirname seabios) ":"
|
2022-12-22 16:00:56 +01:00
|
|
|
|
(dirname ipxe) ":"
|
2022-12-25 12:34:31 +01:00
|
|
|
|
(dirname openbios) ":"
|
2022-12-25 13:44:17 +01:00
|
|
|
|
(dirname opensbi) ":"
|
2022-12-22 16:00:56 +01:00
|
|
|
|
(dirname sgabios))
|
2022-09-09 20:18:59 +02:00
|
|
|
|
(string-append "--smbd=" out "/libexec/samba-wrapper")
|
|
|
|
|
"--disable-debug-info" ;for space considerations
|
|
|
|
|
;; The binaries need to be linked against -lrt.
|
|
|
|
|
(string-append "--extra-ldflags=-lrt")))
|
|
|
|
|
;; Make build and test output verbose to facilitate investigation upon failure.
|
|
|
|
|
#:make-flags #~'("V=1")
|
|
|
|
|
#:modules `((srfi srfi-1)
|
2021-02-22 03:16:39 +01:00
|
|
|
|
(srfi srfi-26)
|
|
|
|
|
(ice-9 ftw)
|
2020-03-03 12:45:33 +01:00
|
|
|
|
(ice-9 match)
|
|
|
|
|
,@%gnu-build-system-modules)
|
2022-09-09 20:18:59 +02:00
|
|
|
|
#:phases
|
|
|
|
|
#~(modify-phases %standard-phases
|
2022-12-17 23:26:09 +01:00
|
|
|
|
;; Since we removed the bundled firmwares above, many tests
|
|
|
|
|
;; can't work. Re-add them here.
|
|
|
|
|
(add-after 'unpack 'replace-firmwares
|
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
|
|
|
(let* ((seabios (dirname (search-input-file
|
2022-12-22 13:50:30 +01:00
|
|
|
|
inputs "share/qemu/bios.bin")))
|
2022-12-17 23:26:09 +01:00
|
|
|
|
(seabios-firmwares (find-files seabios "\\.bin$"))
|
2022-12-22 16:00:56 +01:00
|
|
|
|
(sgabios (search-input-file inputs "share/qemu/sgabios.bin"))
|
2022-12-22 13:25:50 +01:00
|
|
|
|
(ipxe (dirname (search-input-file
|
2022-12-22 13:50:30 +01:00
|
|
|
|
inputs "share/qemu/pxe-virtio.rom")))
|
2022-12-22 13:25:50 +01:00
|
|
|
|
(ipxe-firmwares (find-files ipxe "\\.rom$"))
|
2022-12-25 12:34:31 +01:00
|
|
|
|
(openbios (search-input-file
|
|
|
|
|
inputs "share/qemu/openbios-ppc"))
|
2022-12-25 13:44:17 +01:00
|
|
|
|
(opensbi-riscv64
|
|
|
|
|
(search-input-file
|
|
|
|
|
inputs
|
|
|
|
|
"share/qemu/opensbi-riscv64-generic-fw_dynamic.bin"))
|
2022-12-17 23:26:09 +01:00
|
|
|
|
(allowed-differences
|
|
|
|
|
;; Ignore minor differences (addresses etc) in the firmware
|
|
|
|
|
;; data tables compared to what the test suite expects.
|
|
|
|
|
'("tests/data/acpi/pc/SSDT.dimmpxm"
|
|
|
|
|
"tests/data/acpi/pc/DSDT.dimmpxm"
|
|
|
|
|
"tests/data/acpi/pc/ERST.acpierst"
|
|
|
|
|
"tests/data/acpi/q35/ERST.acpierst"
|
|
|
|
|
"tests/data/acpi/q35/DSDT.cxl"))
|
|
|
|
|
(allowed-differences-whitelist
|
|
|
|
|
(open-file "tests/qtest/bios-tables-test-allowed-diff.h"
|
|
|
|
|
"a")))
|
|
|
|
|
(with-directory-excursion "pc-bios"
|
|
|
|
|
(for-each (lambda (file)
|
|
|
|
|
(symlink file (basename file)))
|
2022-12-22 16:00:56 +01:00
|
|
|
|
(append seabios-firmwares ipxe-firmwares
|
2022-12-25 13:44:17 +01:00
|
|
|
|
(list openbios opensbi-riscv64 sgabios))))
|
2022-12-17 23:26:09 +01:00
|
|
|
|
(for-each (lambda (file)
|
|
|
|
|
(format allowed-differences-whitelist
|
|
|
|
|
"\"~a\",~%" file))
|
|
|
|
|
allowed-differences)
|
|
|
|
|
(close-port allowed-differences-whitelist))))
|
2022-09-09 20:18:59 +02:00
|
|
|
|
(add-after 'unpack 'extend-test-time-outs
|
|
|
|
|
(lambda _
|
|
|
|
|
;; These tests can time out on heavily-loaded and/or slow storage.
|
|
|
|
|
(substitute* (cons* "tests/qemu-iotests/common.qemu"
|
|
|
|
|
(find-files "tests/qemu-iotests" "^[0-9]+$"))
|
|
|
|
|
(("QEMU_COMM_TIMEOUT=[0-9]+" match)
|
|
|
|
|
(string-append match "9")))))
|
|
|
|
|
(add-after 'unpack 'disable-unusable-tests
|
|
|
|
|
(lambda _
|
|
|
|
|
(substitute* "tests/unit/meson.build"
|
|
|
|
|
;; Comment out the test-qga test, which needs /sys and
|
|
|
|
|
;; fails within the build environment.
|
|
|
|
|
(("tests.*test-qga.*$" all)
|
|
|
|
|
(string-append "# " all))
|
|
|
|
|
;; Comment out the test-char test, which needs networking and
|
|
|
|
|
;; fails within the build environment.
|
|
|
|
|
((".*'test-char':.*" all)
|
2023-02-20 09:39:03 +01:00
|
|
|
|
(string-append "# " all)))
|
|
|
|
|
(substitute* "tests/qtest/meson.build"
|
|
|
|
|
;; These tests fail to get the expected number of tests
|
|
|
|
|
;; on arm platforms.
|
|
|
|
|
(("'arm-cpu-features',") ""))))
|
2022-09-09 20:18:59 +02:00
|
|
|
|
#$@(if (target-riscv64?)
|
|
|
|
|
'((add-after 'unpack 'disable-some-tests
|
|
|
|
|
(lambda _
|
|
|
|
|
;; qemu.qmp.QMPConnectError:
|
|
|
|
|
;; Unexpected empty reply from server
|
|
|
|
|
(delete-file "tests/qemu-iotests/040")
|
|
|
|
|
(delete-file "tests/qemu-iotests/041")
|
|
|
|
|
(delete-file "tests/qemu-iotests/256")
|
2021-08-23 11:29:36 +02:00
|
|
|
|
|
2022-09-09 20:18:59 +02:00
|
|
|
|
;; No 'PCI' bus found for device 'virtio-scsi-pci'
|
|
|
|
|
(delete-file "tests/qemu-iotests/127")
|
|
|
|
|
(delete-file "tests/qemu-iotests/267"))))
|
|
|
|
|
'())
|
|
|
|
|
(add-after 'patch-source-shebangs 'patch-embedded-shebangs
|
|
|
|
|
(lambda* (#:key native-inputs inputs #:allow-other-keys)
|
|
|
|
|
;; Ensure the executables created by these source files reference
|
|
|
|
|
;; /bin/sh from the store so they work inside the build container.
|
|
|
|
|
(substitute* '("block/cloop.c" "migration/exec.c"
|
|
|
|
|
"net/tap.c" "tests/qtest/libqtest.c"
|
|
|
|
|
"tests/qtest/vhost-user-blk-test.c")
|
|
|
|
|
(("/bin/sh") (search-input-file inputs "/bin/sh")))
|
|
|
|
|
(substitute* "tests/qemu-iotests/testenv.py"
|
|
|
|
|
(("#!/usr/bin/env python3")
|
|
|
|
|
(string-append "#!" (search-input-file (or native-inputs inputs)
|
|
|
|
|
"/bin/python3"))))))
|
|
|
|
|
(add-before 'configure 'fix-optionrom-makefile
|
|
|
|
|
(lambda _
|
|
|
|
|
;; Work around the inability of the rules defined in this
|
|
|
|
|
;; Makefile to locate the firmware files (e.g.: No rule to make
|
|
|
|
|
;; target 'multiboot.bin') by extending the VPATH.
|
|
|
|
|
(substitute* "pc-bios/optionrom/Makefile"
|
|
|
|
|
(("^VPATH = \\$\\(SRC_DIR\\)")
|
|
|
|
|
"VPATH = $(SRC_DIR):$(TOPSRC_DIR)/pc-bios"))))
|
|
|
|
|
;; XXX ./configure is being re-run at beginning of build phase...
|
|
|
|
|
(replace 'configure
|
|
|
|
|
(lambda* (#:key inputs configure-flags #:allow-other-keys)
|
|
|
|
|
;; The `configure' script doesn't understand some of the
|
|
|
|
|
;; GNU options. Thus, add a new phase that's compatible.
|
|
|
|
|
(setenv "SHELL" (which "bash"))
|
|
|
|
|
;; Ensure config.status gets the correct shebang off the bat.
|
|
|
|
|
;; The build system gets confused if we change it later and
|
|
|
|
|
;; attempts to re-run the whole configuration, and fails.
|
|
|
|
|
(substitute* "configure"
|
|
|
|
|
(("#!/bin/sh")
|
|
|
|
|
(string-append "#!" (which "sh"))))
|
|
|
|
|
(mkdir-p "b/qemu")
|
|
|
|
|
(chdir "b/qemu")
|
|
|
|
|
(apply invoke "../../configure" configure-flags)))
|
2022-12-17 23:26:09 +01:00
|
|
|
|
|
2022-09-09 20:18:59 +02:00
|
|
|
|
;; Configure, build and install QEMU user-emulation static binaries.
|
|
|
|
|
(add-after 'configure 'configure-user-static
|
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
|
(let* ((static (assoc-ref outputs "static"))
|
|
|
|
|
(gcc (search-input-file inputs "/bin/gcc"))
|
|
|
|
|
;; This is the common set of configure flags; it is
|
|
|
|
|
;; duplicated here to isolate this phase from manipulations
|
|
|
|
|
;; to the #:configure-flags build argument, as done in
|
|
|
|
|
;; derived packages such as qemu-minimal.
|
|
|
|
|
(configure-flags (list (string-append "--cc=" gcc)
|
|
|
|
|
(string-append "--host-cc=" gcc)
|
|
|
|
|
"--sysconfdir=/etc"
|
|
|
|
|
"--disable-debug-info")))
|
|
|
|
|
(mkdir-p "../user-static")
|
|
|
|
|
(with-directory-excursion "../user-static"
|
|
|
|
|
(apply invoke "../../configure"
|
|
|
|
|
"--static"
|
|
|
|
|
"--disable-docs" ;already built
|
|
|
|
|
"--disable-system"
|
|
|
|
|
"--enable-linux-user"
|
|
|
|
|
(string-append "--prefix=" static)
|
|
|
|
|
configure-flags)))))
|
|
|
|
|
(add-after 'build 'build-user-static
|
|
|
|
|
(lambda args
|
|
|
|
|
(with-directory-excursion "../user-static"
|
|
|
|
|
(apply (assoc-ref %standard-phases 'build) args))))
|
|
|
|
|
(add-after 'install 'install-user-static
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let* ((static (assoc-ref outputs "static"))
|
|
|
|
|
(bin (string-append static "/bin")))
|
|
|
|
|
(with-directory-excursion "../user-static"
|
|
|
|
|
(for-each (cut install-file <> bin)
|
|
|
|
|
(append-map (cut find-files <> "^qemu-" #:stat stat)
|
|
|
|
|
(scandir "."
|
|
|
|
|
(cut string-suffix?
|
|
|
|
|
"-linux-user" <>))))))))
|
2022-12-17 23:26:09 +01:00
|
|
|
|
|
|
|
|
|
(add-after 'install 'delete-firmwares
|
|
|
|
|
(lambda _
|
|
|
|
|
;; Delete firmares that are accessible on --firmwarepath.
|
|
|
|
|
;; For some reason tests fail if we simply remove them from
|
|
|
|
|
;; pc-bios/meson.build, hence this roundabout way.
|
|
|
|
|
(with-directory-excursion (string-append #$output "/share/qemu")
|
|
|
|
|
(for-each delete-file
|
2022-12-22 13:25:50 +01:00
|
|
|
|
(append
|
2022-12-25 13:44:17 +01:00
|
|
|
|
'("openbios-ppc"
|
|
|
|
|
"opensbi-riscv64-generic-fw_dynamic.bin"
|
|
|
|
|
"sgabios.bin")
|
2022-12-22 13:25:50 +01:00
|
|
|
|
(find-files "." "^(vga)?bios(-[a-z0-9-]+)?\\.bin$")
|
|
|
|
|
(find-files "." "^(efi|pxe)-.*\\.rom$"))))))
|
2022-09-09 20:18:59 +02:00
|
|
|
|
;; Create a wrapper for Samba. This allows QEMU to use Samba without
|
|
|
|
|
;; pulling it in as an input. Note that you need to explicitly install
|
|
|
|
|
;; Samba in your Guix profile for Samba support.
|
|
|
|
|
(add-after 'install 'create-samba-wrapper
|
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
|
|
|
(let ((libexec (string-append #$output "/libexec")))
|
|
|
|
|
(call-with-output-file "samba-wrapper"
|
|
|
|
|
(lambda (port)
|
|
|
|
|
(format port "#!/bin/sh
|
2017-12-28 23:26:42 +01:00
|
|
|
|
exec smbd $@")))
|
2022-09-09 20:18:59 +02:00
|
|
|
|
(chmod "samba-wrapper" #o755)
|
|
|
|
|
(install-file "samba-wrapper" libexec))))
|
|
|
|
|
(add-after 'install 'move-html-doc
|
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out #$output)
|
|
|
|
|
(doc #$output:doc)
|
|
|
|
|
(qemu-doc (string-append doc "/share/doc/qemu-"
|
|
|
|
|
#$(package-version this-package))))
|
|
|
|
|
(mkdir-p qemu-doc)
|
|
|
|
|
(rename-file (string-append out "/share/doc/qemu")
|
|
|
|
|
(string-append qemu-doc "/html"))))))))
|
2021-12-14 22:42:35 +01:00
|
|
|
|
(inputs
|
|
|
|
|
(list alsa-lib
|
|
|
|
|
bash-minimal
|
2022-09-11 13:32:24 +02:00
|
|
|
|
dtc
|
2021-12-14 22:42:35 +01:00
|
|
|
|
glib
|
|
|
|
|
gtk+
|
2022-12-22 13:25:50 +01:00
|
|
|
|
ipxe-qemu
|
2021-12-14 22:42:35 +01:00
|
|
|
|
libaio
|
|
|
|
|
libcacard ;smartcard support
|
|
|
|
|
attr libcap-ng ;VirtFS support
|
|
|
|
|
libdrm
|
|
|
|
|
libepoxy
|
|
|
|
|
libjpeg-turbo
|
|
|
|
|
libpng
|
|
|
|
|
libseccomp
|
2022-09-11 13:32:24 +02:00
|
|
|
|
libslirp
|
2022-02-27 01:00:00 +01:00
|
|
|
|
liburing
|
2021-12-14 22:42:35 +01:00
|
|
|
|
libusb ;USB pass-through support
|
|
|
|
|
mesa
|
|
|
|
|
ncurses
|
2022-12-25 12:34:31 +01:00
|
|
|
|
openbios-qemu-ppc
|
2022-12-25 13:44:17 +01:00
|
|
|
|
opensbi-qemu
|
2021-12-14 22:42:35 +01:00
|
|
|
|
;; ("pciutils" ,pciutils)
|
|
|
|
|
pixman
|
|
|
|
|
pulseaudio
|
|
|
|
|
sdl2
|
2022-12-20 17:00:15 +01:00
|
|
|
|
seabios-qemu
|
2022-12-22 16:00:56 +01:00
|
|
|
|
sgabios
|
2021-12-14 22:42:35 +01:00
|
|
|
|
spice
|
|
|
|
|
usbredir
|
|
|
|
|
util-linux
|
|
|
|
|
vde2
|
|
|
|
|
virglrenderer
|
2022-02-20 01:00:02 +01:00
|
|
|
|
|
|
|
|
|
;; Formats to support for .qcow2 (and possibly other) compression.
|
|
|
|
|
zlib
|
|
|
|
|
`(,zstd "lib")))
|
2021-12-14 22:42:35 +01:00
|
|
|
|
(native-inputs
|
2022-12-17 23:26:09 +01:00
|
|
|
|
;; Note: acpica is here only to pretty-print firmware differences with IASL
|
|
|
|
|
;; (see the replace-firmwares phase above).
|
|
|
|
|
(list acpica
|
2022-12-20 16:10:17 +01:00
|
|
|
|
bison
|
2022-12-17 23:26:09 +01:00
|
|
|
|
flex
|
|
|
|
|
gettext-minimal
|
|
|
|
|
`(,glib "bin") ;gtester, etc.
|
2022-12-17 01:46:23 +01:00
|
|
|
|
meson-0.63
|
2021-12-14 22:42:35 +01:00
|
|
|
|
ninja
|
2022-12-17 23:26:09 +01:00
|
|
|
|
perl
|
2021-12-14 22:42:35 +01:00
|
|
|
|
pkg-config
|
|
|
|
|
python-wrapper
|
|
|
|
|
python-sphinx
|
|
|
|
|
python-sphinx-rtd-theme
|
|
|
|
|
texinfo
|
|
|
|
|
;; The following static libraries are required to build
|
|
|
|
|
;; the static output of QEMU.
|
|
|
|
|
`(,glib "static")
|
|
|
|
|
`(,pcre "static")
|
|
|
|
|
`(,zlib "static")))
|
2017-12-28 23:28:06 +01:00
|
|
|
|
(home-page "https://www.qemu.org")
|
2015-11-21 00:34:32 +01:00
|
|
|
|
(synopsis "Machine emulator and virtualizer")
|
2013-02-10 18:28:00 +01:00
|
|
|
|
(description
|
2013-08-16 23:55:51 +02:00
|
|
|
|
"QEMU is a generic machine emulator and virtualizer.
|
2013-02-10 18:28:00 +01:00
|
|
|
|
|
|
|
|
|
When used as a machine emulator, QEMU can run OSes and programs made for one
|
2013-08-16 23:55:51 +02:00
|
|
|
|
machine (e.g. an ARM board) on a different machine---e.g., your own PC. By
|
|
|
|
|
using dynamic translation, it achieves very good performance.
|
2013-02-10 18:28:00 +01:00
|
|
|
|
|
|
|
|
|
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,
|
2013-08-16 23:55:51 +02:00
|
|
|
|
server and embedded PowerPC, and S390 guests.")
|
|
|
|
|
|
|
|
|
|
;; Many files are GPLv2+, but some are GPLv2-only---e.g., `memory.c'.
|
2018-07-24 16:43:54 +02:00
|
|
|
|
(license license:gpl2)
|
2014-10-28 01:14:34 +01:00
|
|
|
|
|
|
|
|
|
;; Several tests fail on MIPS; see <http://hydra.gnu.org/build/117914>.
|
2020-03-11 00:33:24 +01:00
|
|
|
|
(supported-systems (fold delete %supported-systems
|
|
|
|
|
'("mips64el-linux" "i586-gnu")))))
|
2013-08-16 23:55:51 +02:00
|
|
|
|
|
2015-11-21 00:34:32 +01:00
|
|
|
|
(define-public qemu-minimal
|
2020-05-03 10:00:44 +02:00
|
|
|
|
;; QEMU without GUI support, only supporting the host's architecture
|
2021-02-22 03:16:39 +01:00
|
|
|
|
(package
|
|
|
|
|
(inherit qemu)
|
2015-11-21 00:34:32 +01:00
|
|
|
|
(name "qemu-minimal")
|
2021-08-22 21:24:06 +02:00
|
|
|
|
(outputs '("out" "doc"))
|
2020-05-03 10:00:44 +02:00
|
|
|
|
(synopsis
|
|
|
|
|
"Machine emulator and virtualizer (without GUI) for the host architecture")
|
2015-11-21 00:34:32 +01:00
|
|
|
|
(arguments
|
2017-10-15 22:03:22 +02:00
|
|
|
|
(substitute-keyword-arguments (package-arguments qemu)
|
2022-09-09 20:18:59 +02:00
|
|
|
|
((#:configure-flags configure-flags #~'())
|
2020-05-03 10:00:44 +02:00
|
|
|
|
;; Restrict to the host's architecture.
|
2021-02-22 03:16:39 +01:00
|
|
|
|
(let* ((system (or (%current-target-system)
|
|
|
|
|
(%current-system)))
|
|
|
|
|
(target-list-arg
|
|
|
|
|
(match system
|
|
|
|
|
((? (cut string-prefix? "i686" <>))
|
|
|
|
|
"--target-list=i386-softmmu")
|
|
|
|
|
((? (cut string-prefix? "x86_64" <>))
|
|
|
|
|
"--target-list=i386-softmmu,x86_64-softmmu")
|
|
|
|
|
((? (cut string-prefix? "mips64" <>))
|
|
|
|
|
(string-append "--target-list=mips-softmmu,mipsel-softmmu,"
|
|
|
|
|
"mips64-softmmu,mips64el-softmmu"))
|
|
|
|
|
((? (cut string-prefix? "mips" <>))
|
|
|
|
|
"--target-list=mips-softmmu,mipsel-softmmu")
|
|
|
|
|
((? (cut string-prefix? "aarch64" <>))
|
|
|
|
|
"--target-list=arm-softmmu,aarch64-softmmu")
|
|
|
|
|
((? (cut string-prefix? "arm" <>))
|
|
|
|
|
"--target-list=arm-softmmu")
|
|
|
|
|
((? (cut string-prefix? "alpha" <>))
|
|
|
|
|
"--target-list=alpha-softmmu")
|
|
|
|
|
((? (cut string-prefix? "powerpc64" <>))
|
|
|
|
|
"--target-list=ppc-softmmu,ppc64-softmmu")
|
|
|
|
|
((? (cut string-prefix? "powerpc" <>))
|
|
|
|
|
"--target-list=ppc-softmmu")
|
|
|
|
|
((? (cut string-prefix? "s390" <>))
|
|
|
|
|
"--target-list=s390x-softmmu")
|
|
|
|
|
((? (cut string-prefix? "riscv" <>))
|
|
|
|
|
"--target-list=riscv32-softmmu,riscv64-softmmu")
|
|
|
|
|
(else ; An empty list actually builds all the targets.
|
|
|
|
|
'()))))
|
2022-09-09 20:18:59 +02:00
|
|
|
|
#~(cons #$target-list-arg #$configure-flags)))
|
2021-08-22 21:24:06 +02:00
|
|
|
|
((#:phases phases)
|
2022-09-09 20:18:59 +02:00
|
|
|
|
#~(modify-phases #$phases
|
|
|
|
|
(delete 'configure-user-static)
|
|
|
|
|
(delete 'build-user-static)
|
|
|
|
|
(delete 'install-user-static)))))
|
2015-11-21 00:34:32 +01:00
|
|
|
|
|
|
|
|
|
;; Remove dependencies on optional libraries, notably GUI libraries.
|
2021-12-19 00:43:24 +01:00
|
|
|
|
(native-inputs (filter (lambda (input)
|
|
|
|
|
(match input
|
|
|
|
|
;; Work around the fact that modify-inputs can not
|
|
|
|
|
;; delete specific outputs; i.e. here we should keep
|
|
|
|
|
;; `(,glib "bin"), but not `(,glib "static").
|
|
|
|
|
((label package output)
|
2021-12-25 21:49:34 +01:00
|
|
|
|
(not (string=? "static" output)))
|
2021-12-19 00:43:24 +01:00
|
|
|
|
(_ input)))
|
2021-12-25 21:49:34 +01:00
|
|
|
|
(modify-inputs (package-native-inputs qemu)
|
|
|
|
|
(delete "gettext-minimal"))))
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(inputs (modify-inputs (package-inputs qemu)
|
|
|
|
|
(delete "libusb"
|
|
|
|
|
"mesa"
|
|
|
|
|
"sdl2"
|
|
|
|
|
"spice"
|
|
|
|
|
"virglrenderer"
|
|
|
|
|
"gtk+"
|
|
|
|
|
"usbredir"
|
|
|
|
|
"libdrm"
|
|
|
|
|
"libepoxy"
|
|
|
|
|
"pulseaudio"
|
|
|
|
|
"vde2"
|
|
|
|
|
"libcacard")))))
|
2016-06-07 16:36:34 +02:00
|
|
|
|
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(define (system->qemu-target system)
|
|
|
|
|
(cond
|
|
|
|
|
((string-prefix? "i686" system)
|
|
|
|
|
"qemu-system-i386")
|
|
|
|
|
((string-prefix? "arm" system)
|
|
|
|
|
"qemu-system-arm")
|
|
|
|
|
(else
|
|
|
|
|
(string-append "qemu-system-" (match (string-split system #\-)
|
|
|
|
|
((arch kernel) arch)
|
|
|
|
|
(_ system))))))
|
|
|
|
|
|
2021-10-01 23:59:00 +02:00
|
|
|
|
(define-public libx86emu
|
|
|
|
|
(package
|
|
|
|
|
(name "libx86emu")
|
2021-11-27 17:42:13 +01:00
|
|
|
|
(version "3.5")
|
2021-10-01 23:59:00 +02:00
|
|
|
|
(home-page "https://github.com/wfeldt/libx86emu")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri
|
|
|
|
|
(git-reference
|
|
|
|
|
(url home-page)
|
|
|
|
|
(commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
2021-11-27 17:42:13 +01:00
|
|
|
|
(sha256
|
|
|
|
|
(base32 "11nj3y7maz9ch15b1c2b69gd8d7mpaha377zpdbvfsmg5w9zz93l"))
|
2021-10-01 23:59:00 +02:00
|
|
|
|
(modules
|
|
|
|
|
'((guix build utils)))
|
|
|
|
|
(snippet
|
|
|
|
|
`(begin
|
|
|
|
|
;; Remove git2log program file.
|
|
|
|
|
(delete-file "git2log")
|
|
|
|
|
;; Remove variables that depends on git2log.
|
|
|
|
|
(substitute* "Makefile"
|
|
|
|
|
(("GIT2LOG.*=.*$") "")
|
|
|
|
|
(("GITDEPS.*=.*$") "")
|
2021-11-27 17:42:13 +01:00
|
|
|
|
(("BRANCH.*=.*$") ""))))))
|
2021-10-01 23:59:00 +02:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:test-target "test"
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'patch
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(include (string-append out "/include"))
|
|
|
|
|
(lib (string-append out "/lib")))
|
|
|
|
|
;; Correct the values of version and install directories.
|
|
|
|
|
(substitute* "Makefile"
|
|
|
|
|
(("VERSION.*=.*$")
|
|
|
|
|
(string-append "VERSION := "
|
|
|
|
|
,version "\n"))
|
|
|
|
|
(("PREFIX.*=.*$")
|
|
|
|
|
(string-append "PREFIX := " out "\n"))
|
|
|
|
|
(("MAJOR_VERSION.*=.*$")
|
|
|
|
|
(string-append "MAJOR_VERSION := "
|
|
|
|
|
,(version-major version) "\n"))
|
|
|
|
|
(("LIBDIR.*=.*$")
|
|
|
|
|
(string-append "LIBDIR = " lib "\n"))
|
|
|
|
|
(("/usr/include") include)))))
|
|
|
|
|
(delete 'configure)))) ; no configure script
|
|
|
|
|
(native-inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list nasm perl))
|
2021-10-01 23:59:00 +02:00
|
|
|
|
(synopsis "Library for x86 emulation")
|
|
|
|
|
(description "Libx86emu is a small library to emulate x86 instructions. The
|
|
|
|
|
focus here is not a complete emulation but to cover enough for typical
|
|
|
|
|
firmware blobs. You can
|
|
|
|
|
@enumerate
|
|
|
|
|
@item intercept any memory access or directly map real memory ranges
|
|
|
|
|
@item intercept any i/o access, map real i/o ports, or block any real i/o
|
|
|
|
|
@item intercept any interrupt
|
|
|
|
|
@item add a hook to run after each instruction
|
|
|
|
|
@item recognize a special x86 instruction that can trigger logging
|
|
|
|
|
@item use integrated logging
|
|
|
|
|
@end enumerate")
|
2021-10-04 07:42:19 +02:00
|
|
|
|
(license (license:x11-style "file://LICENSE"))))
|
2021-10-01 23:59:00 +02:00
|
|
|
|
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(define-public ganeti
|
|
|
|
|
(package
|
|
|
|
|
(name "ganeti")
|
2022-04-09 14:19:23 +02:00
|
|
|
|
(version "3.0.2")
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(source (origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/ganeti/ganeti")
|
|
|
|
|
(commit (string-append "v" version))))
|
|
|
|
|
(sha256
|
2022-04-09 14:19:23 +02:00
|
|
|
|
(base32 "1xw7rm0k411aj0a4hrxz9drn7827bihp6bwizbapfx8k4c3125k4"))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(patches (search-patches "ganeti-shepherd-support.patch"
|
|
|
|
|
"ganeti-shepherd-master-failover.patch"
|
|
|
|
|
"ganeti-haskell-pythondir.patch"
|
2022-04-09 12:39:45 +02:00
|
|
|
|
"ganeti-pyyaml-compat.patch"
|
2021-01-28 05:41:51 +01:00
|
|
|
|
"ganeti-disable-version-symlinks.patch"))))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:imported-modules (,@%gnu-build-system-modules
|
|
|
|
|
(guix build haskell-build-system)
|
|
|
|
|
(guix build python-build-system))
|
|
|
|
|
#:modules (,@%gnu-build-system-modules
|
|
|
|
|
((guix build haskell-build-system) #:prefix haskell:)
|
2021-12-02 20:23:48 +01:00
|
|
|
|
((guix build python-build-system) #:select (site-packages))
|
2021-10-12 00:20:57 +02:00
|
|
|
|
(srfi srfi-1)
|
|
|
|
|
(srfi srfi-26)
|
|
|
|
|
(ice-9 match)
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(ice-9 rdelim))
|
|
|
|
|
|
|
|
|
|
;; The default test target includes a lot of checks that are only really
|
|
|
|
|
;; relevant for developers such as NEWS file checking, line lengths, etc.
|
|
|
|
|
;; We are only interested in the "py-tests" and "hs-tests" targets: this
|
|
|
|
|
;; is the closest we've got even though it includes a little more.
|
|
|
|
|
#:test-target "check-TESTS"
|
|
|
|
|
|
|
|
|
|
#:configure-flags
|
|
|
|
|
(list "--localstatedir=/var"
|
|
|
|
|
"--sharedstatedir=/var"
|
|
|
|
|
"--sysconfdir=/etc"
|
|
|
|
|
"--enable-haskell-tests"
|
|
|
|
|
|
|
|
|
|
;; By default, the build system installs everything to versioned
|
|
|
|
|
;; directories such as $libdir/3.0 and relies on a $libdir/default
|
|
|
|
|
;; symlink pointed from /etc/ganeti/{lib,share} to actually function.
|
|
|
|
|
;; This is done to accommodate installing multiple versions in
|
|
|
|
|
;; parallel, but is of little use to us as Guix users can just
|
|
|
|
|
;; roll back and forth. Thus, disable it for simplicity.
|
|
|
|
|
"--disable-version-links"
|
|
|
|
|
|
|
|
|
|
;; Ganeti can optionally take control over SSH host keys and
|
|
|
|
|
;; distribute them to nodes as they are added, and also rotate keys
|
|
|
|
|
;; with 'gnt-cluster renew-crypto --new-ssh-keys'. Thus it needs to
|
|
|
|
|
;; know how to restart the SSH daemon.
|
|
|
|
|
"--with-sshd-restart-command='herd restart ssh-daemon'"
|
|
|
|
|
|
|
|
|
|
;; Look for OS definitions in this directory by default. It can
|
|
|
|
|
;; be changed in the cluster configuration.
|
|
|
|
|
"--with-os-search-path=/run/current-system/profile/share/ganeti/os"
|
|
|
|
|
|
|
|
|
|
;; The default QEMU executable to use. We don't use the package
|
|
|
|
|
;; here because this entry is stored in the cluster configuration.
|
|
|
|
|
(string-append "--with-kvm-path=/run/current-system/profile/bin/"
|
|
|
|
|
,(system->qemu-target (%current-system))))
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'create-vcs-version
|
|
|
|
|
(lambda _
|
|
|
|
|
;; If we are building from a git checkout, we need to create a
|
|
|
|
|
;; 'vcs-version' file manually because the build system does
|
|
|
|
|
;; not have access to the git repository information.
|
|
|
|
|
(unless (file-exists? "vcs-version")
|
|
|
|
|
(call-with-output-file "vcs-version"
|
|
|
|
|
(lambda (port)
|
2021-01-22 23:33:23 +01:00
|
|
|
|
(format port "v~a~%" ,version))))))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(add-after 'unpack 'patch-absolute-file-names
|
2022-01-19 09:42:05 +01:00
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(substitute* '("lib/utils/process.py"
|
|
|
|
|
"lib/utils/text.py"
|
|
|
|
|
"src/Ganeti/Constants.hs"
|
|
|
|
|
"src/Ganeti/HTools/CLI.hs"
|
|
|
|
|
"test/py/ganeti.config_unittest.py"
|
|
|
|
|
"test/py/ganeti.hooks_unittest.py"
|
|
|
|
|
"test/py/ganeti.utils.process_unittest.py"
|
|
|
|
|
"test/py/ganeti.utils.text_unittest.py"
|
|
|
|
|
"test/py/ganeti.utils.wrapper_unittest.py")
|
2022-01-19 09:42:05 +01:00
|
|
|
|
(("/bin/sh") (search-input-file inputs "/bin/sh"))
|
|
|
|
|
(("/bin/bash") (search-input-file inputs "/bin/bash"))
|
|
|
|
|
(("/usr/bin/env") (search-input-file inputs "/bin/env"))
|
|
|
|
|
(("/bin/true") (search-input-file inputs "/bin/true")))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
|
|
|
|
|
;; This script is called by the node daemon at startup to perform
|
|
|
|
|
;; sanity checks on the cluster IP addresses, and it is also used
|
|
|
|
|
;; in a master-failover scenario. Add absolute references to
|
|
|
|
|
;; avoid propagating these executables.
|
|
|
|
|
(substitute* "tools/master-ip-setup"
|
2022-01-19 09:42:05 +01:00
|
|
|
|
(("arping") (search-input-file inputs "/bin/arping"))
|
|
|
|
|
(("ndisc6") (search-input-file inputs "/bin/ndisc6"))
|
|
|
|
|
(("fping") (search-input-file inputs "/sbin/fping"))
|
|
|
|
|
(("grep") (search-input-file inputs "/bin/grep"))
|
|
|
|
|
(("ip addr") (string-append (search-input-file inputs "/sbin/ip")
|
|
|
|
|
" addr")))))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(add-after 'unpack 'override-builtin-PATH
|
|
|
|
|
(lambda _
|
|
|
|
|
;; Ganeti runs OS install scripts and similar with a built-in
|
|
|
|
|
;; hard coded PATH. Patch so it works on Guix System.
|
|
|
|
|
(substitute* "src/Ganeti/Constants.hs"
|
|
|
|
|
(("/sbin:/bin:/usr/sbin:/usr/bin")
|
|
|
|
|
"/run/setuid-programs:/run/current-system/profile/sbin:\
|
2021-01-22 23:33:23 +01:00
|
|
|
|
/run/current-system/profile/bin"))))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(add-after 'bootstrap 'patch-sphinx-version-detection
|
|
|
|
|
(lambda _
|
|
|
|
|
;; The build system runs 'sphinx-build --version' to verify that
|
|
|
|
|
;; the Sphinx is recent enough, but does not expect the
|
|
|
|
|
;; .sphinx-build-real executable name created by the Sphinx wrapper.
|
|
|
|
|
(substitute* "configure"
|
|
|
|
|
(("\\$SPHINX --version 2>&1")
|
2021-01-22 23:33:23 +01:00
|
|
|
|
"$SPHINX --version 2>&1 \
|
|
|
|
|
| sed 's/.sphinx-build-real/sphinx-build/g'"))))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
|
|
|
|
|
;; The build system invokes Cabal and GHC, which do not work with
|
|
|
|
|
;; GHC_PACKAGE_PATH: <https://github.com/haskell/cabal/issues/3728>.
|
|
|
|
|
;; Tweak the build system to do roughly what haskell-build-system does.
|
|
|
|
|
(add-before 'configure 'configure-haskell
|
|
|
|
|
(assoc-ref haskell:%standard-phases 'setup-compiler))
|
|
|
|
|
(add-after 'configure 'do-not-use-GHC_PACKAGE_PATH
|
|
|
|
|
(lambda _
|
|
|
|
|
(unsetenv "GHC_PACKAGE_PATH")
|
|
|
|
|
(substitute* "Makefile"
|
|
|
|
|
(("\\$\\(CABAL\\)")
|
|
|
|
|
"$(CABAL) --package-db=../package.conf.d")
|
|
|
|
|
(("\\$\\(GHC\\)")
|
2021-01-22 23:33:23 +01:00
|
|
|
|
"$(GHC) -package-db=../package.conf.d"))))
|
2020-08-20 05:40:04 +02:00
|
|
|
|
(add-after 'configure 'make-ghc-use-shared-libraries
|
|
|
|
|
(lambda _
|
|
|
|
|
(substitute* "Makefile"
|
2021-01-22 23:33:23 +01:00
|
|
|
|
(("HFLAGS =") "HFLAGS = -dynamic -fPIC"))))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(add-after 'configure 'fix-installation-directories
|
|
|
|
|
(lambda _
|
|
|
|
|
(substitute* "Makefile"
|
|
|
|
|
;; Do not attempt to create /var during install.
|
|
|
|
|
(("\\$\\(DESTDIR\\)\\$\\{localstatedir\\}")
|
|
|
|
|
"$(DESTDIR)${prefix}${localstatedir}")
|
|
|
|
|
;; Similarly, do not attempt to install the sample ifup scripts
|
|
|
|
|
;; to /etc/ganeti.
|
|
|
|
|
(("\\$\\(DESTDIR\\)\\$\\(ifupdir\\)")
|
2021-01-22 23:33:23 +01:00
|
|
|
|
"$(DESTDIR)${prefix}$(ifupdir)"))))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(add-before 'build 'adjust-tests
|
|
|
|
|
(lambda _
|
|
|
|
|
;; Disable tests that can not run. Do it early to prevent
|
|
|
|
|
;; touching the Makefile later and triggering a needless rebuild.
|
|
|
|
|
(substitute* "Makefile"
|
|
|
|
|
;; These tests expect the presence of a 'root' user (via
|
|
|
|
|
;; ganeti/runtime.py), which fails in the build environment.
|
|
|
|
|
(("test/py/ganeti\\.asyncnotifier_unittest\\.py") "")
|
|
|
|
|
(("test/py/ganeti\\.backend_unittest\\.py") "")
|
|
|
|
|
(("test/py/ganeti\\.daemon_unittest\\.py") "")
|
2022-04-09 14:19:23 +02:00
|
|
|
|
(("test/py/ganeti\\.hypervisor\\.hv_kvm_unittest\\.py") "")
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(("test/py/ganeti\\.tools\\.ensure_dirs_unittest\\.py") "")
|
|
|
|
|
(("test/py/ganeti\\.utils\\.io_unittest-runasroot\\.py") "")
|
|
|
|
|
;; Disable the bash_completion test, as it requires the full
|
|
|
|
|
;; bash instead of bash-minimal.
|
|
|
|
|
(("test/py/bash_completion\\.bash")
|
|
|
|
|
"")
|
|
|
|
|
;; This test requires networking.
|
|
|
|
|
(("test/py/import-export_unittest\\.bash")
|
2021-01-22 23:33:23 +01:00
|
|
|
|
""))))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(add-after 'build 'build-bash-completions
|
|
|
|
|
(lambda _
|
2021-10-13 22:19:38 +02:00
|
|
|
|
(setenv "PYTHONPATH" ".")
|
|
|
|
|
(invoke "./autotools/build-bash-completion")
|
|
|
|
|
(unsetenv "PYTHONPATH")))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(add-before 'check 'pre-check
|
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
|
|
|
;; Set TZDIR so that time zones are found.
|
2021-07-16 15:25:42 +02:00
|
|
|
|
(setenv "TZDIR" (search-input-directory inputs "share/zoneinfo"))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
|
|
|
|
|
(substitute* "test/py/ganeti.utils.process_unittest.py"
|
|
|
|
|
;; This test attempts to run an executable with
|
|
|
|
|
;; RunCmd(..., reset_env=True), which fails because the default
|
|
|
|
|
;; PATH from Constants.hs does not exist in the build container.
|
|
|
|
|
((".*def testResetEnv.*" all)
|
|
|
|
|
(string-append " @unittest.skipIf(True, "
|
|
|
|
|
"\"cannot reset env in the build container\")\n"
|
|
|
|
|
all))
|
|
|
|
|
|
|
|
|
|
;; XXX: Somehow this test fails in the build container, but
|
|
|
|
|
;; works in 'guix environment -C', even without /bin/sh?
|
|
|
|
|
((".*def testPidFile.*" all)
|
|
|
|
|
(string-append " @unittest.skipIf(True, "
|
|
|
|
|
"\"testPidFile fails in the build container\")\n"
|
|
|
|
|
all)))
|
|
|
|
|
|
|
|
|
|
;; XXX: Why are these links not added automatically.
|
|
|
|
|
(with-directory-excursion "test/hs"
|
|
|
|
|
(for-each (lambda (file)
|
|
|
|
|
(symlink "../../src/htools" file))
|
|
|
|
|
'("hspace" "hscan" "hinfo" "hbal" "hroller"
|
2021-01-22 23:33:23 +01:00
|
|
|
|
"hcheck" "hail" "hsqueeze")))))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(add-after 'install 'install-bash-completions
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(compdir (string-append out "/etc/bash_completion.d")))
|
|
|
|
|
(mkdir-p compdir)
|
|
|
|
|
(copy-file "doc/examples/bash_completion"
|
2021-10-12 00:20:57 +02:00
|
|
|
|
(string-append compdir "/ganeti"))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
;; The one file contains completions for many different
|
|
|
|
|
;; executables. Create symlinks for found completions.
|
|
|
|
|
(with-directory-excursion compdir
|
|
|
|
|
(for-each
|
|
|
|
|
(lambda (prog) (symlink "ganeti" prog))
|
|
|
|
|
(call-with-input-file "ganeti"
|
|
|
|
|
(lambda (port)
|
|
|
|
|
(let loop ((line (read-line port))
|
|
|
|
|
(progs '()))
|
|
|
|
|
(if (eof-object? line)
|
|
|
|
|
progs
|
|
|
|
|
(if (string-prefix? "complete" line)
|
|
|
|
|
(loop (read-line port)
|
|
|
|
|
;; Extract "prog" from lines of the form:
|
|
|
|
|
;; "complete -F _prog -o filenames prog".
|
|
|
|
|
;; Note that 'burnin' is listed with the
|
|
|
|
|
;; absolute file name, which is why we
|
|
|
|
|
;; run everything through 'basename'.
|
2021-10-12 00:20:57 +02:00
|
|
|
|
(match (string-split line #\ )
|
|
|
|
|
((commands ... prog)
|
|
|
|
|
(cons (basename prog) progs))))
|
2021-01-22 23:33:23 +01:00
|
|
|
|
(loop (read-line port) progs)))))))))))
|
|
|
|
|
;; Wrap all executables with GUIX_PYTHONPATH. We can't borrow
|
|
|
|
|
;; the phase from python-build-system because we also need to wrap
|
|
|
|
|
;; the scripts in $out/lib/ganeti such as "node-daemon-setup".
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(add-after 'install 'wrap
|
2021-12-02 20:23:48 +01:00
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(sbin (string-append out "/sbin"))
|
2021-12-02 20:23:48 +01:00
|
|
|
|
(lib (string-append out "/lib"))
|
|
|
|
|
(PYTHONPATH (string-append (site-packages inputs outputs)
|
|
|
|
|
":" (getenv "GUIX_PYTHONPATH"))))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(define (shell-script? file)
|
|
|
|
|
(call-with-ascii-input-file file
|
|
|
|
|
(lambda (port)
|
|
|
|
|
(let ((shebang (false-if-exception (read-line port))))
|
|
|
|
|
(and shebang
|
|
|
|
|
(string-prefix? "#!" shebang)
|
|
|
|
|
(or (string-contains shebang "/bin/bash")
|
|
|
|
|
(string-contains shebang "/bin/sh")))))))
|
|
|
|
|
|
2021-10-12 00:20:57 +02:00
|
|
|
|
(define* (wrap? file #:rest _)
|
2020-07-03 00:28:57 +02:00
|
|
|
|
;; Do not wrap shell scripts because some are meant to be
|
|
|
|
|
;; sourced, which breaks if they are wrapped. We do wrap
|
|
|
|
|
;; the Haskell executables because some call out to Python
|
|
|
|
|
;; directly.
|
|
|
|
|
(and (executable-file? file)
|
|
|
|
|
(not (symbolic-link? file))
|
|
|
|
|
(not (shell-script? file))))
|
|
|
|
|
|
|
|
|
|
(for-each (lambda (file)
|
|
|
|
|
(wrap-program file
|
2021-01-22 23:33:23 +01:00
|
|
|
|
`("GUIX_PYTHONPATH" ":" prefix
|
2021-12-02 20:23:48 +01:00
|
|
|
|
(,PYTHONPATH))))
|
2021-10-12 00:20:57 +02:00
|
|
|
|
(append-map (cut find-files <> wrap?)
|
|
|
|
|
(list (string-append lib "/ganeti")
|
|
|
|
|
sbin)))))))))
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(native-inputs
|
|
|
|
|
`(("haskell" ,ghc)
|
|
|
|
|
("cabal" ,cabal-install)
|
|
|
|
|
("m4" ,m4)
|
|
|
|
|
|
|
|
|
|
;; These inputs are necessary to bootstrap the package, because we
|
|
|
|
|
;; have patched the build system.
|
|
|
|
|
("autoconf" ,autoconf)
|
|
|
|
|
("automake" ,automake)
|
|
|
|
|
|
|
|
|
|
;; For the documentation.
|
|
|
|
|
("python-docutils" ,python-docutils)
|
|
|
|
|
("sphinx" ,python-sphinx)
|
2020-09-11 12:43:44 +02:00
|
|
|
|
("pandoc" ,pandoc)
|
2020-07-03 00:28:57 +02:00
|
|
|
|
("dot" ,graphviz)
|
|
|
|
|
|
|
|
|
|
;; Test dependencies.
|
|
|
|
|
("fakeroot" ,fakeroot)
|
|
|
|
|
("ghc-temporary" ,ghc-temporary)
|
|
|
|
|
("ghc-test-framework" ,ghc-test-framework)
|
|
|
|
|
("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
|
|
|
|
|
("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
|
|
|
|
|
("python-mock" ,python-mock)
|
|
|
|
|
("python-pyyaml" ,python-pyyaml)
|
|
|
|
|
("openssh" ,openssh)
|
|
|
|
|
("procps" ,procps)
|
|
|
|
|
("shelltestrunner" ,shelltestrunner)
|
|
|
|
|
("tzdata" ,tzdata-for-tests)))
|
|
|
|
|
(inputs
|
2022-01-19 09:42:05 +01:00
|
|
|
|
(list iputils ;for 'arping'
|
|
|
|
|
curl
|
|
|
|
|
fping
|
|
|
|
|
iproute
|
|
|
|
|
ndisc6
|
|
|
|
|
socat
|
|
|
|
|
qemu-minimal ;for qemu-img
|
|
|
|
|
ghc-attoparsec
|
|
|
|
|
ghc-base64-bytestring
|
|
|
|
|
ghc-cryptonite
|
|
|
|
|
ghc-curl
|
|
|
|
|
ghc-hinotify
|
|
|
|
|
ghc-hslogger
|
|
|
|
|
ghc-json
|
|
|
|
|
ghc-lens
|
|
|
|
|
ghc-lifted-base
|
|
|
|
|
ghc-network
|
|
|
|
|
ghc-old-time
|
|
|
|
|
ghc-psqueue
|
|
|
|
|
ghc-regex-pcre
|
|
|
|
|
ghc-utf8-string
|
|
|
|
|
ghc-zlib
|
|
|
|
|
;; For the optional metadata daemon.
|
|
|
|
|
ghc-snap-core
|
|
|
|
|
ghc-snap-server
|
|
|
|
|
python
|
|
|
|
|
python-pyopenssl
|
|
|
|
|
python-simplejson
|
|
|
|
|
python-pyparsing
|
|
|
|
|
python-pyinotify
|
|
|
|
|
python-pycurl
|
|
|
|
|
python-bitarray
|
|
|
|
|
python-paramiko
|
|
|
|
|
python-psutil))
|
2021-02-28 11:06:56 +01:00
|
|
|
|
(home-page "https://www.ganeti.org/")
|
2020-07-03 00:28:57 +02:00
|
|
|
|
(synopsis "Cluster-based virtual machine management system")
|
|
|
|
|
(description
|
|
|
|
|
"Ganeti is a virtual machine management tool built on top of existing
|
|
|
|
|
virtualization technologies such as Xen or KVM. Ganeti controls:
|
|
|
|
|
|
|
|
|
|
@itemize @bullet
|
|
|
|
|
@item Disk creation management;
|
|
|
|
|
@item Operating system installation for instances (in co-operation with
|
|
|
|
|
OS-specific install scripts); and
|
|
|
|
|
@item Startup, shutdown, and failover between physical systems.
|
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
|
|
Ganeti is designed to facilitate cluster management of virtual servers and
|
|
|
|
|
to provide fast and simple recovery after physical failures, using
|
|
|
|
|
commodity hardware.")
|
|
|
|
|
(license license:bsd-2)))
|
|
|
|
|
|
2020-06-17 20:17:40 +02:00
|
|
|
|
(define-public ganeti-instance-guix
|
|
|
|
|
(package
|
|
|
|
|
(name "ganeti-instance-guix")
|
2022-11-08 20:08:12 +01:00
|
|
|
|
(version "0.8")
|
2020-06-17 20:17:40 +02:00
|
|
|
|
(home-page "https://github.com/mbakke/ganeti-instance-guix")
|
|
|
|
|
(source (origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference (url home-page) (commit version)))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-11-08 20:08:12 +01:00
|
|
|
|
"0sw9ks3j3y33apdcghjxxjf09ld592z9skaa7bgn9d2lhplzjihr"))))
|
2020-06-17 20:17:40 +02:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:configure-flags '("--sysconfdir=/etc" "--localstatedir=/var")))
|
|
|
|
|
(native-inputs
|
2022-11-08 20:08:12 +01:00
|
|
|
|
(list autoconf automake jq))
|
2020-06-17 20:17:40 +02:00
|
|
|
|
(inputs
|
2022-11-03 19:46:31 +01:00
|
|
|
|
(list btrfs-progs
|
2022-11-08 20:08:12 +01:00
|
|
|
|
cryptsetup
|
2022-11-03 19:46:31 +01:00
|
|
|
|
e2fsprogs
|
|
|
|
|
f2fs-tools
|
|
|
|
|
lvm2
|
|
|
|
|
multipath-tools
|
|
|
|
|
util-linux
|
|
|
|
|
parted
|
|
|
|
|
xfsprogs))
|
2020-06-17 20:17:40 +02:00
|
|
|
|
(synopsis "Guix OS integration for Ganeti")
|
|
|
|
|
(description
|
|
|
|
|
"This package provides a guest OS definition for Ganeti that uses
|
|
|
|
|
Guix to build virtual machines.")
|
|
|
|
|
(license license:gpl3+)))
|
|
|
|
|
|
2020-06-17 20:23:06 +02:00
|
|
|
|
(define-public ganeti-instance-debootstrap
|
|
|
|
|
(package
|
|
|
|
|
(name "ganeti-instance-debootstrap")
|
|
|
|
|
;; We need two commits on top of the latest release for compatibility
|
|
|
|
|
;; with newer sfdisk, as well as gnt-network integration.
|
|
|
|
|
(version "0.16-2-ge145396")
|
|
|
|
|
(home-page "https://github.com/ganeti/instance-debootstrap")
|
|
|
|
|
(source (origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference (url home-page) (commit version)))
|
2020-07-17 13:59:16 +02:00
|
|
|
|
(file-name (git-file-name name version))
|
2020-06-17 20:23:06 +02:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"0f2isw9d8lawzj21rrq1q9xhq8xfa65rqbhqmrn59z201x9q1336"))))
|
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:configure-flags '("--sysconfdir=/etc" "--localstatedir=/var")
|
|
|
|
|
#:phases (modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'add-absolute-references
|
|
|
|
|
(lambda _
|
|
|
|
|
(substitute* "common.sh.in"
|
|
|
|
|
(("/sbin/blkid") (which "blkid"))
|
|
|
|
|
(("kpartx -")
|
|
|
|
|
(string-append (which "kpartx") " -")))
|
|
|
|
|
(substitute* "import"
|
|
|
|
|
(("restore -r")
|
|
|
|
|
(string-append (which "restore") " -r")))
|
|
|
|
|
(substitute* "export"
|
|
|
|
|
(("dump -0")
|
|
|
|
|
(string-append (which "dump") " -0")))
|
|
|
|
|
(substitute* "create"
|
|
|
|
|
(("debootstrap") (which "debootstrap"))
|
|
|
|
|
(("`which run-parts`") (which "run-parts"))
|
|
|
|
|
;; Here we actually need to hard code /bin/passwd
|
|
|
|
|
;; because it's called via chroot, which fails if
|
|
|
|
|
;; "/bin" is not in PATH.
|
|
|
|
|
(("passwd") "/bin/passwd"))
|
|
|
|
|
#t))
|
|
|
|
|
(add-after 'unpack 'set-dpkg-arch
|
|
|
|
|
(lambda* (#:key system #:allow-other-keys)
|
|
|
|
|
;; The create script passes --arch to debootstrap,
|
|
|
|
|
;; and defaults to `dpkg --print-architecture` when
|
|
|
|
|
;; ARCH is not set in variant.conf. Hard code the
|
|
|
|
|
;; build-time architecture to avoid the dpkg dependency.
|
|
|
|
|
(let ((dpkg-arch
|
|
|
|
|
(cond ((string-prefix? "x86_64" system)
|
|
|
|
|
"amd64")
|
|
|
|
|
((string-prefix? "i686" system)
|
|
|
|
|
"i386")
|
|
|
|
|
((string-prefix? "aarch64" system)
|
|
|
|
|
"arm64")
|
|
|
|
|
(else (car (string-split system #\-))))))
|
|
|
|
|
(substitute* "create"
|
|
|
|
|
(("`dpkg --print-architecture`")
|
|
|
|
|
dpkg-arch))
|
|
|
|
|
#t)))
|
|
|
|
|
(add-after 'configure 'adjust-Makefile
|
|
|
|
|
(lambda _
|
|
|
|
|
;; Do not attempt to create /etc/ganeti/instance-debootstrap
|
|
|
|
|
;; and /etc/default/ganeti-instance-debootstrap during install.
|
|
|
|
|
;; They are created by the Ganeti service.
|
|
|
|
|
(substitute* "Makefile"
|
|
|
|
|
(("\\$\\(variantsdir\\)")
|
|
|
|
|
"$(prefix)/etc/ganeti/instance-debootstrap/variants")
|
|
|
|
|
(("\\$\\(defaultsdir\\)")
|
|
|
|
|
"$(prefix)/etc/default/ganeti-instance-debootstrap"))
|
|
|
|
|
#t))
|
|
|
|
|
(add-after 'install 'make-variants.list-symlink
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
;; The Ganeti OS API mandates a variants.list file that
|
|
|
|
|
;; describes all supported "variants" of this OS.
|
|
|
|
|
;; Guix generates this file, so make the original file
|
|
|
|
|
;; a symlink to it.
|
|
|
|
|
(with-directory-excursion (string-append
|
|
|
|
|
(assoc-ref outputs "out")
|
|
|
|
|
"/share/ganeti/os/debootstrap")
|
|
|
|
|
(delete-file "variants.list")
|
|
|
|
|
(symlink "/etc/ganeti/instance-debootstrap/variants/variants.list"
|
|
|
|
|
"variants.list"))
|
|
|
|
|
#t)))))
|
|
|
|
|
(native-inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list autoconf automake))
|
2020-06-17 20:23:06 +02:00
|
|
|
|
(inputs
|
|
|
|
|
`(("debianutils" ,debianutils)
|
|
|
|
|
("debootstrap" ,debootstrap)
|
|
|
|
|
("dump" ,dump)
|
|
|
|
|
("kpartx" ,multipath-tools)
|
|
|
|
|
("util-linux" ,util-linux)))
|
|
|
|
|
(synopsis "Debian OS integration for Ganeti")
|
|
|
|
|
(description
|
|
|
|
|
"This package provides a guest OS definition for Ganeti. It installs
|
|
|
|
|
Debian or a derivative using @command{debootstrap}.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
2022-03-13 09:58:53 +01:00
|
|
|
|
(define-public spike
|
|
|
|
|
(package
|
|
|
|
|
(name "spike")
|
|
|
|
|
(version "1.1.0")
|
|
|
|
|
(source (origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/riscv-software-src/riscv-isa-sim")
|
|
|
|
|
(commit (string-append "v" version))))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32 "0cik2m0byfp9ppq0hpg3xyrlp5ag1i4dww7a7872mlm36xxqagg0"))))
|
|
|
|
|
(build-system gnu-build-system)
|
2022-03-23 07:32:44 +01:00
|
|
|
|
(arguments
|
|
|
|
|
(list
|
|
|
|
|
#:phases
|
|
|
|
|
#~(modify-phases %standard-phases
|
2022-03-29 12:43:02 +02:00
|
|
|
|
(add-before 'configure 'configure-dtc-path
|
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
|
|
|
;; Reference dtc by its absolute store path.
|
|
|
|
|
(substitute* "riscv/dts.cc"
|
|
|
|
|
(("DTC")
|
|
|
|
|
(string-append "\"" (search-input-file inputs "/bin/dtc") "\""))))))))
|
2022-03-13 09:58:53 +01:00
|
|
|
|
(inputs
|
2022-03-23 07:32:44 +01:00
|
|
|
|
(list bash-minimal dtc))
|
2022-03-13 09:58:53 +01:00
|
|
|
|
(native-inputs
|
|
|
|
|
(list python-wrapper))
|
|
|
|
|
(home-page "https://github.com/riscv-software-src/riscv-isa-sim")
|
|
|
|
|
(synopsis "RISC-V ISA Simulator")
|
|
|
|
|
(description "Spike, the RISC-V ISA Simulator, implements a functional model
|
|
|
|
|
of one or more RISC-V harts.")
|
|
|
|
|
(license license:bsd-3)))
|
|
|
|
|
|
2016-07-11 23:17:12 +02:00
|
|
|
|
(define-public libosinfo
|
|
|
|
|
(package
|
|
|
|
|
(name "libosinfo")
|
2022-03-23 03:10:02 +01:00
|
|
|
|
(version "1.10.0")
|
2016-07-11 23:17:12 +02:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
2017-03-06 13:02:20 +01:00
|
|
|
|
(uri (string-append "https://releases.pagure.org/libosinfo/libosinfo-"
|
2020-01-01 16:10:12 +01:00
|
|
|
|
version ".tar.xz"))
|
2016-07-11 23:17:12 +02:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-03-23 03:10:02 +01:00
|
|
|
|
"0193sdvv9yj3h6wwhj441d2fhccc7fh0m36sl0fv5pl0ql7y0lm2"))))
|
2020-01-01 16:10:12 +01:00
|
|
|
|
(build-system meson-build-system)
|
2016-07-11 23:17:12 +02:00
|
|
|
|
(arguments
|
2022-03-10 10:31:44 +01:00
|
|
|
|
(list
|
|
|
|
|
#:configure-flags
|
|
|
|
|
#~(list (string-append "-Dwith-usb-ids-path="
|
|
|
|
|
(search-input-file %build-inputs
|
|
|
|
|
"share/hwdata/usb.ids"))
|
|
|
|
|
(string-append "-Dwith-pci-ids-path="
|
|
|
|
|
(search-input-file %build-inputs
|
|
|
|
|
"share/hwdata/pci.ids")))
|
|
|
|
|
#:phases
|
|
|
|
|
#~(modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'patch-osinfo-path
|
|
|
|
|
(lambda* (#:key native-inputs inputs #:allow-other-keys)
|
|
|
|
|
(substitute* "osinfo/osinfo_loader.c"
|
|
|
|
|
(("path = DATA_DIR.*")
|
|
|
|
|
(format #f "path = ~s;"
|
|
|
|
|
(search-input-directory (or native-inputs inputs)
|
|
|
|
|
"share/osinfo")))))))))
|
|
|
|
|
(inputs (list libsoup-minimal-2 libxml2 libxslt osinfo-db))
|
2016-07-11 23:17:12 +02:00
|
|
|
|
(native-inputs
|
2022-03-10 10:31:44 +01:00
|
|
|
|
(list `(,glib "bin") ;glib-mkenums, etc.
|
|
|
|
|
gobject-introspection
|
|
|
|
|
gtk-doc/stable
|
|
|
|
|
`(,hwdata "pci")
|
|
|
|
|
`(,hwdata "usb")
|
|
|
|
|
vala
|
|
|
|
|
intltool
|
|
|
|
|
pkg-config))
|
2016-07-11 23:17:12 +02:00
|
|
|
|
(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+.
|
2018-07-24 16:43:54 +02:00
|
|
|
|
(license (list license:lgpl2.1+ license:gpl2+))))
|
2016-07-11 23:17:12 +02:00
|
|
|
|
|
2017-07-13 13:30:02 +02:00
|
|
|
|
(define-public lxc
|
|
|
|
|
(package
|
|
|
|
|
(name "lxc")
|
2022-05-22 02:00:02 +02:00
|
|
|
|
(version "4.0.12")
|
2017-07-13 13:30:02 +02:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append
|
|
|
|
|
"https://linuxcontainers.org/downloads/lxc/lxc-"
|
|
|
|
|
version ".tar.gz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-05-22 02:00:02 +02:00
|
|
|
|
"1vyk2j5w9gfyh23w3ar09cycyws16mxh3clbb33yhqzwcs1jy96v"))))
|
2017-07-13 13:30:02 +02:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(native-inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list pkg-config docbook2x))
|
2017-07-13 13:30:02 +02:00
|
|
|
|
(inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list gnutls libcap libseccomp libselinux))
|
2017-07-13 13:30:02 +02:00
|
|
|
|
(arguments
|
2022-01-16 01:00:01 +01:00
|
|
|
|
(list #:configure-flags
|
|
|
|
|
#~(list (string-append "--docdir=" #$output "/share/doc/"
|
|
|
|
|
#$name "-" #$version)
|
|
|
|
|
"--sysconfdir=/etc"
|
|
|
|
|
"--localstatedir=/var")
|
|
|
|
|
#:phases
|
|
|
|
|
#~(modify-phases %standard-phases
|
|
|
|
|
(replace 'install
|
|
|
|
|
(lambda _
|
|
|
|
|
(invoke "make" "install"
|
|
|
|
|
(string-append "bashcompdir=" #$output
|
|
|
|
|
"/etc/bash_completion.d")
|
|
|
|
|
;; Don't install files into /var and /etc.
|
|
|
|
|
"LXCPATH=/tmp/var/lib/lxc"
|
|
|
|
|
"localstatedir=/tmp/var"
|
|
|
|
|
"sysconfdir=/tmp/etc"
|
|
|
|
|
"sysconfigdir=/tmp/etc/default"))))))
|
2017-07-13 13:30:02 +02:00
|
|
|
|
(synopsis "Linux container tools")
|
|
|
|
|
(home-page "https://linuxcontainers.org/")
|
|
|
|
|
(description
|
|
|
|
|
"LXC is a userspace interface for the Linux kernel containment features.
|
|
|
|
|
Through a powerful API and simple tools, it lets Linux users easily create and
|
|
|
|
|
manage system or application containers.")
|
2018-07-24 16:43:54 +02:00
|
|
|
|
(license license:lgpl2.1+)))
|
2017-07-13 13:30:02 +02:00
|
|
|
|
|
2021-06-01 07:25:53 +02:00
|
|
|
|
(define-public lxcfs
|
|
|
|
|
(package
|
|
|
|
|
(name "lxcfs")
|
2022-01-16 01:00:01 +01:00
|
|
|
|
(version "4.0.11")
|
2021-06-01 07:25:53 +02:00
|
|
|
|
(home-page "https://github.com/lxc/lxcfs")
|
|
|
|
|
(source (origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference (url home-page)
|
|
|
|
|
(commit (string-append "lxcfs-" version))))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-01-16 01:00:01 +01:00
|
|
|
|
"02cgzh97cgxh9iyf7gkn5ikdc0sfzqfjj6al0hikdf9rbwcscqwd"))))
|
2021-06-01 07:25:53 +02:00
|
|
|
|
(arguments
|
|
|
|
|
'(#:configure-flags '("--localstatedir=/var")))
|
|
|
|
|
(native-inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list autoconf automake libtool pkg-config))
|
2021-06-01 07:25:53 +02:00
|
|
|
|
(inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list fuse))
|
2021-06-01 07:25:53 +02:00
|
|
|
|
(build-system gnu-build-system)
|
2021-06-21 14:33:57 +02:00
|
|
|
|
(synopsis "FUSE-based file system for LXC")
|
|
|
|
|
(description "LXCFS is a small FUSE file system written with the intention
|
2021-06-01 07:25:53 +02:00
|
|
|
|
of making Linux containers feel more like a virtual machine.
|
2021-06-21 14:33:57 +02:00
|
|
|
|
It started as a side project of LXC but can be used by any run-time.")
|
2021-06-01 07:25:53 +02:00
|
|
|
|
(license license:lgpl2.1+)))
|
|
|
|
|
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(define-public lxd
|
|
|
|
|
(package
|
|
|
|
|
(name "lxd")
|
2022-06-24 23:29:49 +02:00
|
|
|
|
(version "4.24")
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append
|
|
|
|
|
"https://github.com/lxc/lxd/releases/download/"
|
|
|
|
|
"lxd-" version "/lxd-" version ".tar.gz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-06-24 23:29:49 +02:00
|
|
|
|
"0lmjmvm98m6yjxcqlfw690i71nazfzgrm3mzbjj77g1631df3ylp"))))
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(build-system go-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:import-path "github.com/lxc/lxd"
|
|
|
|
|
#:tests? #f ;; tests fail due to missing /var, cgroups, etc.
|
|
|
|
|
#:modules ((guix build go-build-system)
|
|
|
|
|
(guix build union)
|
|
|
|
|
(guix build utils)
|
|
|
|
|
(srfi srfi-1))
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'unpack-dist
|
|
|
|
|
(lambda* (#:key import-path #:allow-other-keys)
|
|
|
|
|
(with-directory-excursion (string-append "src/" import-path)
|
2022-01-16 01:00:03 +01:00
|
|
|
|
;; Move all the dependencies into the src directory.
|
|
|
|
|
(copy-recursively "_dist/src" "../../.."))))
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(replace 'build
|
|
|
|
|
(lambda* (#:key import-path #:allow-other-keys)
|
|
|
|
|
(with-directory-excursion (string-append "src/" import-path)
|
2022-01-16 01:00:03 +01:00
|
|
|
|
(invoke "make" "build" "CC=gcc" "TAG_SQLITE3=libsqlite3"))))
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(replace 'check
|
|
|
|
|
(lambda* (#:key tests? import-path #:allow-other-keys)
|
|
|
|
|
(when tests?
|
|
|
|
|
(with-directory-excursion (string-append "src/" import-path)
|
2022-01-16 01:00:03 +01:00
|
|
|
|
(invoke "make" "check" "CC=gcc" "TAG_SQLITE3=libsqlite3")))))
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(replace 'install
|
|
|
|
|
(lambda* (#:key inputs outputs import-path #:allow-other-keys)
|
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(bin-dir
|
|
|
|
|
(string-append out "/bin/"))
|
|
|
|
|
(doc-dir
|
|
|
|
|
(string-append out "/share/doc/lxd-" ,version))
|
|
|
|
|
(completions-dir
|
|
|
|
|
(string-append out "/share/bash-completion/completions")))
|
|
|
|
|
(with-directory-excursion (string-append "src/" import-path)
|
2022-01-16 01:00:03 +01:00
|
|
|
|
;; Wrap lxd with run-time dependencies.
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(wrap-program (string-append bin-dir "lxd")
|
|
|
|
|
`("PATH" ":" prefix
|
|
|
|
|
,(fold (lambda (input paths)
|
2022-06-19 23:06:51 +02:00
|
|
|
|
;; TODO: Use 'search-input-directory' rather
|
|
|
|
|
;; than look up inputs by name.
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(let* ((in (assoc-ref inputs input))
|
|
|
|
|
(bin (string-append in "/bin"))
|
|
|
|
|
(sbin (string-append in "/sbin")))
|
|
|
|
|
(append (filter file-exists?
|
|
|
|
|
(list bin sbin)) paths)))
|
|
|
|
|
'()
|
2022-06-19 23:06:51 +02:00
|
|
|
|
'("bash-minimal" "acl" "rsync" "tar" "xz" "btrfs-progs"
|
2021-08-20 14:45:23 +02:00
|
|
|
|
"gzip" "dnsmasq" "squashfs-tools" "iproute2"
|
2022-06-16 05:54:07 +02:00
|
|
|
|
"criu" "iptables" "attr"))))
|
2022-01-16 01:00:03 +01:00
|
|
|
|
;; Remove unwanted binaries.
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(for-each (lambda (prog)
|
|
|
|
|
(delete-file (string-append bin-dir prog)))
|
|
|
|
|
'("deps" "macaroon-identity" "generate"))
|
2022-01-16 01:00:03 +01:00
|
|
|
|
;; Install documentation.
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(for-each (lambda (file)
|
|
|
|
|
(install-file file doc-dir))
|
|
|
|
|
(find-files "doc"))
|
2022-01-16 01:00:03 +01:00
|
|
|
|
;; Install bash completion.
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(rename-file "scripts/bash/lxd-client" "scripts/bash/lxd")
|
2022-01-16 01:00:03 +01:00
|
|
|
|
(install-file "scripts/bash/lxd" completions-dir))))))))
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(native-inputs
|
2022-01-16 01:00:03 +01:00
|
|
|
|
(list ;; Test dependencies:
|
2021-12-13 17:18:24 +01:00
|
|
|
|
;; ("go-github-com-rogpeppe-godeps" ,go-github-com-rogpeppe-godeps)
|
|
|
|
|
;; ("go-github-com-tsenart-deadcode" ,go-github-com-tsenart-deadcode)
|
|
|
|
|
;; ("go-golang-org-x-lint" ,go-golang-org-x-lint)
|
|
|
|
|
pkg-config))
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(inputs
|
2022-06-19 23:06:51 +02:00
|
|
|
|
(list acl
|
|
|
|
|
eudev
|
|
|
|
|
libdqlite
|
|
|
|
|
libraft
|
|
|
|
|
libcap
|
|
|
|
|
lxc
|
|
|
|
|
;; Run-time dependencies.
|
|
|
|
|
attr
|
|
|
|
|
bash-minimal
|
|
|
|
|
rsync
|
|
|
|
|
tar
|
|
|
|
|
xz
|
|
|
|
|
btrfs-progs
|
|
|
|
|
gzip
|
|
|
|
|
dnsmasq
|
|
|
|
|
squashfs-tools
|
|
|
|
|
iproute
|
|
|
|
|
criu
|
|
|
|
|
iptables))
|
2021-08-20 14:45:23 +02:00
|
|
|
|
(synopsis "Daemon based on liblxc offering a REST API to manage containers")
|
|
|
|
|
(home-page "https://linuxcontainers.org/lxd/")
|
|
|
|
|
(description "LXD is a next generation system container manager. It
|
|
|
|
|
offers a user experience similar to virtual machines but using Linux
|
|
|
|
|
containers instead. It's image based with pre-made images available for a
|
|
|
|
|
wide number of Linux distributions and is built around a very powerful, yet
|
|
|
|
|
pretty simple, REST API.")
|
|
|
|
|
(license license:asl2.0)))
|
|
|
|
|
|
2016-06-07 16:36:34 +02:00
|
|
|
|
(define-public libvirt
|
|
|
|
|
(package
|
|
|
|
|
(name "libvirt")
|
2022-08-11 18:23:16 +02:00
|
|
|
|
(version "8.6.0")
|
2019-07-25 21:58:14 +02:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "https://libvirt.org/sources/libvirt-"
|
|
|
|
|
version ".tar.xz"))
|
|
|
|
|
(sha256
|
2022-08-11 18:23:16 +02:00
|
|
|
|
(base32 "1qisvbshbcd5305mrb4vni559k52id7c8iw4dwdydbf97b24f658"))
|
2021-04-02 12:49:34 +02:00
|
|
|
|
(patches (search-patches "libvirt-add-install-prefix.patch"))))
|
|
|
|
|
(build-system meson-build-system)
|
2016-06-07 16:36:34 +02:00
|
|
|
|
(arguments
|
2022-08-11 18:24:41 +02:00
|
|
|
|
(list
|
|
|
|
|
#:configure-flags
|
|
|
|
|
#~(list "-Ddriver_qemu=enabled"
|
|
|
|
|
"-Dqemu_user=nobody"
|
|
|
|
|
"-Dqemu_group=kvm"
|
|
|
|
|
"-Dstorage_disk=enabled"
|
|
|
|
|
"-Dstorage_dir=enabled"
|
|
|
|
|
"-Dpolkit=enabled"
|
|
|
|
|
;; XXX The default, but required to make -Dsasl ‘stick’.
|
|
|
|
|
;; See <https://gitlab.com/libvirt/libvirt/-/issues/185>
|
|
|
|
|
"-Ddriver_remote=enabled"
|
|
|
|
|
"-Dnls=enabled" ;translations
|
|
|
|
|
(string-append "-Ddocdir=" #$output "/share/doc/"
|
|
|
|
|
#$(package-name this-package) "-"
|
|
|
|
|
#$(package-version this-package))
|
|
|
|
|
"-Dbash_completion=enabled"
|
|
|
|
|
(string-append "-Dinstall_prefix=" #$output)
|
|
|
|
|
"--sysconfdir=/etc"
|
|
|
|
|
"--localstatedir=/var")
|
|
|
|
|
#:phases
|
|
|
|
|
#~(modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'skip-directory-confusion
|
|
|
|
|
(lambda _
|
|
|
|
|
;; Don't try to install an (unused) /var outside of the store.
|
|
|
|
|
(substitute* "scripts/meson-install-dirs.py"
|
|
|
|
|
(("destdir = .*")
|
|
|
|
|
"destdir = '/tmp'"))))
|
2022-08-18 10:11:36 +02:00
|
|
|
|
(add-after 'unpack 'use-absolute-dnsmasq
|
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
|
|
|
(let ((dnsmasq (search-input-file inputs "sbin/dnsmasq")))
|
|
|
|
|
(substitute* "src/util/virdnsmasq.c"
|
|
|
|
|
(("#define DNSMASQ \"dnsmasq\"")
|
|
|
|
|
(string-append "#define DNSMASQ \"" dnsmasq "\""))))))
|
2022-08-11 18:24:41 +02:00
|
|
|
|
(add-before 'configure 'disable-broken-tests
|
|
|
|
|
(lambda _
|
|
|
|
|
(let ((tests (list "commandtest" ; hangs idly
|
2022-08-18 10:11:36 +02:00
|
|
|
|
"networkxml2conftest" ; fails with absolute dnsmasq
|
2022-08-11 18:24:41 +02:00
|
|
|
|
"qemuxml2argvtest" ; fails
|
|
|
|
|
"virnetsockettest"))) ; tries to network
|
|
|
|
|
(substitute* "tests/meson.build"
|
|
|
|
|
(((format #f ".*'name': '(~a)'.*" (string-join tests "|")))
|
|
|
|
|
""))))))))
|
2016-06-07 16:36:34 +02:00
|
|
|
|
(inputs
|
2022-08-11 18:24:16 +02:00
|
|
|
|
(list acl
|
|
|
|
|
attr
|
|
|
|
|
fuse
|
|
|
|
|
libxml2
|
|
|
|
|
eudev
|
|
|
|
|
libpciaccess
|
|
|
|
|
gnutls
|
|
|
|
|
dbus
|
|
|
|
|
libpcap
|
|
|
|
|
libnl
|
|
|
|
|
libssh2 ;optional
|
|
|
|
|
libtirpc ;for <rpc/rpc.h>
|
|
|
|
|
`(,util-linux "lib")
|
|
|
|
|
lvm2 ;for libdevmapper
|
|
|
|
|
curl
|
|
|
|
|
openssl
|
|
|
|
|
readline
|
|
|
|
|
cyrus-sasl
|
2022-12-04 01:00:52 +01:00
|
|
|
|
yajl
|
2022-08-11 18:24:16 +02:00
|
|
|
|
audit
|
|
|
|
|
dmidecode
|
|
|
|
|
dnsmasq
|
|
|
|
|
ebtables
|
|
|
|
|
parted
|
|
|
|
|
iproute
|
|
|
|
|
iptables))
|
2016-06-07 16:36:34 +02:00
|
|
|
|
(native-inputs
|
2022-08-11 18:24:16 +02:00
|
|
|
|
(list bash-completion
|
|
|
|
|
gettext-minimal
|
|
|
|
|
libxslt
|
|
|
|
|
perl
|
|
|
|
|
pkg-config
|
|
|
|
|
polkit
|
|
|
|
|
python-wrapper
|
|
|
|
|
python-docutils ;for rst2html
|
|
|
|
|
rpcsvc-proto)) ;for rpcgen
|
2017-08-02 07:10:19 +02:00
|
|
|
|
(home-page "https://libvirt.org")
|
2016-06-07 16:36:34 +02:00
|
|
|
|
(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.")
|
2018-07-24 16:43:54 +02:00
|
|
|
|
(license license:lgpl2.1+)))
|
2016-07-11 23:17:53 +02:00
|
|
|
|
|
|
|
|
|
(define-public libvirt-glib
|
|
|
|
|
(package
|
|
|
|
|
(name "libvirt-glib")
|
2021-03-20 22:31:24 +01:00
|
|
|
|
(version "4.0.0")
|
2016-07-11 23:17:53 +02:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "ftp://libvirt.org/libvirt/glib/"
|
2021-03-20 22:31:24 +01:00
|
|
|
|
"libvirt-glib-" version ".tar.xz"))
|
2016-07-11 23:17:53 +02:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2021-03-20 22:31:24 +01:00
|
|
|
|
"1gdcvqz88qkp402zra9csc6391f2xki1270x683n6ixakl3gf8w4"))))
|
|
|
|
|
(build-system meson-build-system)
|
2016-07-11 23:17:53 +02:00
|
|
|
|
(inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list openssl cyrus-sasl lvm2 ; for libdevmapper
|
2022-12-04 01:00:52 +01:00
|
|
|
|
yajl))
|
2016-07-11 23:17:53 +02:00
|
|
|
|
(native-inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list pkg-config intltool
|
|
|
|
|
`(,glib "bin") vala))
|
2019-07-24 16:37:57 +02:00
|
|
|
|
(propagated-inputs
|
|
|
|
|
;; ‘Required:’ by the installed .pc files.
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list glib libvirt libxml2 gobject-introspection))
|
2017-09-05 00:22:19 +02:00
|
|
|
|
(home-page "https://libvirt.org")
|
2016-07-11 23:17:53 +02:00
|
|
|
|
(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
|
|
|
|
|
")
|
2018-07-24 16:43:54 +02:00
|
|
|
|
(license license:lgpl2.1+)))
|
2016-07-11 23:18:15 +02:00
|
|
|
|
|
|
|
|
|
(define-public python-libvirt
|
|
|
|
|
(package
|
|
|
|
|
(name "python-libvirt")
|
2022-08-11 18:23:16 +02:00
|
|
|
|
(version "8.6.0")
|
2019-07-02 23:49:59 +02:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "https://libvirt.org/sources/python/libvirt-python-"
|
|
|
|
|
version ".tar.gz"))
|
|
|
|
|
(sha256
|
2022-08-11 18:23:16 +02:00
|
|
|
|
(base32 "0wa86jliq71x60dd4vyzsj4lcrb82i5qsgxz9azvwgsgi9j9mx41"))))
|
2016-07-11 23:18:15 +02:00
|
|
|
|
(build-system python-build-system)
|
|
|
|
|
(inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list libvirt))
|
gnu: Fix python inputs, part 5: some inputs become propagated-inputs
* gnu/packages/openstack.scm
(python-os-client-config)[inputs] change to
[native-inputs]. [propagated-inputs]: New element, move python-appdirs,
python-pyyaml here.
(python-git-review)[propagated-inputs]: New element, move python-requests
here.
* gnu/packages/python.scm
(python-rpy2)[propagated-inputs]: New element, move python-six here.
(python-xcffib)[inputs] move python-six to [propagated-inputs].
(python-flake8)[propagated-inputs]: New element, move python-pep8,
python-pyflakes, python-mccabe here.
(python-flake8-2.2.4)[propagated-inputs]: New element, move python-pep8,
python-pyflakes, python-mccabe here.
(python-pytest)[propagated-inputs]: New element, move python-py here.
(python-tox)[propagated-inputs]: New element, move all inputs except of
python-pytest here.
(python-botocore)[propagated-inputs]: New element, move python-dateutil,
python-docutils, python-jmespath here.
(awscli)[propagated-inputs]: New element, move python-colorama,
python-botocore, python-s3transfer, python-docutils, python-rsa here.
(python-mako)[propagated-inputs]: New element, move python-markupsafe here.
* gnu/packages/qemu.scm(python-libvirt)[propagated-inputs]: New element, move
python-lxml here.
2016-10-13 14:05:11 +02:00
|
|
|
|
(propagated-inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list python-lxml))
|
2016-07-11 23:18:15 +02:00
|
|
|
|
(native-inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list pkg-config python-pytest))
|
2017-09-05 00:22:19 +02:00
|
|
|
|
(home-page "https://libvirt.org")
|
2016-07-11 23:18:15 +02:00
|
|
|
|
(synopsis "Python bindings to libvirt")
|
|
|
|
|
(description "This package provides Python bindings to the libvirt
|
|
|
|
|
virtualization library.")
|
2022-08-11 18:26:18 +02:00
|
|
|
|
(properties
|
|
|
|
|
'((upstream-name . "libvirt-python")))
|
2018-07-24 16:43:54 +02:00
|
|
|
|
(license license:lgpl2.1+)))
|
2016-07-11 23:18:15 +02:00
|
|
|
|
|
2016-06-15 09:22:42 +02:00
|
|
|
|
(define-public virt-manager
|
|
|
|
|
(package
|
|
|
|
|
(name "virt-manager")
|
2022-11-12 19:22:27 +01:00
|
|
|
|
(version "4.1.0")
|
2016-06-15 09:22:42 +02:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "https://virt-manager.org/download/sources"
|
|
|
|
|
"/virt-manager/virt-manager-"
|
|
|
|
|
version ".tar.gz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-11-12 19:22:27 +01:00
|
|
|
|
"18lhlnd3gmyzhbnjc16gdyzhjcd33prlxnca4xlidiidngbq21lm"))))
|
2016-06-15 09:22:42 +02:00
|
|
|
|
(build-system python-build-system)
|
|
|
|
|
(arguments
|
2019-02-15 03:43:29 +01:00
|
|
|
|
`(#:use-setuptools? #f ; uses custom distutils 'install' command
|
2020-04-10 17:53:37 +02:00
|
|
|
|
#:tests? #f ; TODO The tests currently fail
|
|
|
|
|
; RuntimeError: Loop condition wasn't
|
|
|
|
|
; met
|
2017-10-15 17:47:16 +02:00
|
|
|
|
#:imported-modules ((guix build glib-or-gtk-build-system)
|
|
|
|
|
,@%python-build-system-modules)
|
2016-06-15 09:22:42 +02:00
|
|
|
|
#:modules ((ice-9 match)
|
|
|
|
|
(srfi srfi-26)
|
|
|
|
|
(guix build python-build-system)
|
2017-10-15 17:47:16 +02:00
|
|
|
|
((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
|
2016-06-15 09:22:42 +02:00
|
|
|
|
(guix build utils))
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'fix-setup
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
2019-11-02 00:45:48 +01:00
|
|
|
|
(substitute* "virtinst/buildconfig.py"
|
2016-06-15 09:22:42 +02:00
|
|
|
|
(("/usr") (assoc-ref outputs "out")))
|
|
|
|
|
#t))
|
2017-10-15 22:03:27 +02:00
|
|
|
|
(add-after 'unpack 'fix-default-uri
|
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
2019-02-15 03:43:29 +01:00
|
|
|
|
;; Xen is not available for now - so only patch qemu.
|
2019-11-02 00:45:48 +01:00
|
|
|
|
(substitute* "virtManager/createconn.py"
|
2021-07-16 16:50:56 +02:00
|
|
|
|
(("/usr(/bin/qemu-system-[a-zA-Z0-9_-]+)" _ suffix)
|
|
|
|
|
(search-input-file inputs suffix)))
|
2017-10-15 22:03:27 +02:00
|
|
|
|
#t))
|
2016-06-15 09:22:42 +02:00
|
|
|
|
(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))
|
2017-10-15 17:47:16 +02:00
|
|
|
|
#t))
|
2020-04-10 17:53:37 +02:00
|
|
|
|
(replace 'check
|
|
|
|
|
(lambda* (#:key tests? #:allow-other-keys)
|
|
|
|
|
(when tests?
|
|
|
|
|
(setenv "HOME" "/tmp")
|
2021-03-20 22:31:25 +01:00
|
|
|
|
(setenv "XDG_CACHE_HOME" "/tmp")
|
2020-04-10 17:53:37 +02:00
|
|
|
|
(system "Xvfb :1 &")
|
|
|
|
|
(setenv "DISPLAY" ":1")
|
|
|
|
|
;; Dogtail requires that Assistive Technology support be enabled
|
|
|
|
|
(setenv "GTK_MODULES" "gail:atk-bridge")
|
2021-03-20 22:31:25 +01:00
|
|
|
|
(invoke "dbus-run-session" "--" "pytest" "--uitests"))
|
2020-04-10 17:53:37 +02:00
|
|
|
|
#t))
|
2017-10-15 17:47:16 +02:00
|
|
|
|
(add-after 'install 'glib-or-gtk-compile-schemas
|
|
|
|
|
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
|
2021-08-10 11:18:33 +02:00
|
|
|
|
(add-after 'wrap 'glib-or-gtk-wrap
|
2017-10-15 17:47:16 +02:00
|
|
|
|
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
|
2016-06-15 09:22:42 +02:00
|
|
|
|
(inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list dconf
|
|
|
|
|
gtk+
|
|
|
|
|
gtk-vnc
|
2022-09-16 01:22:16 +02:00
|
|
|
|
gtksourceview-4
|
2021-12-13 17:18:24 +01:00
|
|
|
|
libvirt
|
|
|
|
|
libvirt-glib
|
|
|
|
|
libosinfo
|
|
|
|
|
vte
|
|
|
|
|
python-libvirt
|
|
|
|
|
python-requests
|
|
|
|
|
python-pycairo
|
|
|
|
|
python-pygobject
|
|
|
|
|
python-libxml2
|
|
|
|
|
spice-gtk))
|
2016-06-15 09:22:42 +02:00
|
|
|
|
;; virt-manager searches for qemu-img or kvm-img in the PATH.
|
|
|
|
|
(propagated-inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list qemu))
|
2016-06-15 09:22:42 +02:00
|
|
|
|
(native-inputs
|
2019-02-15 03:43:29 +01:00
|
|
|
|
`(("glib" ,glib "bin") ; glib-compile-schemas
|
2020-02-16 20:21:07 +01:00
|
|
|
|
("gobject-introspection" ,gobject-introspection)
|
2016-10-31 22:44:30 +01:00
|
|
|
|
("gtk+" ,gtk+ "bin") ; gtk-update-icon-cache
|
2016-06-15 09:22:42 +02:00
|
|
|
|
("perl" ,perl) ; pod2man
|
2020-04-10 17:53:37 +02:00
|
|
|
|
("intltool" ,intltool)
|
2021-03-20 22:31:25 +01:00
|
|
|
|
("rst2man" ,python-docutils)
|
2020-04-10 17:53:37 +02:00
|
|
|
|
;; The following are required for running the tests
|
2021-03-20 22:31:25 +01:00
|
|
|
|
;; ("python-pytest" ,python-pytest)
|
2020-04-10 17:53:37 +02:00
|
|
|
|
;; ("python-dogtail" ,python-dogtail)
|
|
|
|
|
;; ("xvfb" ,xorg-server-for-tests)
|
|
|
|
|
;; ("dbus" ,dbus)
|
|
|
|
|
;; ("at-spi2-core" ,at-spi2-core)
|
|
|
|
|
;; ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
|
|
|
|
|
))
|
2016-06-15 09:22:42 +02:00
|
|
|
|
(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.")
|
2018-07-24 16:43:54 +02:00
|
|
|
|
(license license:gpl2+)))
|
2017-10-18 09:37:04 +02:00
|
|
|
|
|
|
|
|
|
(define-public criu
|
|
|
|
|
(package
|
|
|
|
|
(name "criu")
|
2022-10-16 02:00:01 +02:00
|
|
|
|
(version "3.17.1")
|
2021-10-21 14:35:37 +02:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/checkpoint-restore/criu")
|
|
|
|
|
(commit (string-append "v" version))))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
2022-10-16 02:00:01 +02:00
|
|
|
|
(base32 "0ff3xfcf0wfz02fc0qbj56mci1a0xdl8jzaihaw6qyjvgrsiq7fh"))))
|
2017-10-18 09:37:04 +02:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:test-target "test"
|
|
|
|
|
#:tests? #f ; tests require mounting as root
|
|
|
|
|
#:make-flags
|
|
|
|
|
(list (string-append "PREFIX=" (assoc-ref %outputs "out"))
|
2022-05-22 02:00:01 +02:00
|
|
|
|
(string-append "LIBDIR=$(PREFIX)/lib")
|
|
|
|
|
;; Upstream mistakenly puts binaries in /var. Now, in practice no
|
|
|
|
|
;; plugins are built, but the build system still fails otherwise.
|
|
|
|
|
(string-append "PLUGINDIR=$(LIBDIR)/criu")
|
2021-10-23 22:53:12 +02:00
|
|
|
|
(string-append "ASCIIDOC="
|
|
|
|
|
(search-input-file %build-inputs
|
|
|
|
|
"/bin/asciidoc"))
|
2021-10-21 15:38:46 +02:00
|
|
|
|
(string-append "PYTHON=python3")
|
2021-10-23 22:53:12 +02:00
|
|
|
|
(string-append "XMLTO="
|
2021-12-15 07:03:05 +01:00
|
|
|
|
(search-input-file %build-inputs
|
2021-10-23 22:53:12 +02:00
|
|
|
|
"/bin/xmlto")))
|
2017-10-18 09:37:04 +02:00
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
2021-10-21 14:44:01 +02:00
|
|
|
|
(delete 'configure) ; no configure script
|
|
|
|
|
(add-after 'unpack 'fix-documentation
|
2019-12-11 13:31:09 +01:00
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
2017-10-18 09:37:04 +02:00
|
|
|
|
(substitute* "Documentation/Makefile"
|
2019-12-11 13:31:09 +01:00
|
|
|
|
(("-m custom.xsl")
|
|
|
|
|
(string-append
|
|
|
|
|
"-m custom.xsl --skip-validation -x "
|
|
|
|
|
(assoc-ref inputs "docbook-xsl") "/xml/xsl/"
|
|
|
|
|
,(package-name docbook-xsl) "-"
|
|
|
|
|
,(package-version docbook-xsl)
|
2021-10-03 23:32:03 +02:00
|
|
|
|
"/manpages/docbook.xsl")))))
|
2019-01-08 11:29:24 +01:00
|
|
|
|
(add-after 'unpack 'hardcode-variables
|
2022-05-22 02:00:01 +02:00
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
2019-01-08 11:29:24 +01:00
|
|
|
|
;; Hardcode arm version detection
|
|
|
|
|
(substitute* "Makefile"
|
2022-05-22 02:00:01 +02:00
|
|
|
|
(("ARMV.*:=.*") "ARMV := 7\n"))
|
|
|
|
|
;; Hard-code the correct PLUGINDIR above.
|
|
|
|
|
(substitute* "criu/include/plugin.h"
|
|
|
|
|
(("/var") (string-append (assoc-ref outputs "out"))))
|
|
|
|
|
))
|
2017-10-18 09:37:04 +02:00
|
|
|
|
(add-before 'build 'fix-symlink
|
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
|
|
|
;; The file 'images/google/protobuf/descriptor.proto' points to
|
|
|
|
|
;; /usr/include/..., which obviously does not exist.
|
|
|
|
|
(let* ((file "google/protobuf/descriptor.proto")
|
|
|
|
|
(target (string-append "images/" file))
|
2021-07-16 16:01:49 +02:00
|
|
|
|
(source (search-input-file
|
|
|
|
|
inputs
|
|
|
|
|
(string-append "include/" file))))
|
2017-10-18 09:37:04 +02:00
|
|
|
|
(delete-file target)
|
2021-10-03 23:32:03 +02:00
|
|
|
|
(symlink source target))))
|
2017-10-18 09:37:04 +02:00
|
|
|
|
(add-after 'install 'wrap
|
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
|
;; Make sure 'crit' runs with the correct PYTHONPATH.
|
2021-10-21 15:38:46 +02:00
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(site (string-append out "/lib/python"
|
|
|
|
|
,(version-major+minor
|
|
|
|
|
(package-version python))
|
|
|
|
|
"/site-packages"))
|
2021-10-31 11:47:14 +01:00
|
|
|
|
(path (getenv "GUIX_PYTHONPATH")))
|
2017-10-18 09:37:04 +02:00
|
|
|
|
(wrap-program (string-append out "/bin/crit")
|
2021-10-31 11:47:14 +01:00
|
|
|
|
`("GUIX_PYTHONPATH" ":" prefix (,site ,path))))))
|
2021-10-03 23:52:39 +02:00
|
|
|
|
(add-after 'install 'delete-static-libraries
|
|
|
|
|
;; Not building/installing these at all doesn't seem to be supported.
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(let ((out (assoc-ref outputs "out")))
|
|
|
|
|
(for-each delete-file (find-files out "\\.a$"))))))))
|
2017-10-18 09:37:04 +02:00
|
|
|
|
(inputs
|
|
|
|
|
`(("protobuf" ,protobuf)
|
2021-10-21 15:38:46 +02:00
|
|
|
|
("python" ,python)
|
|
|
|
|
("python-protobuf" ,python-protobuf)
|
2017-10-18 09:37:04 +02:00
|
|
|
|
("iproute" ,iproute)
|
|
|
|
|
("libaio" ,libaio)
|
|
|
|
|
("libcap" ,libcap)
|
|
|
|
|
("libnet" ,libnet)
|
2019-12-11 13:31:09 +01:00
|
|
|
|
("libnl" ,libnl)
|
2020-11-13 01:41:37 +01:00
|
|
|
|
("libbsd" ,libbsd)
|
|
|
|
|
("nftables" ,nftables)))
|
2017-10-18 09:37:04 +02:00
|
|
|
|
(native-inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list pkg-config
|
|
|
|
|
perl
|
|
|
|
|
asciidoc
|
|
|
|
|
xmlto
|
|
|
|
|
docbook-xml
|
|
|
|
|
docbook-xsl))
|
2021-12-22 11:53:49 +01:00
|
|
|
|
(propagated-inputs
|
|
|
|
|
;; included by 'rpc.pb-c.h'
|
|
|
|
|
(list protobuf-c))
|
2017-10-18 09:37:04 +02:00
|
|
|
|
(home-page "https://criu.org")
|
|
|
|
|
(synopsis "Checkpoint and restore in user space")
|
|
|
|
|
(description "Using this tool, you can freeze a running application (or
|
|
|
|
|
part of it) and checkpoint it to a hard drive as a collection of files. You
|
|
|
|
|
can then use the files to restore and run the application from the point it
|
|
|
|
|
was frozen at. The distinctive feature of the CRIU project is that it is
|
|
|
|
|
mainly implemented in user space.")
|
|
|
|
|
;; The project is licensed under GPLv2; files in the lib/ directory are
|
|
|
|
|
;; LGPLv2.1.
|
2018-07-24 16:43:54 +02:00
|
|
|
|
(license (list license:gpl2 license:lgpl2.1))))
|
2017-12-05 08:19:21 +01:00
|
|
|
|
|
2022-05-05 19:21:41 +02:00
|
|
|
|
(define-public python-qemu-qmp
|
|
|
|
|
(package
|
|
|
|
|
(name "python-qemu-qmp")
|
|
|
|
|
(version "0.0.0a0")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (pypi-uri "qemu.qmp" version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32 "1rpsbiwvngij6fjcc5cx1azcc4dxmm080crr31wc7jrm7i61p7c2"))))
|
|
|
|
|
(build-system python-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
(list
|
|
|
|
|
#:phases
|
|
|
|
|
#~(modify-phases %standard-phases
|
|
|
|
|
(replace 'check
|
|
|
|
|
(lambda* (#:key tests? #:allow-other-keys)
|
|
|
|
|
(when tests?
|
|
|
|
|
;; The Avocado test runner insists on writing stuff to HOME.
|
|
|
|
|
(setenv "HOME" "/tmp")
|
|
|
|
|
;; The mypy tests fail (see:
|
|
|
|
|
;; https://gitlab.com/jsnow/qemu.qmp/-/issues/1).
|
|
|
|
|
(delete-file "tests/mypy.sh")
|
|
|
|
|
(invoke "avocado" "--show=all" "run" "tests")))))))
|
|
|
|
|
(native-inputs
|
|
|
|
|
(list python-avocado-framework
|
|
|
|
|
python-setuptools-scm
|
|
|
|
|
python-flake8
|
|
|
|
|
python-isort
|
|
|
|
|
python-pylint))
|
|
|
|
|
(propagated-inputs
|
|
|
|
|
(list python-pygments
|
|
|
|
|
python-urwid
|
|
|
|
|
python-urwid-readline))
|
|
|
|
|
(home-page "https://gitlab.com/jsnow/qemu.qmp")
|
|
|
|
|
(synopsis "QEMU Monitor Protocol Python library")
|
|
|
|
|
(description "@code{emu.qmp} is a
|
|
|
|
|
@url{https://gitlab.com/qemu-project/qemu/-/blob/master/docs/interop/qmp-intro.txt,
|
|
|
|
|
QEMU Monitor Protocol (QMP)} library written in Python. It is used to send
|
|
|
|
|
QMP messages to running QEMU emulators. It can be used to communicate with
|
|
|
|
|
QEMU emulators, the QEMU Guest Agent (QGA), the QEMU Storage Daemon (QSD), or
|
|
|
|
|
any other utility or application that speaks QMP.")
|
|
|
|
|
(license license:gpl2+)))
|
|
|
|
|
|
2017-12-05 08:19:21 +01:00
|
|
|
|
(define-public qmpbackup
|
|
|
|
|
(package
|
|
|
|
|
(name "qmpbackup")
|
2022-04-30 05:50:17 +02:00
|
|
|
|
(version "0.23")
|
2017-12-05 08:19:21 +01:00
|
|
|
|
(source (origin
|
2019-11-13 20:14:09 +01:00
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
2022-04-30 05:50:17 +02:00
|
|
|
|
(url "https://github.com/abbbi/qmpbackup")
|
|
|
|
|
(commit (string-append "v" version))))
|
2019-11-13 20:14:09 +01:00
|
|
|
|
(file-name (git-file-name name version))
|
2017-12-05 08:19:21 +01:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-04-30 05:50:17 +02:00
|
|
|
|
"0x9v81z0b2qr2y6m46rfnl4kl5jnixsdrl1c790iwl6pq9kzzvzg"))))
|
2017-12-05 08:19:21 +01:00
|
|
|
|
(build-system python-build-system)
|
2022-04-30 05:50:17 +02:00
|
|
|
|
;; The test suite requires to download a 241 MiB QEMU image; skip it.
|
|
|
|
|
(arguments (list #:tests? #f))
|
|
|
|
|
(inputs (list python-qemu-qmp))
|
2017-12-05 08:19:21 +01:00
|
|
|
|
(home-page "https://github.com/abbbi/qmpbackup")
|
|
|
|
|
(synopsis "Backup and restore QEMU machines")
|
2022-04-30 05:50:17 +02:00
|
|
|
|
(description "@command{qmpbackup} is designed to create and restore full
|
|
|
|
|
and incremental backups of running QEMU virtual machines via QMP, the QEMU
|
2017-12-05 08:19:21 +01:00
|
|
|
|
Machine Protocol.")
|
2018-07-24 16:43:54 +02:00
|
|
|
|
(license license:gpl3+)))
|
2017-12-15 16:08:30 +01:00
|
|
|
|
|
2019-03-04 16:18:17 +01:00
|
|
|
|
(define-public looking-glass-client
|
gnu: looking-glass-client: Update to B5.
* gnu/packages/virtualization.scm (looking-glass-client)
[version]: Update to B5.
[source]: Delete snippet and enable recursive fetch.
[inputs]: Add bash-minimal, freetype, gmp, libglvnd, libiberty, libx11,
libxcursor, libxfixes, libxi, libxinerama, libxkbcommon, libxpresent,
libxrandr, libxscrnsaver, openssl, wayland-protocols, zlib.
[phases]: Delete add-missing-include phase and add wrapper phase.
[home-page]: Update URL.
2022-01-01 18:01:33 +01:00
|
|
|
|
(package
|
|
|
|
|
(name "looking-glass-client")
|
|
|
|
|
(version "B5")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
2019-02-25 15:55:09 +01:00
|
|
|
|
(method git-fetch)
|
gnu: looking-glass-client: Update to B5.
* gnu/packages/virtualization.scm (looking-glass-client)
[version]: Update to B5.
[source]: Delete snippet and enable recursive fetch.
[inputs]: Add bash-minimal, freetype, gmp, libglvnd, libiberty, libx11,
libxcursor, libxfixes, libxi, libxinerama, libxkbcommon, libxpresent,
libxrandr, libxscrnsaver, openssl, wayland-protocols, zlib.
[phases]: Delete add-missing-include phase and add wrapper phase.
[home-page]: Update URL.
2022-01-01 18:01:33 +01:00
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/gnif/LookingGlass")
|
|
|
|
|
(commit version)
|
|
|
|
|
(recursive? #t)))
|
2019-02-25 15:55:09 +01:00
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
gnu: looking-glass-client: Update to B5.
* gnu/packages/virtualization.scm (looking-glass-client)
[version]: Update to B5.
[source]: Delete snippet and enable recursive fetch.
[inputs]: Add bash-minimal, freetype, gmp, libglvnd, libiberty, libx11,
libxcursor, libxfixes, libxi, libxinerama, libxkbcommon, libxpresent,
libxrandr, libxscrnsaver, openssl, wayland-protocols, zlib.
[phases]: Delete add-missing-include phase and add wrapper phase.
[home-page]: Update URL.
2022-01-01 18:01:33 +01:00
|
|
|
|
"09mn544x5hg1z31l92ksk7fi7yj9r8xdk0dcl9fk56ivcr452ylm"))))
|
|
|
|
|
(build-system cmake-build-system)
|
|
|
|
|
(inputs
|
|
|
|
|
(list bash-minimal
|
|
|
|
|
fontconfig
|
|
|
|
|
freetype
|
|
|
|
|
glu
|
|
|
|
|
gmp
|
|
|
|
|
libglvnd
|
|
|
|
|
libiberty
|
|
|
|
|
libx11
|
|
|
|
|
libxcursor
|
|
|
|
|
libxfixes
|
|
|
|
|
libxi
|
|
|
|
|
libxinerama
|
|
|
|
|
libxkbcommon
|
|
|
|
|
libxpresent
|
|
|
|
|
libxrandr
|
|
|
|
|
libxscrnsaver
|
|
|
|
|
mesa
|
|
|
|
|
openssl
|
|
|
|
|
sdl2
|
|
|
|
|
sdl2-ttf
|
|
|
|
|
spice-protocol
|
|
|
|
|
wayland
|
|
|
|
|
wayland-protocols
|
|
|
|
|
`(,zlib "static")))
|
|
|
|
|
(native-inputs (list libconfig nettle pkg-config))
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:tests? #f ;; No tests are available.
|
|
|
|
|
#:make-flags '("CC=gcc")
|
|
|
|
|
#:phases (modify-phases %standard-phases
|
|
|
|
|
(add-before 'configure 'chdir-to-client
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(chdir "client")
|
|
|
|
|
#t))
|
|
|
|
|
(replace 'install
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(install-file "looking-glass-client"
|
|
|
|
|
(string-append (assoc-ref outputs "out")
|
|
|
|
|
"/bin"))
|
|
|
|
|
#t))
|
|
|
|
|
(add-after 'install 'wrapper
|
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
|
(wrap-program
|
|
|
|
|
(string-append (assoc-ref outputs "out")
|
|
|
|
|
"/bin/looking-glass-client")
|
|
|
|
|
`("LD_LIBRARY_PATH" ":" prefix
|
|
|
|
|
,(map (lambda (name)
|
|
|
|
|
(let ((input (assoc-ref inputs name)))
|
|
|
|
|
(string-append input "/lib")))
|
|
|
|
|
'("gmp"
|
|
|
|
|
"libxi"
|
|
|
|
|
"nettle"
|
|
|
|
|
"mesa"
|
|
|
|
|
"wayland"
|
|
|
|
|
"fontconfig-minimal"
|
|
|
|
|
"freetype"
|
|
|
|
|
"libx11"
|
|
|
|
|
"libxfixes"
|
|
|
|
|
"libxscrnsaver"
|
|
|
|
|
"libxinerama"))))
|
|
|
|
|
#t)))))
|
|
|
|
|
(home-page "https://looking-glass.io/")
|
|
|
|
|
(synopsis "KVM Frame Relay (KVMFR) implementation")
|
|
|
|
|
(description "Looking Glass allows the use of a KVM (Kernel-based Virtual
|
2017-12-15 16:08:30 +01:00
|
|
|
|
Machine) configured for VGA PCI Pass-through without an attached physical
|
gnu: looking-glass-client: Update to B5.
* gnu/packages/virtualization.scm (looking-glass-client)
[version]: Update to B5.
[source]: Delete snippet and enable recursive fetch.
[inputs]: Add bash-minimal, freetype, gmp, libglvnd, libiberty, libx11,
libxcursor, libxfixes, libxi, libxinerama, libxkbcommon, libxpresent,
libxrandr, libxscrnsaver, openssl, wayland-protocols, zlib.
[phases]: Delete add-missing-include phase and add wrapper phase.
[home-page]: Update URL.
2022-01-01 18:01:33 +01:00
|
|
|
|
monitor, keyboard or mouse. It displays the VM's rendered contents on your
|
|
|
|
|
main monitor/GPU.")
|
|
|
|
|
;; This package requires SSE instructions.
|
|
|
|
|
(supported-systems '("i686-linux" "x86_64-linux"))
|
|
|
|
|
(license license:gpl2+)))
|
2018-04-22 13:30:08 +02:00
|
|
|
|
|
|
|
|
|
(define-public runc
|
|
|
|
|
(package
|
|
|
|
|
(name "runc")
|
2022-05-10 01:35:13 +02:00
|
|
|
|
(version "1.1.1")
|
2018-04-22 13:30:08 +02:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append
|
|
|
|
|
"https://github.com/opencontainers/runc/releases/"
|
|
|
|
|
"download/v" version "/runc.tar.xz"))
|
2019-02-11 21:07:29 +01:00
|
|
|
|
(file-name (string-append name "-" version ".tar.xz"))
|
2018-04-22 13:30:08 +02:00
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-05-10 01:35:13 +02:00
|
|
|
|
"0jx56x49dgkygdbrfb3pmxycy1n37arj97jra8n422dj36xz1hbm"))))
|
2018-04-22 13:30:08 +02:00
|
|
|
|
(build-system go-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:import-path "github.com/opencontainers/runc"
|
|
|
|
|
#:install-source? #f
|
2018-04-26 03:37:00 +02:00
|
|
|
|
;; XXX: 20/139 tests fail due to missing /var, cgroups and apparmor in
|
|
|
|
|
;; the build environment.
|
|
|
|
|
#:tests? #f
|
2018-04-22 13:30:08 +02:00
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(replace 'build
|
|
|
|
|
(lambda* (#:key import-path #:allow-other-keys)
|
2020-10-16 14:32:50 +02:00
|
|
|
|
(with-directory-excursion (string-append "src/" import-path)
|
2021-02-23 06:03:01 +01:00
|
|
|
|
(invoke "make" "all" "man"))))
|
|
|
|
|
(replace 'check
|
|
|
|
|
(lambda* (#:key tests? #:allow-other-keys)
|
|
|
|
|
(when tests?
|
|
|
|
|
(invoke "make" "localunittest"))))
|
2018-04-22 13:30:08 +02:00
|
|
|
|
(replace 'install
|
2020-10-16 14:32:50 +02:00
|
|
|
|
(lambda* (#:key import-path outputs #:allow-other-keys)
|
|
|
|
|
(with-directory-excursion (string-append "src/" import-path)
|
|
|
|
|
(let ((out (assoc-ref outputs "out")))
|
2021-02-23 06:03:01 +01:00
|
|
|
|
(invoke "make" "install" "install-bash" "install-man"
|
2020-10-16 14:32:50 +02:00
|
|
|
|
(string-append "PREFIX=" out)))))))))
|
2018-04-22 13:30:08 +02:00
|
|
|
|
(native-inputs
|
2022-05-10 01:35:13 +02:00
|
|
|
|
(list go-github-com-go-md2man pkg-config))
|
2018-04-22 13:30:08 +02:00
|
|
|
|
(inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list libseccomp))
|
2018-04-22 13:30:08 +02:00
|
|
|
|
(synopsis "Open container initiative runtime")
|
2021-02-23 06:03:01 +01:00
|
|
|
|
(home-page "https://opencontainers.org/")
|
2018-04-22 13:30:08 +02:00
|
|
|
|
(description
|
|
|
|
|
"@command{runc} is a command line client for running applications
|
|
|
|
|
packaged according to the
|
|
|
|
|
@uref{https://github.com/opencontainers/runtime-spec/blob/master/spec.md, Open
|
|
|
|
|
Container Initiative (OCI) format} and is a compliant implementation of the
|
|
|
|
|
Open Container Initiative specification.")
|
2018-07-24 16:43:54 +02:00
|
|
|
|
(license license:asl2.0)))
|
2018-06-09 13:00:57 +02:00
|
|
|
|
|
|
|
|
|
(define-public umoci
|
|
|
|
|
(package
|
|
|
|
|
(name "umoci")
|
2021-04-06 21:00:16 +02:00
|
|
|
|
(version "0.4.7")
|
2020-06-30 10:42:23 +02:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append
|
|
|
|
|
"https://github.com/opencontainers/umoci/releases/download/v"
|
|
|
|
|
version "/umoci.tar.xz"))
|
|
|
|
|
(file-name (string-append "umoci-" version ".tar.xz"))
|
|
|
|
|
(sha256
|
2021-04-06 21:00:16 +02:00
|
|
|
|
(base32 "0fvljj9k4f83wbqzd8nbijz0p1zaq633f8yxyvl5sy3wjf03ffk9"))))
|
2018-06-09 13:00:57 +02:00
|
|
|
|
(build-system go-build-system)
|
|
|
|
|
(arguments
|
2020-06-30 10:42:23 +02:00
|
|
|
|
'(#:import-path "github.com/opencontainers/umoci"
|
2018-06-09 13:00:57 +02:00
|
|
|
|
#:install-source? #f
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(replace 'unpack
|
|
|
|
|
(lambda* (#:key source import-path #:allow-other-keys)
|
|
|
|
|
;; Unpack the tarball into 'umoci' instead of "runc-${version}".
|
|
|
|
|
(let ((dest (string-append "src/" import-path)))
|
|
|
|
|
(mkdir-p dest)
|
|
|
|
|
(invoke "tar" "-C" (string-append "src/" import-path)
|
|
|
|
|
"--strip-components=1"
|
|
|
|
|
"-xvf" source))))
|
|
|
|
|
(replace 'build
|
|
|
|
|
(lambda* (#:key import-path #:allow-other-keys)
|
2020-10-16 14:32:50 +02:00
|
|
|
|
(with-directory-excursion (string-append "src/" import-path)
|
|
|
|
|
;; TODO: build manpages with 'go-md2man'.
|
|
|
|
|
(invoke "make" "SHELL=bash"))))
|
2018-06-09 13:00:57 +02:00
|
|
|
|
(replace 'install
|
2020-10-16 14:32:50 +02:00
|
|
|
|
(lambda* (#:key import-path outputs #:allow-other-keys)
|
2018-06-09 13:00:57 +02:00
|
|
|
|
(let* ((out (assoc-ref outputs "out"))
|
|
|
|
|
(bindir (string-append out "/bin")))
|
2020-10-16 14:32:50 +02:00
|
|
|
|
(install-file (string-append "src/" import-path "/umoci")
|
|
|
|
|
bindir)
|
2018-06-09 13:00:57 +02:00
|
|
|
|
#t))))))
|
|
|
|
|
(home-page "https://umo.ci/")
|
|
|
|
|
(synopsis "Tool for modifying Open Container images")
|
|
|
|
|
(description
|
|
|
|
|
"@command{umoci} is a tool that allows for high-level modification of an
|
|
|
|
|
Open Container Initiative (OCI) image layout and its tagged images.")
|
2018-07-24 16:43:54 +02:00
|
|
|
|
(license license:asl2.0)))
|
2018-06-09 13:01:27 +02:00
|
|
|
|
|
|
|
|
|
(define-public skopeo
|
|
|
|
|
(package
|
|
|
|
|
(name "skopeo")
|
2021-04-21 00:29:59 +02:00
|
|
|
|
(version "1.2.3")
|
2018-06-09 13:01:27 +02:00
|
|
|
|
(source (origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
2020-10-01 14:23:21 +02:00
|
|
|
|
(url "https://github.com/containers/skopeo")
|
2018-06-09 13:01:27 +02:00
|
|
|
|
(commit (string-append "v" version))))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2021-04-21 00:29:59 +02:00
|
|
|
|
"0n22sdif437ddg5ch0ipwim3fg0n6ihc9bfi52qkhy3r1grz04hs"))))
|
2018-06-09 13:01:27 +02:00
|
|
|
|
(build-system go-build-system)
|
|
|
|
|
(native-inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list pkg-config go-github-com-go-md2man))
|
2018-06-09 13:01:27 +02:00
|
|
|
|
(inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list btrfs-progs
|
|
|
|
|
eudev
|
|
|
|
|
libassuan
|
|
|
|
|
libselinux
|
|
|
|
|
libostree
|
|
|
|
|
lvm2
|
|
|
|
|
glib
|
|
|
|
|
gpgme))
|
2018-06-09 13:01:27 +02:00
|
|
|
|
(arguments
|
2020-10-01 14:23:21 +02:00
|
|
|
|
'(#:import-path "github.com/containers/skopeo"
|
2018-06-09 13:01:27 +02:00
|
|
|
|
#:install-source? #f
|
2020-10-16 14:32:50 +02:00
|
|
|
|
#:tests? #f ; The tests require Docker
|
2018-06-09 13:01:27 +02:00
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(replace 'build
|
|
|
|
|
(lambda* (#:key import-path #:allow-other-keys)
|
2020-10-16 14:32:50 +02:00
|
|
|
|
(with-directory-excursion (string-append "src/" import-path)
|
|
|
|
|
(invoke "make" "bin/skopeo"))))
|
2020-11-04 13:18:46 +01:00
|
|
|
|
(add-after 'build 'build-docs
|
|
|
|
|
(lambda* (#:key import-path #:allow-other-keys)
|
|
|
|
|
(with-directory-excursion (string-append "src/" import-path)
|
|
|
|
|
(invoke "make" "docs"))))
|
2018-06-09 13:01:27 +02:00
|
|
|
|
(replace 'install
|
2020-10-16 14:32:50 +02:00
|
|
|
|
(lambda* (#:key import-path outputs #:allow-other-keys)
|
|
|
|
|
(with-directory-excursion (string-append "src/" import-path)
|
|
|
|
|
(let ((out (assoc-ref outputs "out")))
|
2020-11-04 13:18:46 +01:00
|
|
|
|
(install-file "default-policy.json"
|
|
|
|
|
(string-append out "/etc/containers"))
|
|
|
|
|
(invoke "make" "install-binary" "install-completions" "install-docs"
|
2020-10-16 14:32:50 +02:00
|
|
|
|
(string-append "PREFIX=" out)))))))))
|
2020-10-01 14:23:21 +02:00
|
|
|
|
(home-page "https://github.com/containers/skopeo")
|
2018-06-09 13:01:27 +02:00
|
|
|
|
(synopsis "Interact with container images and container image registries")
|
|
|
|
|
(description
|
|
|
|
|
"@command{skopeo} is a command line utility providing various operations
|
|
|
|
|
with container images and container image registries. It can:
|
|
|
|
|
@enumerate
|
|
|
|
|
|
|
|
|
|
@item Copy container images between various containers image stores,
|
|
|
|
|
converting them as necessary.
|
|
|
|
|
|
|
|
|
|
@item Convert a Docker schema 2 or schema 1 container image to an OCI image.
|
|
|
|
|
|
|
|
|
|
@item Inspect a repository on a container registry without needlessly pulling
|
|
|
|
|
the image.
|
|
|
|
|
|
|
|
|
|
@item Sign and verify container images.
|
|
|
|
|
|
|
|
|
|
@item Delete container images from a remote container registry.
|
|
|
|
|
|
|
|
|
|
@end enumerate")
|
2018-07-24 16:43:54 +02:00
|
|
|
|
(license license:asl2.0)))
|
2018-07-24 16:44:21 +02:00
|
|
|
|
|
|
|
|
|
(define-public python-vagrant
|
|
|
|
|
(package
|
|
|
|
|
(name "python-vagrant")
|
|
|
|
|
(version "0.5.15")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (pypi-uri "python-vagrant" version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"1ikrh6canhcxg5y7pzmkcnnydikppv7s6sm9prfx90nk0ac8m6mg"))))
|
|
|
|
|
(build-system python-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
'(#:tests? #f)) ; tests involve running vagrant.
|
|
|
|
|
(home-page "https://github.com/todddeluca/python-vagrant")
|
|
|
|
|
(synopsis "Python bindings for Vagrant")
|
|
|
|
|
(description
|
|
|
|
|
"Python-vagrant is a Python module that provides a thin wrapper around the
|
|
|
|
|
@code{vagrant} command line executable, allowing programmatic control of Vagrant
|
|
|
|
|
virtual machines.")
|
|
|
|
|
(license license:expat)))
|
2018-11-25 17:01:22 +01:00
|
|
|
|
|
|
|
|
|
(define-public bubblewrap
|
|
|
|
|
(package
|
|
|
|
|
(name "bubblewrap")
|
2022-04-21 12:48:51 +02:00
|
|
|
|
(version "0.6.1")
|
2018-11-25 17:01:22 +01:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
2019-11-27 23:17:39 +01:00
|
|
|
|
(uri (string-append "https://github.com/containers/bubblewrap/"
|
2018-11-25 17:01:22 +01:00
|
|
|
|
"releases/download/v" version "/bubblewrap-"
|
|
|
|
|
version ".tar.xz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-04-21 12:48:51 +02:00
|
|
|
|
"10ij62jg7p2scwdx0pm141ss7p2gjdkbbymb56y8miib2vfcf2cn"))
|
2022-01-10 23:58:35 +01:00
|
|
|
|
(patches (search-patches "bubblewrap-fix-locale-in-tests.patch"))))
|
2018-11-25 17:01:22 +01:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'fix-test
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
;; Tests try to access /var/tmp, which is not possible in our build
|
|
|
|
|
;; environment. Let's give them another directory.
|
|
|
|
|
;; /tmp gets overriden in some tests, so we need another directory.
|
|
|
|
|
;; the only possibility is the output directory.
|
|
|
|
|
(let ((tmp-dir (string-append (assoc-ref outputs "out") "/tmp")))
|
|
|
|
|
(mkdir-p tmp-dir)
|
|
|
|
|
(substitute* "tests/test-run.sh"
|
|
|
|
|
(("/var/tmp") tmp-dir)
|
|
|
|
|
;; Tests create a temporary python script, so fix its shebang.
|
2022-01-10 23:58:35 +01:00
|
|
|
|
(("/usr/bin/env python3") (which "python3"))
|
|
|
|
|
;; Tests call /usr/bin/env, so fix its path.
|
|
|
|
|
(("/usr/bin/env") (which "env"))
|
2018-11-25 17:01:22 +01:00
|
|
|
|
;; Some tests try to access /usr, but that doesn't exist.
|
|
|
|
|
;; Give them /gnu instead.
|
|
|
|
|
(("/usr") "/gnu")
|
2019-09-29 21:25:41 +02:00
|
|
|
|
(("--ro-bind /bin /bin") "--ro-bind /gnu /bin")
|
|
|
|
|
(("--ro-bind /sbin /sbin") "--ro-bind /gnu /sbin")
|
|
|
|
|
(("--ro-bind /lib /lib") "--ro-bind /gnu /lib")
|
2018-11-25 17:01:22 +01:00
|
|
|
|
((" */bin/bash") (which "bash"))
|
|
|
|
|
(("/bin/sh") (which "sh"))
|
2022-01-10 23:58:35 +01:00
|
|
|
|
(("findmnt") (which "findmnt")))
|
|
|
|
|
(substitute* "tests/libtest.sh"
|
|
|
|
|
(("/var/tmp") tmp-dir)
|
|
|
|
|
(("/usr") "/gnu")
|
|
|
|
|
(("--ro-bind /bin /bin") "--ro-bind /gnu /bin")
|
|
|
|
|
(("--ro-bind /sbin /sbin") "--ro-bind /gnu /sbin")
|
|
|
|
|
(("--ro-bind /lib /lib") "--ro-bind /gnu /lib")))
|
2018-11-25 17:01:22 +01:00
|
|
|
|
#t))
|
|
|
|
|
;; Remove the directory we gave to tests to have a clean package.
|
|
|
|
|
(add-after 'check 'remove-tmp-dir
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(delete-file-recursively (string-append (assoc-ref outputs "out") "/tmp"))
|
|
|
|
|
#t)))))
|
2022-01-10 23:58:35 +01:00
|
|
|
|
(inputs (list libcap))
|
|
|
|
|
(native-inputs (list python-wrapper util-linux))
|
2019-11-27 23:17:39 +01:00
|
|
|
|
(home-page "https://github.com/containers/bubblewrap")
|
2018-11-25 17:01:22 +01:00
|
|
|
|
(synopsis "Unprivileged sandboxing tool")
|
|
|
|
|
(description "Bubblewrap is aimed at running applications in a sandbox,
|
2019-04-24 19:29:25 +02:00
|
|
|
|
restricting their access to parts of the operating system or user data such as
|
|
|
|
|
the home directory. Bubblewrap always creates a new mount namespace, and the
|
|
|
|
|
user can specify exactly what parts of the file system should be made visible
|
2019-04-27 15:41:36 +02:00
|
|
|
|
in the sandbox. These directories are mounted with the @code{nodev} option
|
2019-04-24 19:29:25 +02:00
|
|
|
|
by default and can be made read-only.")
|
2018-11-25 17:01:22 +01:00
|
|
|
|
(license license:lgpl2.0+)))
|
2019-01-10 17:33:30 +01:00
|
|
|
|
|
|
|
|
|
(define-public bochs
|
|
|
|
|
(package
|
|
|
|
|
(name "bochs")
|
2021-09-05 00:54:42 +02:00
|
|
|
|
(version "2.7")
|
2019-01-10 17:33:30 +01:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "https://sourceforge.net/projects/bochs/files/bochs/"
|
|
|
|
|
version "/bochs-" version ".tar.gz"))
|
|
|
|
|
(sha256
|
2021-09-05 00:54:42 +02:00
|
|
|
|
(base32 "0ymiwnfqg5npq2dk9ngidbbfn3qw8z6i491finhcaan7zldsn450"))))
|
2019-01-10 17:33:30 +01:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
2020-01-21 18:36:39 +01:00
|
|
|
|
`(#:tests? #f)) ; no tests exist
|
2019-01-10 17:33:30 +01:00
|
|
|
|
(inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list libxrandr))
|
gnu: Use HTTPS package home pages wherever possible.
* gnu/packages/accessibility.scm (florence)[home-page]: Use HTTPS.
* gnu/packages/admin.scm (netcat, nmon)[home-page]: Likewise.
* gnu/packages/algebra.scm (mpfrcx, cm, flint, fftw, r-dtt)[home-page]:
Likewise.
* gnu/packages/apr.scm (apr, apr-util)[home-page]: Likewise.
* gnu/packages/aspell.scm (aspell-dict-it)[home-page]: Likewise.
* gnu/packages/astronomy.scm (casacore, sextractor, libnova)
(xplanet)[home-page]: Likewise.
* gnu/packages/audio.scm (libtimidity, alsa-modular-synth, azr3, tao)
(freepats, rakarrack, liblo, libshout-idjc, timidity++, libsbsms)
(libmodplug, libxmp, xmp, sox, drc, gsm, gnaural)
(streamripper)[home-page]: Likewise.
* gnu/packages/authentication.scm (pamtester)[home-page]: Likewise.
* gnu/packages/backup.scm (grsync)[home-page]: Likewise.
* gnu/packages/bioconductor.scm (r-nmf, r-edger, r-limma)
(r-plgem)[home-page]: Likewise.
* gnu/packages/bioinformatics.scm (python-biom-format, bowtie, bowtie1)
(bwa, crossmap, java-htsjdk, java-htsjdk-latest, java-picard)
(java-picard-2.10.3, kaiju, proteinortho, rsem, rseqc, seek, samtools)
(snap-aligner, subread, stringtie, r-centipede, prinseq, emboss, phylip)
(libsbml)[home-page]: Likewise.
* gnu/packages/build-tools.scm (tup)[home-page]: Likewise.
* gnu/packages/cdrom.scm (libcddb, cdrdao, cdrtools)
(cd-discid)[home-page]: Likewise.
* gnu/packages/check.scm (cunit, python-nose)
(python-pyhamcrest)[home-page]: Likewise.
* gnu/packages/chemistry.scm (gromacs)[home-page]: Likewise.
* gnu/packages/chez.scm (chez-fmt)[home-page]: Likewise.
* gnu/packages/code.scm (lcov, uncrustify, cscope)[home-page]: Likewise.
* gnu/packages/compression.scm (p7zip)[home-page]: Likewise.
* gnu/packages/cran.scm (r-emdist, r-proj4, r-zoo, r-ggalluvial)
(r-orgmassspecr, r-polychrome, r-partykit, r-rcpp, r-ff, r-emdbook)
(r-fitdistrplus, r-linprog, r-geometry, r-dtw, r-fst, r-rjags)
(r-intergraph, r-qualv, r-labelled, r-survey, r-coin, r-fmsb, r-tm)
(r-corpcor, r-rmpfr, r-spatialextremes, r-longitudinal, r-genenet)
(r-bayesm, r-seqinr, r-mpm, r-text2vec, r-rgdal, r-seewave, r-hdrcde)
(r-shapes, r-anytime, r-stm, r-d3network, r-tam, r-directlabels)
(r-spatstat-utils, r-spatstat-sparse, r-spatstat-data, r-spatstat-geom)
(r-spatstat-core, r-spatstat-linnet, r-spatstat-random, r-spatstat)
(r-rcpptoml, r-mlecens, r-seurat, r-mlearning, r-zooimage)[home-page]:
Likewise.
* gnu/packages/crates-io.scm (rust-nickel-0.11, rust-thrift-0.13)
(rust-trust-dns-https-0.20, rust-trust-dns-native-tls-0.20)
(rust-trust-dns-openssl-0.20, rust-trust-dns-proto-0.20)
(rust-trust-dns-resolver-0.20, rust-trust-dns-rustls-0.20)
(rust-uint-0.9, rust-yaml-rust-0.4)[home-page]: Likewise.
* gnu/packages/crypto.scm (libdecaf, ccrypt)[home-page]: Likewise.
* gnu/packages/curl.scm (curlpp)[home-page]: Likewise.
* gnu/packages/databases.scm (python-pylibmc, unixodbc, wiredtiger)
(libpqxx, mdbtools, virtuoso-ose, libdbi, libdbi-drivers)
(soci)[home-page]: Likewise.
* gnu/packages/debian.scm (apt-mirror)[home-page]: Likewise.
* gnu/packages/debug.scm (remake)[home-page]: Likewise.
* gnu/packages/disk.scm (sdparm, idle3-tools, duc)[home-page]: Likewise.
* gnu/packages/django.scm (python-django-haystack)[home-page]: Likewise.
* gnu/packages/djvu.scm (djvulibre, djview)[home-page]: Likewise.
* gnu/packages/dns.scm (dnsmasq)[home-page]: Likewise.
* gnu/packages/docbook.scm (dblatex, docbook2x)[home-page]: Likewise.
* gnu/packages/documentation.scm (scrollkeeper)[home-page]: Likewise.
* gnu/packages/ebook.scm (liblinebreak)[home-page]: Likewise.
* gnu/packages/electronics.scm (xoscope)[home-page]: Likewise.
* gnu/packages/emacs-xyz.scm (emacs-bbdb, emacs-caps-lock, emacs-djvu)
(emacs-pabbrev, emacs-twittering-mode, emacs-filladapt, emacs-rudel)
(emacs-stream, emacspeak, emacs-cc-mode, emacs-eldoc, emacs-jsonrpc)
(emacs-gtk-look, emacs-xclip, emacs-slime-volleyball, emacs-minimap)
(emacs-auto-dictionary-mode, emacs-persist, emacs-shell-command+)
(emacs-map, emacs-xref, emacs-dictionary)[home-page]: Likewise.
* gnu/packages/embedded.scm (sdcc)[home-page]: Likewise.
* gnu/packages/engineering.scm (asco, libngspice, libspnav)
(openctm)[home-page]: Likewise.
* gnu/packages/erlang.scm (erlang-erlware-commons)[home-page]: Likewise.
* gnu/packages/file-systems.scm (jfsutils, curlftpfs)[home-page]:
Likewise.
* gnu/packages/finance.scm (gbonds)[home-page]: Likewise.
* gnu/packages/flashing-tools.scm (dfu-util, srecord)[home-page]:
Likewise.
* gnu/packages/fltk.scm (ntk)[home-page]: Likewise.
* gnu/packages/fonts.scm (font-terminus, font-tex-gyre)
(font-comic-neue)[home-page]: Likewise.
* gnu/packages/fontutils.scm (ttf2pt1, potrace, libspiro)[home-page]:
Likewise.
* gnu/packages/fpga.scm (icestorm, gtkwave, gtkwave)
(python-myhdl)[home-page]: Likewise.
* gnu/packages/freedesktop.scm (libatasmart)[home-page]: Likewise.
* gnu/packages/ftp.scm (weex)[home-page]: Likewise.
* gnu/packages/game-development.scm (dds, python-tmx, sfxr, quesoglc)
(eureka, plib)[home-page]: Likewise.
* gnu/packages/games.scm (abe, alex4, armagetronad, barony)
(foobillard++, golly, ltris, pipewalker, prboom-plus, trigger-rally)
(cmatrix, pinball, pioneers, tennix, chromium-bsu, freeciv, kiki)
(quakespasm, frotz, frotz-dumb-terminal, frotz-sdl, btanks)
(flare-engine, chessx, barrage, cgoban, passage)[home-page]: Likewise.
* gnu/packages/geo.scm (python-geopandas, saga)[home-page]: Likewise.
* gnu/packages/gl.scm (freeglut, gl2ps)[home-page]: Likewise.
* gnu/packages/gnome.scm (cogl, clutter-gtk, clutter-gst, bluefish)
(workrave)[home-page]: Likewise.
* gnu/packages/gnustep.scm (wmnd, wmfire, wmfire)[home-page]: Likewise.
* gnu/packages/graph.scm (mscgen)[home-page]: Likewise.
* gnu/packages/graphics.scm (assimp, alembic, ctl, agg)
(opencsg)[home-page]: Likewise.
* gnu/packages/graphviz.scm (gts)[home-page]: Likewise.
* gnu/packages/gtk.scm (gtkspell3)[home-page]: Likewise.
* gnu/packages/guile-xyz.scm (guile-irregex)[home-page]: Likewise.
* gnu/packages/haskell-apps.scm (cpphs)[home-page]: Likewise.
* gnu/packages/haskell-check.scm (ghc-hunit)[home-page]: Likewise.
* gnu/packages/haskell-web.scm (ghc-http-client-restricted)
(ghc-blaze-html, ghc-happstack-server, ghc-sourcemap)[home-page]:
Likewise.
* gnu/packages/haskell-xyz.scm (ghc-assoc, ghc-cairo, ghc-cborg)
(ghc-csv, ghc-glob, ghc-gtk2hs-buildtools, ghc-hmatrix-gsl-stats)
(ghc-intervalmap, ghc-lens-family-core, ghc-managed, ghc-mountpoints)
(ghc-network-multicast, ghc-optional-args, ghc-regex, ghc-spoon)
(ghc-transformers, ghc-turtle, ghc-utf8-light, ghc-wizards)
(ghc-template-haskell, ghc-boot-th, ghc-binary-orphans)
(ghc-postgresql-simple)[home-page]: Likewise.
* gnu/packages/hexedit.scm (ht, bvi)[home-page]: Likewise.
* gnu/packages/hunspell.scm (hunspell-dict-hu)[home-page]: Likewise.
* gnu/packages/image-processing.scm (mia)[home-page]: Likewise.
* gnu/packages/image-viewers.scm (geeqie, gpicview, luminance-hdr)
(qiv)[home-page]: Likewise.
* gnu/packages/image.scm (libuemf, devil, steghide, optipng, niftilib)
(sng, mtpaint)[home-page]: Likewise.
* gnu/packages/java-xml.scm (java-simple-xml, java-jaxp)
(java-apache-xml-commons-resolver)[home-page]: Likewise.
* gnu/packages/java.scm (java-cisd-base, java-cisd-args4j)
(java-hamcrest-core, java-jsr305, java-eclipse-osgi)
(java-eclipse-equinox-common, java-eclipse-core-jobs)
(java-eclipse-equinox-registry, java-eclipse-equinox-app)
(java-eclipse-equinox-preferences, java-eclipse-core-contenttype)
(java-eclipse-text, java-treelayout, java-aopalliance, java-jeromq)
(java-cdi-api)[home-page]: Likewise.
* gnu/packages/jemalloc.scm (jemalloc-4.5.0)[home-page]: Likewise.
* gnu/packages/julia-xyz.scm (julia-recipespipeline)[home-page]:
Likewise.
* gnu/packages/kde-internet.scm (kget)[home-page]: Likewise.
* gnu/packages/kde-systemtools.scm (dolphin-plugins)
(konsole)[home-page]: Likewise.
* gnu/packages/kodi.scm (fstrcmp)[home-page]: Likewise.
* gnu/packages/language.scm (hime, libchewing)[home-page]: Likewise.
* gnu/packages/lego.scm (nqc)[home-page]: Likewise.
* gnu/packages/lesstif.scm (lesstif)[home-page]: Likewise.
* gnu/packages/libcanberra.scm (libcanberra)[home-page]: Likewise.
* gnu/packages/libdaemon.scm (libdaemon)[home-page]: Likewise.
* gnu/packages/libffi.scm (libffi)[home-page]: Likewise.
* gnu/packages/libreoffice.scm (libwpd, libwpg, libwps)[home-page]:
Likewise.
* gnu/packages/libusb.scm (libmtp, gmtp)[home-page]: Likewise.
* gnu/packages/linux.scm (e2fsprogs, extundelete, lsscsi, net-tools)
(kbd, sysfsutils, cpuid, libpfm4)[home-page]: Likewise.
* gnu/packages/lisp-check.scm (sbcl-ptester, sbcl-xlunit)[home-page]:
Likewise.
* gnu/packages/lisp-xyz.scm (sbcl-html-encode, sbcl-py-configparser)
(sbcl-cl-utilities, sbcl-series, sbcl-uffi, sbcl-clsql, sbcl-sycamore)
(sbcl-osicat, sbcl-hu.dwim.common, sbcl-caveman, sbcl-trivial-shell)
(sbcl-trivial-benchmark, sbcl-screamer, sbcl-smug)[home-page]: Likewise.
* gnu/packages/lisp.scm (lush2)[home-page]: Likewise.
* gnu/packages/logging.scm (log4cpp)[home-page]: Likewise.
* gnu/packages/lua.scm (lua-ldoc)[home-page]: Likewise.
* gnu/packages/machine-learning.scm (mcl, openfst, rxcpp)[home-page]:
Likewise.
* gnu/packages/mail.scm (muchsync, procmail, sendmail)
(opensmtpd-filter-dkimsign, crm114)[home-page]: Likewise.
* gnu/packages/man.scm (libpipeline, man-db)[home-page]: Likewise.
* gnu/packages/maths.scm (lapack, scalapack, hdf-eos5, itpp, gmsh)
(metamath, p4est, armadillo, suitesparse, atlas, lpsolve, wcalc, why3)
(frama-c)[home-page]: Likewise.
* gnu/packages/mcrypt.scm (mcrypt, libmcrypt, libmhash)[home-page]:
Likewise.
* gnu/packages/minetest.scm (minetest-advtrains)[home-page]: Likewise.
* gnu/packages/monitoring.scm (python-whisper, python-carbon)
(hostscope)[home-page]: Likewise.
* gnu/packages/mp3.scm (id3lib, libmp3splt, mp3splt, mpg321)
(lame)[home-page]: Likewise.
* gnu/packages/multiprecision.scm (mpc)[home-page]: Likewise.
* gnu/packages/music.scm (aria-maestosa, lingot, setbfree, bristol)
(portmidi, python-pyportmidi, zynaddsubfx, yoshimi, aj-snapshot)
(schismtracker, midicsv, midicsv, qmidiarp, qmidiroute, dssi, tap-lv2)
(shiru-lv2)[home-page]: Likewise.
* gnu/packages/ncurses.scm (stfl)[home-page]: Likewise.
* gnu/packages/networking.scm (lksctp-tools, mbuffer, ifstatus, bird)
(tunctl, traceroute)[home-page]: Likewise.
* gnu/packages/node-xyz.scm (node-mersenne)[home-page]: Likewise.
* gnu/packages/ntp.scm (openntpd)[home-page]: Likewise.
* gnu/packages/ocaml.scm (opam, hevea, ocaml-menhir, ocaml-piqilib)
(ocaml-graph, cubicle)[home-page]: Likewise.
* gnu/packages/opencl.scm (python-pyopencl)[home-page]: Likewise.
* gnu/packages/package-management.scm (xstow, modules)[home-page]:
Likewise.
* gnu/packages/parallel.scm (xjobs)[home-page]: Likewise.
* gnu/packages/pdf.scm (podofo, qpdf, xournal, impressive)[home-page]:
Likewise.
* gnu/packages/perl.scm (perl-math-vecstat, perltidy)[home-page]:
Likewise.
* gnu/packages/photo.scm (libpano13, enblend-enfuse, hugin)[home-page]:
Likewise.
* gnu/packages/plan9.scm (drawterm)[home-page]: Likewise.
* gnu/packages/plotutils.scm (guile-charting, ploticus)[home-page]:
Likewise.
* gnu/packages/popt.scm (argtable, popt)[home-page]: Likewise.
* gnu/packages/profiling.scm (otf2)[home-page]: Likewise.
* gnu/packages/pulseaudio.scm (pulseaudio)[home-page]: Likewise.
* gnu/packages/python-check.scm (python-mypy)[home-page]: Likewise.
* gnu/packages/python-web.scm (python-cssutils)
(python-translationstring)[home-page]: Likewise.
* gnu/packages/python-xyz.scm (python-diskcache, python-doxyqml)
(python-docutils, python-pexpect, python-importlib-resources)
(python-simplegeneric, python-urwid, python-xlrd, python-xlwt)
(python-pyasn1, python-pythondialog, python-tftpy, python-random2)
(python-arcp, python-pyopengl, python-sortedcollections)
(python-sortedcontainers, python-yapsy, python-pydispatcher)
(python-posix-ipc)[home-page]: Likewise.
* gnu/packages/qt.scm (qwt, libqglviewer, signond)[home-page]: Likewise.
* gnu/packages/radio.scm (unixcw, gnuais)[home-page]: Likewise.
* gnu/packages/raspberry-pi.scm (bcm2835)[home-page]: Likewise.
* gnu/packages/rdf.scm (clucene, rasqal, redland)[home-page]: Likewise.
* gnu/packages/regex.scm (tre)[home-page]: Likewise.
* gnu/packages/rsync.scm (librsync)[home-page]: Likewise.
* gnu/packages/ruby.scm (ruby-packnga, ruby-nokogiri, ruby-oj, ruby-ox)
(ruby-sinatra, ruby-citrus, ruby-cbor, ruby-roda)[home-page]: Likewise.
* gnu/packages/scheme.scm (scheme48, tinyscheme)[home-page]: Likewise.
* gnu/packages/screen.scm (dtach)[home-page]: Likewise.
* gnu/packages/scsi.scm (sg3-utils)[home-page]: Likewise.
* gnu/packages/sdl.scm (libmikmod, sdl-pango)[home-page]: Likewise.
* gnu/packages/shellutils.scm (hstr, rig)[home-page]: Likewise.
* gnu/packages/simulation.scm (python-dolfin-adjoint)[home-page]:
Likewise.
* gnu/packages/smalltalk.scm (smalltalk)[home-page]: Likewise.
* gnu/packages/speech.scm (espeak)[home-page]: Likewise.
* gnu/packages/stalonetray.scm (stalonetray)[home-page]: Likewise.
* gnu/packages/statistics.scm (jags, r-mass, r-class, r-lattice)
(r-matrix, r-nnet, r-spatial, r-bit, r-bit64, r-digest, r-xtable)
(python-statsmodels, r-ade4, r-latticeextra, r-rcurl, r-xml, r-mvtnorm)
(r-robustbase, r-minqa, r-fdrtool, java-jdistlib, xlispstat)[home-page]:
Likewise.
* gnu/packages/swig.scm (swig)[home-page]: Likewise.
* gnu/packages/task-management.scm (wtime)[home-page]: Likewise.
* gnu/packages/tcl.scm (itcl, tclxml, tclx)[home-page]: Likewise.
* gnu/packages/terminals.scm (libtermkey, mlterm, libvterm)
(libvterm)[home-page]: Likewise.
* gnu/packages/tex.scm (texlive-lm, texlive-lm-math, texlive-cs)
(texlive-csplain, biber, texmaker)[home-page]: Likewise.
* gnu/packages/text-editors.scm (joe)[home-page]: Likewise.
* gnu/packages/textutils.scm (drm-tools, docx2txt)[home-page]: Likewise.
* gnu/packages/tv.scm (tvtime)[home-page]: Likewise.
* gnu/packages/unicode.scm (libunibreak)[home-page]: Likewise.
* gnu/packages/upnp.scm (libupnp)[home-page]: Likewise.
* gnu/packages/version-control.scm (cvs)[home-page]: Likewise.
* gnu/packages/video.scm (transcode, libquicktime, mjpegtools, aalib)
(liba52, libmpeg2, x265, libdv, dvdauthor, aegisub, pitivi, gavl)
(dvdbackup, guvcview, video-contact-sheet)[home-page]: Likewise.
* gnu/packages/virtualization.scm (bochs)[home-page]: Likewise.
* gnu/packages/w3m.scm (w3m)[home-page]: Likewise.
* gnu/packages/web.scm (qjson, libquvi-scripts, libquvi, quvi)
(tidy-html, htmlcxx)[home-page]: Likewise.
* gnu/packages/wm.scm (evilwm, menumaker)[home-page]: Likewise.
* gnu/packages/wv.scm (wv)[home-page]: Likewise.
* gnu/packages/wxwidgets.scm (wxsvg)[home-page]: Likewise.
* gnu/packages/xdisorg.scm (mtdev, xsel)[home-page]: Likewise.
* gnu/packages/xfig.scm (xfig, transfig)[home-page]: Likewise.
* gnu/packages/xml.scm (openjade, python-pyxb, xmlstarlet, xmlrpc-c)
(opensp)[home-page]: Likewise.
* gnu/packages/xorg.scm (xf86-video-qxl)[home-page]: Likewise.
2023-02-12 01:00:00 +01:00
|
|
|
|
(home-page "https://bochs.sourceforge.net/")
|
2019-01-10 17:33:30 +01:00
|
|
|
|
(synopsis "Emulator for x86 PC")
|
|
|
|
|
(description
|
|
|
|
|
"Bochs is an emulator which can emulate Intel x86 CPU, common I/O
|
|
|
|
|
devices, and a custom BIOS. It can also be compiled to emulate many different
|
|
|
|
|
x86 CPUs, from early 386 to the most recent x86-64 Intel and AMD processors.
|
|
|
|
|
Bochs can run most Operating Systems inside the emulation including Linux,
|
|
|
|
|
DOS or Microsoft Windows.")
|
|
|
|
|
(license license:lgpl2.0+)))
|
2019-01-21 10:13:38 +01:00
|
|
|
|
|
|
|
|
|
(define-public xen
|
|
|
|
|
(package
|
|
|
|
|
(name "xen")
|
2021-10-23 14:03:10 +02:00
|
|
|
|
(version "4.14.1") ; please update the mini-os input as well
|
2019-01-21 10:13:38 +01:00
|
|
|
|
(source (origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
2021-10-23 14:01:27 +02:00
|
|
|
|
(url "https://xenbits.xen.org/git-http/xen.git")
|
2019-01-21 10:13:38 +01:00
|
|
|
|
(commit (string-append "RELEASE-" version))))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2020-12-28 13:43:17 +01:00
|
|
|
|
"1r90rvypw76ya9clqw5p02gm1k8hxz73f7gr95ca778nnzvb7xjw"))))
|
2019-01-21 10:13:38 +01:00
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:configure-flags
|
|
|
|
|
(list "--enable-rpath"
|
|
|
|
|
"--disable-qemu-traditional" ; It tries to do "git clone"
|
|
|
|
|
"--disable-rombios" ; would try to "git clone" via etherboot.
|
|
|
|
|
;; TODO: Re-enable stubdom (it's "more secure" to use it).
|
|
|
|
|
"--disable-stubdom" ; tries to "git clone" old patched newlib.
|
|
|
|
|
(string-append "--with-initddir="
|
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
|
"/etc/init.d")
|
|
|
|
|
(string-append "--with-system-qemu="
|
|
|
|
|
(assoc-ref %build-inputs "qemu")
|
|
|
|
|
"/bin/qemu-system-i386")
|
|
|
|
|
(string-append "--with-system-seabios="
|
|
|
|
|
(assoc-ref %build-inputs "seabios")
|
|
|
|
|
"/share/firmware/bios.bin")
|
|
|
|
|
(string-append "--with-system-ovmf="
|
|
|
|
|
(assoc-ref %build-inputs "ovmf")
|
|
|
|
|
"/share/firmware/ovmf_ia32.bin"))
|
|
|
|
|
#:make-flags (list "-j" "1"
|
|
|
|
|
"XEN_BUILD_DATE=Thu Jan 1 01:00:01 CET 1970"
|
|
|
|
|
"XEN_BUILD_TIME=01:00:01"
|
|
|
|
|
"XEN_BUILD_HOST="
|
|
|
|
|
"ETHERBOOT_NICS="
|
|
|
|
|
"SMBIOS_REL_DATE=01/01/1970"
|
|
|
|
|
"VGABIOS_REL_DATE=01 Jan 1970"
|
|
|
|
|
; QEMU_TRADITIONAL_LOC
|
|
|
|
|
; QEMU_UPSTREAM_LOC
|
|
|
|
|
"SYSCONFIG_DIR=/tmp/etc/default"
|
|
|
|
|
(string-append "BASH_COMPLETION_DIR="
|
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
|
"/etc/bash_completion.d")
|
|
|
|
|
(string-append "BOOT_DIR="
|
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
|
"/boot")
|
|
|
|
|
(string-append "DEBUG_DIR="
|
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
|
"/lib/debug")
|
|
|
|
|
(string-append "EFI_DIR="
|
|
|
|
|
(assoc-ref %outputs "out")
|
|
|
|
|
"/lib/efi") ; TODO lib64 ?
|
|
|
|
|
"MINIOS_UPSTREAM_URL="
|
|
|
|
|
;(string-append "DISTDIR="
|
|
|
|
|
; (assoc-ref %outputs "out"))
|
|
|
|
|
)
|
|
|
|
|
#:test-target "test"
|
|
|
|
|
#:phases
|
|
|
|
|
(modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'unpack-mini-os
|
|
|
|
|
(lambda* (#:key inputs #:allow-other-keys)
|
|
|
|
|
(copy-recursively (assoc-ref inputs "mini-os") "extras/mini-os")
|
|
|
|
|
#t))
|
|
|
|
|
(add-after 'unpack-mini-os 'patch
|
|
|
|
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
|
|
|
(substitute* "tools/firmware/Rules.mk"
|
|
|
|
|
(("override XEN_TARGET_ARCH = x86_32")
|
|
|
|
|
(string-append "override XEN_TARGET_ARCH = x86_32
|
|
|
|
|
override CC = " (assoc-ref inputs "cross-gcc") "/bin/i686-linux-gnu-gcc"))
|
|
|
|
|
(("^CFLAGS =$")
|
|
|
|
|
(string-append "CFLAGS=-I" (assoc-ref inputs "cross-libc")
|
|
|
|
|
"/include\n")))
|
|
|
|
|
(substitute* "config/x86_32.mk"
|
|
|
|
|
(("CFLAGS += -m32 -march=i686")
|
|
|
|
|
(string-append "CFLAGS += -march=i686 -I"
|
|
|
|
|
(assoc-ref inputs "cross-libc")
|
|
|
|
|
"/include")))
|
|
|
|
|
;; /var is not in /gnu/store , so don't try to create it.
|
|
|
|
|
(substitute* '("tools/Makefile"
|
|
|
|
|
"tools/xenstore/Makefile"
|
|
|
|
|
"tools/xenpaging/Makefile")
|
|
|
|
|
(("\\$\\(INSTALL_DIR\\) .*XEN_(DUMP|LOG|RUN|LIB|PAGING)_DIR.*")
|
|
|
|
|
"\n")
|
|
|
|
|
(("\\$\\(INSTALL_DIR\\) .*XEN_(RUN|LIB)_STORED.*")
|
|
|
|
|
"\n"))
|
|
|
|
|
;; Prevent xen from creating /etc .
|
|
|
|
|
(substitute* "tools/examples/Makefile"
|
|
|
|
|
((" install-readmes") "")
|
|
|
|
|
((" install-configs") ""))
|
|
|
|
|
;; Set rpath.
|
|
|
|
|
(substitute* "tools/pygrub/setup.py"
|
|
|
|
|
(("library_dirs =")
|
|
|
|
|
; TODO: extra_link_args = ['-Wl,-rpath=/opt/foo'],
|
|
|
|
|
(string-append "runtime_library_dirs = ['"
|
|
|
|
|
(assoc-ref outputs "out")
|
|
|
|
|
"/lib'],\nlibrary_dirs =")))
|
2022-03-24 22:47:00 +01:00
|
|
|
|
|
|
|
|
|
;; This needs to be quoted:
|
|
|
|
|
;; <https://lists.gnu.org/archive/html/guix-devel/2022-03/msg00113.html>.
|
|
|
|
|
(substitute* "xen/arch/x86/xen.lds.S"
|
|
|
|
|
((".note.gnu.build-id")
|
|
|
|
|
"\".note.gnu.build-id\""))))
|
2019-01-21 10:13:38 +01:00
|
|
|
|
(add-before 'configure 'patch-xen-script-directory
|
|
|
|
|
(lambda* (#:key outputs #:allow-other-keys)
|
|
|
|
|
(substitute* '("configure"
|
|
|
|
|
"tools/configure"
|
|
|
|
|
"docs/configure")
|
|
|
|
|
(("XEN_SCRIPT_DIR=.*")
|
|
|
|
|
(string-append "XEN_SCRIPT_DIR="
|
|
|
|
|
(assoc-ref outputs "out")
|
|
|
|
|
"/etc/xen/scripts")))
|
|
|
|
|
#t))
|
|
|
|
|
(add-before 'configure 'set-environment-up
|
|
|
|
|
(lambda* (#:key make-flags #:allow-other-keys)
|
|
|
|
|
(define (cross? x)
|
|
|
|
|
(string-contains x "cross-i686-linux"))
|
|
|
|
|
(define (filter-environment! filter-predicate
|
|
|
|
|
environment-variable-names)
|
|
|
|
|
(for-each
|
|
|
|
|
(lambda (env-name)
|
|
|
|
|
(let* ((env-value (getenv env-name))
|
|
|
|
|
(search-path (search-path-as-string->list env-value))
|
|
|
|
|
(new-search-path (filter filter-predicate
|
|
|
|
|
search-path))
|
|
|
|
|
(new-env-value (list->search-path-as-string
|
|
|
|
|
new-search-path ":")))
|
|
|
|
|
(setenv env-name new-env-value)))
|
|
|
|
|
environment-variable-names))
|
2020-11-16 02:51:56 +01:00
|
|
|
|
(setenv "CROSS_C_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))
|
|
|
|
|
(setenv "CROSS_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH"))
|
2019-01-21 10:13:38 +01:00
|
|
|
|
(setenv "CROSS_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
|
|
|
|
|
(filter-environment! cross?
|
2020-11-16 02:51:56 +01:00
|
|
|
|
'("CROSS_C_INCLUDE_PATH" "CROSS_CPLUS_INCLUDE_PATH"
|
2019-01-21 10:13:38 +01:00
|
|
|
|
"CROSS_LIBRARY_PATH"))
|
|
|
|
|
(filter-environment! (lambda (e) (not (cross? e)))
|
2020-11-16 02:51:56 +01:00
|
|
|
|
'("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
|
2019-01-21 10:13:38 +01:00
|
|
|
|
"LIBRARY_PATH"))
|
|
|
|
|
;; Guix tries to be helpful and automatically adds
|
|
|
|
|
;; mini-os-git-checkout/include to the include path,
|
|
|
|
|
;; but actually we don't want it to be there (yet).
|
|
|
|
|
(filter-environment! (lambda (e)
|
|
|
|
|
(not
|
|
|
|
|
(string-contains e
|
|
|
|
|
"mini-os-git-checkout")))
|
2020-11-16 02:51:56 +01:00
|
|
|
|
'("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
|
2019-01-21 10:13:38 +01:00
|
|
|
|
"LIBRARY_PATH"))
|
|
|
|
|
(setenv "EFI_VENDOR" "guix")
|
|
|
|
|
#t))
|
|
|
|
|
(replace 'build
|
|
|
|
|
(lambda* (#:key make-flags #:allow-other-keys)
|
|
|
|
|
(apply invoke "make" "world" make-flags))))))
|
|
|
|
|
(inputs
|
|
|
|
|
`(("acpica" ,acpica) ; TODO: patch iasl invocation.
|
|
|
|
|
("bridge-utils" ,bridge-utils) ; TODO: patch invocations.
|
|
|
|
|
("glib" ,glib)
|
|
|
|
|
("iproute" ,iproute) ; TODO: patch invocations.
|
|
|
|
|
("libaio" ,libaio)
|
|
|
|
|
("libx11" ,libx11)
|
2022-12-04 01:00:52 +01:00
|
|
|
|
("yajl" ,yajl)
|
2019-01-21 10:13:38 +01:00
|
|
|
|
("ncurses" ,ncurses)
|
|
|
|
|
("openssl" ,openssl)
|
|
|
|
|
("ovmf" ,ovmf)
|
|
|
|
|
("pixman" ,pixman)
|
|
|
|
|
("qemu" ,qemu-minimal)
|
|
|
|
|
("seabios" ,seabios)
|
gnu: util-linux: Move libraries to separate output.
Fixes <https://bugs.gnu.org/37732>.
Reported by Diego Nicola Barbato <dnbarbato@posteo.de>.
* gnu/packages/linux.scm (util-linux)[outputs]: Add "lib".
[arguments]: Update #:configure-flags and the "move-static-libraries" phase
accordingly. Add phases "patch-build-scripts" and "adjust-pkg-config-files".
(e2fsprogs, psm, mtd-utils, f2fs-tools, f2fs-tools-1.7, eudev,
xfsprogs)[inputs]: Change to the "lib" output of UTIL-LINUX.
(btrfs-progs)[inputs]: Remove duplicate UTIL-LINUX inputs and change to use
the "lib" output.
* gnu/packages/admin.scm (pam-mount)[inputs]: Add UTIL-LINUX:LIB.
(testdisk)[inputs]: Change to the "lib" output of UTIL-LINUX.
* gnu/packages/android.scm (abootimg)[inputs]: Likewise.
* gnu/packages/audio.scm (jack-1)[propagated-inputs]: Likewise.
* gnu/packages/bootloaders.scm (syslinux, vboot-utils)[inputs]: Likewise.
* gnu/packages/chez.scm (chez-scheme)[inputs]: Likewise.
* gnu/packages/cryptsetup.scm (cryptsetup, cryptsetup-static)[inputs]: Likewise.
* gnu/packages/databases.scm (postgresql, 4store)[inputs]: Likewise.
* gnu/packages/disk.scm (ndctl, gptfdisk, fdisk, gparted, rmlint,
volume-key)[inputs]: Likewise.
(parted)[inputs]: Likewise.
[native-inputs]: Add UTIL-LINUX.
* gnu/packages/efi.scm (sbsigntools)[inputs]: Add UTIL-LINUX:LIB.
* gnu/packages/engineering.scm (lib3mf)[inputs]: Change to the "lib" output of
UTIL-LINUX.
* gnu/packages/enlightenment.scm (efl)[propagated-inputs]: Likewise.
* gnu/packages/file-systems.scm (glusterfs, jfsutils, zfs)[inputs]: Likewise.
* gnu/packages/firmware.scm (ovmf)[inputs]: Likewise.
* gnu/packages/fontutils.scm (fontconfig)[propagated-inputs]: Likewise.
* gnu/packages/freedesktop.scm (localed)[inputs]: Likewise.
* gnu/packages/glib.scm (glib, appstream-glib)[propagated-inputs]: Likewise.
* gnu/packages/gnome.scm (tracker, gnome-terminal)[inputs]: Likewise.
* gnu/packages/jupyter.scm (xeus)[inputs]: Likewise.
* gnu/packages/kde.scm (kpmcore)[inputs]: Likewise.
* gnu/packages/kodi.scm (crossguid)[inputs]: Likewise.
* gnu/packages/lighting.scm (ola)[inputs]: Likewise.
* gnu/packages/music.scm (libgig)[inputs]: Likewise.
* gnu/packages/nfs.scm (nfs-utils)[inputs]: Likewise.
* gnu/packages/opencog.scm (opencog)[inputs]: Likewise.
* gnu/packages/package-management.scm (msitools)[inputs]: Change to the "lib"
output of UTIL-LINUX.
* gnu/packages/password-utils.scm (pwsafe)[inputs]: Likewise.
* gnu/packages/telephony.scm (pjproject)[propagated-inputs]: Likewise.
* gnu/packages/rdf.scm (rasqal)[inputs]: Likewise.
* gnu/packages/search.scm (xapian)[inputs]: Likewise.
* gnu/packages/sssd.scm (sssd)[native-inputs]: Likewise.
* gnu/packages/storage.scm (ceph)[inputs]: Add UTIL-LINUX:LIB.
* gnu/packages/task-management.scm (taskwarrior)[inputs]: Change to the "lib"
output of UTIL-LINUX.
* gnu/packages/virtualization.scm (libvirt, xen)[inputs]: Likewise.
* gnu/packages/xorg.scm (libsm)[inputs]: Likewise.
2020-01-15 00:24:28 +01:00
|
|
|
|
("util-linux" ,util-linux "lib") ; uuid
|
2019-01-21 10:13:38 +01:00
|
|
|
|
; TODO: ocaml-findlib, ocaml-nox.
|
|
|
|
|
("xz" ,xz) ; for liblzma
|
|
|
|
|
("zlib" ,zlib)))
|
|
|
|
|
(native-inputs
|
|
|
|
|
`(("dev86" ,dev86)
|
|
|
|
|
("bison" ,bison)
|
2019-06-17 17:24:24 +02:00
|
|
|
|
("cmake" ,cmake-minimal)
|
2019-01-21 10:13:38 +01:00
|
|
|
|
("figlet" ,figlet)
|
|
|
|
|
("flex" ,flex)
|
|
|
|
|
("gettext" ,gettext-minimal)
|
|
|
|
|
("libnl" ,libnl)
|
|
|
|
|
("mini-os"
|
|
|
|
|
,(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
2021-10-23 14:01:27 +02:00
|
|
|
|
(url "https://xenbits.xen.org/git-http/mini-os.git")
|
2021-10-23 14:03:10 +02:00
|
|
|
|
;; This corresponds to (string-append "xen-RELEASE-" version))
|
|
|
|
|
;; at time of packaging, but upstream has unfortunately modified
|
|
|
|
|
;; existing tags in the past.
|
|
|
|
|
(commit "0b4b7897e08b967a09bed2028a79fabff82342dd")))
|
2019-01-21 10:13:38 +01:00
|
|
|
|
(sha256
|
2021-10-23 14:03:10 +02:00
|
|
|
|
(base32 "1i8pcl19n60i2m9vlg79q3nknpj209c9ic5x10wxaicx45kc107f"))
|
2019-01-21 10:13:38 +01:00
|
|
|
|
(file-name "mini-os-git-checkout")))
|
|
|
|
|
("perl" ,perl)
|
|
|
|
|
; TODO: markdown
|
|
|
|
|
("pkg-config" ,pkg-config)
|
|
|
|
|
("python" ,python-2)
|
|
|
|
|
("wget" ,wget)
|
|
|
|
|
("cross-gcc" ,(cross-gcc "i686-linux-gnu"
|
|
|
|
|
#:xbinutils (cross-binutils "i686-linux-gnu")
|
|
|
|
|
#:libc (cross-libc "i686-linux-gnu")))
|
|
|
|
|
("cross-libc" ,(cross-libc "i686-linux-gnu")) ; header files
|
|
|
|
|
("cross-libc-static" ,(cross-libc "i686-linux-gnu") "static")))
|
|
|
|
|
(home-page "https://xenproject.org/")
|
|
|
|
|
(synopsis "Xen Virtual Machine Monitor")
|
|
|
|
|
(description "This package provides the Xen Virtual Machine Monitor
|
|
|
|
|
which is a hypervisor.")
|
|
|
|
|
;; TODO: Some files are licensed differently. List those.
|
|
|
|
|
(license license:gpl2)
|
|
|
|
|
(supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))))
|
2020-02-16 21:47:10 +01:00
|
|
|
|
|
|
|
|
|
(define-public osinfo-db-tools
|
|
|
|
|
(package
|
|
|
|
|
(name "osinfo-db-tools")
|
2021-11-04 18:51:27 +01:00
|
|
|
|
(version "1.9.0")
|
2020-02-16 21:47:10 +01:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "https://releases.pagure.org/libosinfo/osinfo-db-tools-"
|
|
|
|
|
version ".tar.xz"))
|
|
|
|
|
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2021-11-04 18:51:27 +01:00
|
|
|
|
"1h23a8nzdxjyvw44dwh903563n3b1z5skx8g0b1p1v5cif3iqpr5"))))
|
2020-02-16 21:47:10 +01:00
|
|
|
|
(build-system meson-build-system)
|
|
|
|
|
(inputs
|
2021-12-13 22:15:07 +01:00
|
|
|
|
(list libsoup-minimal-2 libxml2 libxslt json-glib libarchive))
|
2020-02-16 21:47:10 +01:00
|
|
|
|
(native-inputs
|
2021-12-13 22:15:07 +01:00
|
|
|
|
(list perl
|
|
|
|
|
gobject-introspection
|
|
|
|
|
gettext-minimal
|
|
|
|
|
pkg-config
|
|
|
|
|
;; Tests
|
|
|
|
|
python
|
|
|
|
|
python-pytest
|
|
|
|
|
python-requests))
|
2020-02-16 21:47:10 +01:00
|
|
|
|
(home-page "https://gitlab.com/libosinfo/osinfo-db-tools")
|
|
|
|
|
(synopsis "Tools for managing the osinfo database")
|
|
|
|
|
(description "This package contains a set of tools to assist
|
|
|
|
|
administrators and developers in managing the database.")
|
|
|
|
|
(license license:lgpl2.0+)))
|
2020-02-16 21:47:11 +01:00
|
|
|
|
|
|
|
|
|
(define-public osinfo-db
|
|
|
|
|
(package
|
|
|
|
|
(name "osinfo-db")
|
2022-07-24 02:00:00 +02:00
|
|
|
|
(version "20220516")
|
2020-02-16 21:47:11 +01:00
|
|
|
|
(source (origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (string-append "https://releases.pagure.org/libosinfo/osinfo-db-"
|
|
|
|
|
version ".tar.xz"))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2022-07-24 02:00:00 +02:00
|
|
|
|
"0vfsdk3c6n6y04c5rf92m31zvl969kaniyx2fqywbp69mzc6j3yn"))))
|
2020-02-16 21:47:11 +01:00
|
|
|
|
(build-system trivial-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:modules ((guix build utils))
|
|
|
|
|
#:builder
|
|
|
|
|
(begin
|
|
|
|
|
(use-modules (guix build utils))
|
|
|
|
|
(let* ((out (assoc-ref %outputs "out"))
|
|
|
|
|
(osinfo-dir (string-append out "/share/osinfo"))
|
|
|
|
|
(source (assoc-ref %build-inputs "source"))
|
|
|
|
|
(osinfo-db-import
|
|
|
|
|
(string-append (assoc-ref %build-inputs "osinfo-db-tools")
|
|
|
|
|
"/bin/osinfo-db-import")))
|
|
|
|
|
(mkdir-p osinfo-dir)
|
2021-10-04 00:56:24 +02:00
|
|
|
|
(invoke osinfo-db-import "--dir" osinfo-dir source)))))
|
2020-02-16 21:47:11 +01:00
|
|
|
|
(native-inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list intltool osinfo-db-tools))
|
2020-02-16 21:47:11 +01:00
|
|
|
|
(home-page "https://gitlab.com/libosinfo/osinfo-db")
|
|
|
|
|
(synopsis "Database of information about operating systems")
|
|
|
|
|
(description "Osinfo-db provides the database files for use with the
|
|
|
|
|
libosinfo library. It provides information about guest operating systems for
|
|
|
|
|
use with virtualization provisioning tools")
|
|
|
|
|
(license license:lgpl2.0+)))
|
2020-11-23 00:25:15 +01:00
|
|
|
|
|
|
|
|
|
(define-public python-transient
|
|
|
|
|
(package
|
|
|
|
|
(name "python-transient")
|
2020-12-07 01:08:30 +01:00
|
|
|
|
(version "0.12")
|
2020-11-23 00:25:15 +01:00
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method url-fetch)
|
|
|
|
|
(uri (pypi-uri "transient" version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
2020-12-07 01:08:30 +01:00
|
|
|
|
"148yiqrmcscsi6787y0f27i1y9cf0gcw3mqfv5frhpmsmv62mv5z"))))
|
2020-11-23 00:25:15 +01:00
|
|
|
|
(build-system python-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
`(#:tests? #f ; Requires behave
|
|
|
|
|
#:phases (modify-phases %standard-phases
|
|
|
|
|
(add-after 'unpack 'fix-dependencies
|
|
|
|
|
(lambda _
|
|
|
|
|
(substitute* "setup.py"
|
|
|
|
|
(("==")
|
|
|
|
|
">="))
|
|
|
|
|
#t)))))
|
|
|
|
|
(propagated-inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list python-beautifultable
|
|
|
|
|
python-click
|
|
|
|
|
python-importlib-resources
|
|
|
|
|
python-lark-parser
|
|
|
|
|
python-marshmallow
|
|
|
|
|
python-progressbar2
|
|
|
|
|
python-requests
|
|
|
|
|
python-toml))
|
2020-11-23 00:25:15 +01:00
|
|
|
|
(native-inputs
|
2021-12-13 17:18:24 +01:00
|
|
|
|
(list python-black python-mypy python-pyhamcrest python-twine))
|
2020-11-23 00:25:15 +01:00
|
|
|
|
(home-page
|
|
|
|
|
"https://github.com/ALSchwalm/transient")
|
|
|
|
|
(synopsis
|
|
|
|
|
"QEMU Wrapper written in Python")
|
|
|
|
|
(description
|
|
|
|
|
"@code{transient} is a wrapper for QEMU allowing the creation of virtual
|
|
|
|
|
machines with shared folder, ssh, and disk creation support.")
|
|
|
|
|
(license license:expat)))
|
2022-03-29 12:43:03 +02:00
|
|
|
|
|
|
|
|
|
(define-public riscv-pk
|
|
|
|
|
(package
|
|
|
|
|
(name "riscv-pk")
|
|
|
|
|
(version "1.0.0")
|
|
|
|
|
(source
|
|
|
|
|
(origin
|
|
|
|
|
(method git-fetch)
|
|
|
|
|
(uri (git-reference
|
|
|
|
|
(url "https://github.com/riscv-software-src/riscv-pk")
|
|
|
|
|
(commit (string-append "v" version))))
|
|
|
|
|
(file-name (git-file-name name version))
|
|
|
|
|
(sha256
|
|
|
|
|
(base32
|
|
|
|
|
"1cc0rz4q3a1zw8756b8yysw8lb5g4xbjajh5lvqbjix41hbdx6xz"))))
|
|
|
|
|
(build-system gnu-build-system)
|
|
|
|
|
(arguments
|
|
|
|
|
(list #:out-of-source? #t
|
|
|
|
|
;; riscv-pk can only be built for riscv64.
|
|
|
|
|
#:target "riscv64-linux-gnu"
|
|
|
|
|
#:make-flags #~(list (string-append "INSTALLDIR=" #$output))
|
|
|
|
|
;; Add flags to keep symbols fromhost and tohost. These symbols are
|
|
|
|
|
;; required for the correct functioning of pk.
|
|
|
|
|
#:strip-flags #~(list "--strip-unneeded"
|
|
|
|
|
"--keep-symbol=fromhost"
|
|
|
|
|
"--keep-symbol=tohost"
|
|
|
|
|
"--enable-deterministic-archives")))
|
|
|
|
|
(home-page "https://github.com/riscv-software-src/riscv-pk")
|
|
|
|
|
(synopsis "RISC-V Proxy Kernel")
|
|
|
|
|
(description "The RISC-V Proxy Kernel, @command{pk}, is a lightweight
|
|
|
|
|
application execution environment that can host statically-linked RISC-V ELF
|
|
|
|
|
binaries. It is designed to support tethered RISC-V implementations with
|
|
|
|
|
limited I/O capability and thus handles I/O-related system calls by proxying
|
|
|
|
|
them to a host computer.
|
|
|
|
|
|
|
|
|
|
This package also contains the Berkeley Boot Loader, @command{bbl}, which is a
|
|
|
|
|
supervisor execution environment for tethered RISC-V systems. It is designed
|
|
|
|
|
to host the RISC-V Linux port.")
|
|
|
|
|
(license license:bsd-3)))
|