diff options
Diffstat (limited to 'gnu/packages/virtualization.scm')
-rw-r--r-- | gnu/packages/virtualization.scm | 614 |
1 files changed, 490 insertions, 124 deletions
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index 0b9a07d271..16caf9b978 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020, 2021, 2022 Marius Bakke <marius@gnu.org> -;;; Copyright © 2020-2025 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020-2025 Maxim Cournoyer <maxim@guixotic.coop> ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2021 Leo Famulari <leo@famulari.name> ;;; Copyright © 2021, 2022 Pierre Langlois <pierre.langlois@gmx.com> @@ -24,19 +24,19 @@ ;;; Copyright © 2021 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com> ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name> -;;; Copyright © 2022, 2024 Oleg Pykhalov <go.wigust@gmail.com> +;;; Copyright © 2022, 2024, 2025 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2022, 2023 Ekaitz Zarraga <ekaitz@elenq.tech> ;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com> ;;; Copyright © 2023 Juliana Sims <juli@incana.org> ;;; Copyright © 2023 Ahmad Draidi <a.r.draidi@redscript.org> ;;; Copyright © 2023 Sharlatan Hellseher <sharlatanus@gmail.com> -;;; Copyright © 2023, 2024 Hartmut Goebel <h.goebel@crazy-compilers.com> +;;; Copyright © 2023-2025 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr> ;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2024 Raven Hallsby <karl@hallsby.com> ;;; Copyright © 2024 jgart <jgart@dismail.de> -;;; Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se> +;;; Copyright © 2024, 2025 Ashish SHUKLA <ashish.is@lostca.se> ;;; Copyright © 2024 Jakob Kirsch <jakob.kirsch@web.de> ;;; Copyright © 2024, 2025 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com> @@ -82,7 +82,6 @@ #:use-module (gnu packages compression) #:use-module (gnu packages containers) #:use-module (gnu packages cpio) - #:use-module (gnu packages crates-io) #:use-module (gnu packages cross-base) #:use-module (gnu packages crypto) #:use-module (gnu packages cryptsetup) @@ -94,6 +93,7 @@ #:use-module (gnu packages dns) #:use-module (gnu packages docbook) #:use-module (gnu packages documentation) + #:use-module (gnu packages engineering) #:use-module (gnu packages figlet) #:use-module (gnu packages file) #:use-module (gnu packages firmware) @@ -117,6 +117,7 @@ #:use-module (gnu packages gperf) #:use-module (gnu packages graphviz) #:use-module (gnu packages gtk) + #:use-module (gnu packages guile) #:use-module (gnu packages java) #:use-module (gnu packages haskell) #:use-module (gnu packages haskell-apps) @@ -197,19 +198,20 @@ (define-public qemu (package (name "qemu") - (version "9.1.3") + ;; Do not forget to update the various firmware used by QEMU, and sync the + ;; configuration options used by the seabios-qemu package with those + ;; provided by QEMU. + (version "10.1.0") (source (origin (method url-fetch) (uri (string-append "https://download.qemu.org/qemu-" version ".tar.xz")) (sha256 - (base32 "12dc3fpv6c6qvw89amjjbb6dgc2f1c1alfgn2nab7a8kxnh7f2j8")) + (base32 "0ldyh3qia7zwv0xq6f67cp567i6ma1hb11gsqaz3x9qcnm4p6lg0")) (patches (search-patches "qemu-build-info-manual.patch" - "qemu-disable-bios-tables-test.patch" - "qemu-disable-migration-test.patch" "qemu-fix-agent-paths.patch" - "qemu-glibc-2.41.patch")) + "qemu-fix-test-virtio-version.patch")) (modules '((guix build utils))) (snippet '(begin @@ -303,11 +305,11 @@ (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")) + '("tests/data/acpi/x86/pc/SSDT.dimmpxm" + "tests/data/acpi/x86/pc/DSDT.dimmpxm" + "tests/data/acpi/x86/pc/ERST.acpierst" + "tests/data/acpi/x86/q35/ERST.acpierst" + "tests/data/acpi/x86/q35/DSDT.cxl")) (allowed-differences-whitelist (open-file "tests/qtest/bios-tables-test-allowed-diff.h" "a"))) @@ -463,6 +465,16 @@ (lambda args (with-directory-excursion "../user-static" (apply (assoc-ref %standard-phases 'build) args)))) + (add-after 'install 'install-plugins + (lambda* (#:key outputs #:allow-other-keys) + (let ((plugin-dir (string-append + (assoc-ref outputs "out") + "/lib/qemu/plugins"))) + (mkdir-p plugin-dir) + (with-directory-excursion "contrib/plugins" + (for-each + (cut install-file <> plugin-dir) + (find-files "." "\\.so$")))))) (add-after 'install 'install-user-static (lambda* (#:key outputs #:allow-other-keys) (let ((static-bin (string-append @@ -525,6 +537,7 @@ exec smbd $@"))) '()) (list alsa-lib bash-minimal + capstone dtc glib gnutls ;for qcow2 disk encryption @@ -1047,7 +1060,7 @@ firmware blobs. You can ("automake" ,automake) ;; For the documentation. - ("python-docutils" ,python-docutils) + ("python-docutils" ,python-docutils-0.19) ("sphinx" ,python-sphinx) ("pandoc" ,pandoc) ("dot" ,graphviz) @@ -1337,7 +1350,7 @@ of one or more RISC-V harts.") (define-public incus (package (name "incus") - (version "6.14.0") + (version "6.15.0") (source (origin (method git-fetch) @@ -1346,7 +1359,7 @@ of one or more RISC-V harts.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1x0ggs7plc570805x16r5jy7bb9z1qdn0124yi9rv0wwx6l50bd7")))) + (base32 "1j6lfx4jw6ngb2d3d48qz8q51w8x1j5vyjyhssppwd83ydkh060y")))) (build-system go-build-system) (arguments (list @@ -1503,7 +1516,8 @@ using simplestreams index files as the publishing mechanism version ".tar.xz")) (sha256 (base32 - "1dn6pzv0gzkxrjvi60cdzdmyxqlcsvinbrbds91xm4v7wbn5g1dd")))) + "1dn6pzv0gzkxrjvi60cdzdmyxqlcsvinbrbds91xm4v7wbn5g1dd")) + (patches (search-patches "libosinfo-libxml2-fix.patch")))) (build-system meson-build-system) (arguments (list @@ -1616,14 +1630,14 @@ It started as a side project of LXC but can be used by any run-time.") (define-public libvirt (package (name "libvirt") - (version "11.0.0") + (version "11.5.0") (source (origin (method url-fetch) (uri (string-append "https://libvirt.org/sources/libvirt-" version ".tar.xz")) (sha256 - (base32 "0vl0lgzw3x4fkghhw7nfxk8fxj3bbn9f17y0hg7miba283zpd881")) + (base32 "08r4sxchhh639a8h346795971zz615j86v9z9vxf5q9q0pbbjqrb")) (patches (search-patches "libvirt-add-install-prefix.patch" "libvirt-respect-modules-path.patch")))) (build-system meson-build-system) @@ -1780,14 +1794,14 @@ three libraries: (define-public python-libvirt (package (name "python-libvirt") - (version "11.0.0") + (version "11.5.0") (source (origin (method url-fetch) (uri (string-append "https://libvirt.org/sources/python/libvirt-python-" version ".tar.gz")) (sha256 - (base32 "1y26104zgylz0v9d6xc0bm6m13is94shn9dlhjycaf347jjjbs6f")))) + (base32 "08xcnzmahmb72rv9cw8dxwnjmrdgmm5j4bbxpwsnhll9qsgdiak9")))) (build-system pyproject-build-system) (inputs (list libvirt)) @@ -1888,8 +1902,8 @@ virtualization library.") libosinfo libvirt libvirt-glib + libxml2 python-minimal - python-libxml2 python-libvirt python-pycairo python-pygobject @@ -1909,7 +1923,7 @@ domains, their live performance and resource utilization statistics.") (define-public vmware-open-vm-tools (package (name "vmware-open-vm-tools") - (version "12.3.0") + (version "13.0.0") (source (origin (method git-fetch) @@ -1918,7 +1932,7 @@ domains, their live performance and resource utilization statistics.") (commit (string-append "stable-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1hbimhady0v1kd45azknl1lgzgldhgdjd7bj540rn3y4cai5cnk1")))) + (base32 "19zqfkd4rxajgghjc4czssvqxxw1q6mc6mnp50j7lnqaviwvb5fm")))) (build-system gnu-build-system) (arguments (list @@ -2257,7 +2271,7 @@ Machine Protocol.") (define-public looking-glass-client (package (name "looking-glass-client") - (version "B6") + (version "B7") (source (origin (method url-fetch) (uri (string-append "https://looking-glass.io/artifact/" version @@ -2265,7 +2279,7 @@ Machine Protocol.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "15d7wwbzfw28yqbz451b6n33ixy50vv8acyzi8gig1mq5a8gzdib")))) + "11crsvy783ig7kzmr2cr68wv9zsjkcbp1akcs28rc6yc1ik0dr89")))) (build-system cmake-build-system) (inputs (list bash-minimal font-dejavu @@ -2343,43 +2357,67 @@ main monitor/GPU.") (define-public runc (package (name "runc") - (version "1.1.14") - ;; XXX: Source contains "vendor", consider to unbundle and pack missing - ;; packages. - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/opencontainers/runc/releases/" - "download/v" version "/runc.tar.xz")) - (file-name (string-append name "-" version ".tar.xz")) - (sha256 - (base32 - "1nypczyb3fp3cnfdg13grxjhg9361i44zialsdkxcfxb0c9g79jf")))) + (version "1.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/opencontainers/runc") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0midvxwmj4fvhy5mqv616bhlx39j0gd6y890adx7dnz5in506ym1")) + (snippet + #~(begin + (use-modules (guix build utils)) + (delete-file-recursively "vendor"))))) (build-system go-build-system) (arguments - '(#:import-path "github.com/opencontainers/runc" - #:install-source? #f - ;; XXX: 20/139 tests fail due to missing /var, cgroups and apparmor in - ;; the build environment. - #:tests? #f - #:phases - (modify-phases %standard-phases - (replace 'build + (list + ;; XXX: 20/139 tests fail due to missing /var, cgroups and apparmor in + ;; the build environment. + #:tests? #f + #:install-source? #f + #:import-path "github.com/opencontainers/runc" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-source (lambda* (#:key import-path #:allow-other-keys) - (with-directory-excursion (string-append "src/" import-path) - (invoke "make" "all" "man")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "make" "localunittest")))) - (replace 'install - (lambda* (#:key import-path outputs #:allow-other-keys) - (with-directory-excursion (string-append "src/" import-path) - (let ((out (assoc-ref outputs "out"))) - (invoke "make" "install" "install-bash" "install-man" - (string-append "PREFIX=" out))))))))) + (substitute* (string-append "src/" import-path "/Makefile") + (("/bin/bash") (which "bash"))))) + (replace 'build + (lambda* (#:key import-path #:allow-other-keys) + (with-directory-excursion (string-append "src/" import-path) + (invoke "make" "all" "man")))) + (replace 'install + (lambda* (#:key import-path outputs #:allow-other-keys) + (with-directory-excursion (string-append "src/" import-path) + (invoke "make" "install" "install-bash" "install-man" + (string-append "PREFIX=" #$output)))))))) (native-inputs - (list go-md2man pkg-config)) + (list go-github-com-checkpoint-restore-go-criu-v6 + go-github-com-containerd-console + go-github-com-coreos-go-systemd-v22 + go-github-com-cyphar-filepath-securejoin + go-github-com-docker-go-units + go-github-com-godbus-dbus-v5 + go-github-com-moby-sys-capability + go-github-com-moby-sys-mountinfo + go-github-com-moby-sys-user + go-github-com-moby-sys-userns + go-github-com-mrunalp-fileutils + go-github-com-opencontainers-cgroups-0.0.1 + go-github-com-opencontainers-runtime-spec + go-github-com-opencontainers-selinux + go-github-com-seccomp-libseccomp-golang + go-github-com-sirupsen-logrus + go-github-com-urfave-cli + go-github-com-vishvananda-netlink + go-golang-org-x-net + go-golang-org-x-sys + go-google-golang-org-protobuf + go-md2man + pkg-config)) (inputs (list libseccomp)) (synopsis "Open container initiative runtime") @@ -2395,44 +2433,58 @@ Open Container Initiative specification.") (define-public umoci (package (name "umoci") - (version "0.4.7") - ;; XXX: Source contain vendor, consider to pack all missing dependencies. + (version "0.5.1") (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")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/opencontainers/umoci") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 "0fvljj9k4f83wbqzd8nbijz0p1zaq633f8yxyvl5sy3wjf03ffk9")))) + (base32 "0446xw8jrxgf2vgi30vlihak6z9srzbkzvm4v47nm0c87fijmigs")) + (snippet + #~(begin + (use-modules (guix build utils)) + (delete-file-recursively "vendor"))))) (build-system go-build-system) (arguments - '(#:import-path "github.com/opencontainers/umoci" - #:install-source? #f - #:test-subdirs '(".") - #: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) - (with-directory-excursion (string-append "src/" import-path) - ;; TODO: build manpages with 'go-md2man'. - (invoke "make" "SHELL=bash")))) - (replace 'install - (lambda* (#:key import-path outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bindir (string-append out "/bin"))) - (install-file (string-append "src/" import-path "/umoci") - bindir) - #t)))))) + (list + #:install-source? #f + #:import-path "github.com/opencontainers/umoci/cmd/umoci" + #:unpack-path "github.com/opencontainers/umoci" + #:test-flags + ;; Two tests fail with error: unpack config.json: convert spec to + ;; rootless: inspecting mount flags of /etc/resolv.conf: no such file or + ;; directory + #~(list "-skip" (string-append "TestUnpackManifestCustomLayer" + "|TestUnpackStartFromDescriptor")) + #:test-subdirs #~(list "../../...") ;test the whole libary + #:build-flags + #~(list (string-append "-ldflags=" + "-X github.com/opencontainers/umoci.version=" + #$version)))) + ;; TODO: build manpages from <doc/man> with 'go-md2man'. + (native-inputs + (list go-github-com-adalogics-go-fuzz-headers + go-github-com-apex-log + go-github-com-blang-semver-v4 + go-github-com-cyphar-filepath-securejoin + go-github-com-docker-go-units + go-github-com-klauspost-compress + go-github-com-klauspost-pgzip + go-github-com-moby-sys-user + go-github-com-moby-sys-userns + go-github-com-mohae-deepcopy + go-github-com-opencontainers-go-digest + go-github-com-opencontainers-image-spec-1.0.2 + go-github-com-opencontainers-runtime-spec + go-github-com-rootless-containers-proto-go-proto + go-github-com-stretchr-testify + go-github-com-urfave-cli + go-github-com-vbatts-go-mtree + go-golang-org-x-sys + go-google-golang-org-protobuf)) (home-page "https://umo.ci/") (synopsis "Tool for modifying Open Container images") (description @@ -2443,7 +2495,7 @@ Open Container Initiative (OCI) image layout and its tagged images.") (define-public skopeo (package (name "skopeo") - (version "1.19.0") + (version "1.20.0") (source (origin (method git-fetch) (uri (git-reference @@ -2452,7 +2504,7 @@ Open Container Initiative (OCI) image layout and its tagged images.") (file-name (git-file-name name version)) (sha256 (base32 - "1gwp8k9bxkis7qwcy7l2mrclii039fqrslvkb5q4rfhlrzqcqbay")))) + "1436w3i0w1x60r43j8kw9iaxjvyi99h5yaxzvxc3z3r5la8ka3mv")))) (build-system gnu-build-system) (native-inputs (list go-1.23 @@ -2573,6 +2625,322 @@ helpers that let you write your own unit and acceptance tests for Vagrant.") (home-page "https://github.com/hashicorp/vagrant-spec") (license license:mpl2.0))) +(define-public vagrant + (package + (name "vagrant") + (version "2.3.7") ;; last release under BSD-3 license + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hashicorp/vagrant") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0c674c5v70skh38lpydz8cdmcp8wgr9h7rn00rxdpgizrzbfxl82")) + (patches (search-patches + "vagrant-bin-vagrant-silence-warning-about-installer.patch" + "vagrant-Support-system-installed-plugins.patch" + "vagrant-Use-a-private-temporary-dir.patch")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f ; test require ruby-grpc-tools which are not packaged yet + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-gemfile + (lambda _ + (substitute* "Gemfile" + ((", git:.*") "\n")))) + (add-after 'unpack 'pin-executables + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((bsdtar (search-input-file inputs "/bin/bsdtar")) + (curl (search-input-file inputs "/bin/curl")) + (dnsmasq (search-input-file inputs "/sbin/dnsmasq")) + (grep (search-input-file inputs "/bin/grep")) + (modinfo (search-input-file inputs "/bin/modinfo")) + (ps (search-input-file inputs "/bin/ps"))) + ;; bsdtar + (for-each + (lambda (rbfile) + (substitute* rbfile + (("\"bsdtar\",") (string-append "\"" bsdtar "\",")))) + (find-files "lib/vagrant/" "\\.rb$")) + ;; curl + (substitute* "lib/vagrant/util/downloader.rb" + (("\"curl\",") (string-append "\"" curl "\","))) + (substitute* "lib/vagrant/util/uploader.rb" + (("\"curl\",") (string-append "\"" curl "\","))) + (substitute* "plugins/hosts/linux/cap/nfs.rb" + ;; grep + (("\\| grep #\\{nfs_service") + (string-append "| " grep " #{nfs_service")) + (("\"grep\",") (string-append "\"" grep "\",")) + ;; modinfo + (("Vagrant::Util::Which.which\\(\"modinfo\"\\)") + (string-append "\"" modinfo "\""))) + ;; ssh, rsync: + ;; Don't pin ssh to allow different clients and to avoid + ;; configuration conflicts when running on a foreign distro. + ;; (substitute* "lib/vagrant/util/ssh.rb" + ;; (("Which.which\\(\"ssh\", original_path: true\\)") + ;; (string-append "\"" ssh "\""))) + ;; ps + (substitute* "lib/vagrant/util/platform.rb" + (("\"ps\",") (string-append "\"" ps "\",")))))) + (add-after 'extract-gemspec 'relax-requirements + (lambda _ + (substitute* "vagrant.gemspec" + ;; Relax some version specification. + (("s\\.required_ruby_version ") "# s.required_ruby_version ") + (("dependency \"rgl\", \"~> 0.5.10\"") + "dependency \"rgl\"") + (("dependency \"vagrant_cloud\", \"~> 3.0.5\"") + "dependency \"vagrant_cloud\"") + (("dependency \"rexml\", .*") + "dependency \"rexml\"\n") + ;; Remove Windows specific dependencies + ((".*dependency \"(wdm|winrm(|-elevated|-fs))\".*") "") + ;; Remove BSD dependency + ((".*dependency \"rb-kqueue\".*") "") + ;; Remove cyclic inclusion of gem + (("^ gitignore_path = " line) + (string-append + "all_files.reject! { |file| file.match?(\"vagrant-.*\\.gem\") }\n" + line)))))))) + (native-search-paths + (list (search-path-specification + (variable "GUIX_VAGRANT_PLUGINS_PATH") + (files '("share/vagrant-plugins"))))) + ;; TODO: install bash/zsh completions, man-page, etc. + ;; see http://svnweb.mageia.org/packages/cauldron/vagrant/current/SPECS/vagrant.spec + (native-inputs (list ruby-fake-ftp ruby-webrick bundler ruby-vagrant-spec)) + (inputs (list curl dnsmasq grep kmod libarchive openssh procps)) + (propagated-inputs + (list ruby-bcrypt-pbkdf ruby-childprocess ruby-ed25519 ruby-erubi + ruby-googleapis-common-protos-types ruby-grpc + ruby-hashicorp-checkpoint ruby-i18n ruby-listen ruby-log4r + ruby-mime-types ruby-net-ftp ruby-net-ssh ruby-net-sftp + ruby-net-scp ruby-ipaddr ruby-rexml ruby-rgl ruby-rubyzip + ruby-vagrant-cloud ruby-vagrant-spec)) + (synopsis "Build and distribute virtualized development environments") + (description "Vagrant is the command line utility for managing the +lifecycle of virtual machines. Isolate dependencies and their configuration +within a single disposable and consistent environment. + +Note: Make sure to have @code{ssh} and @code{rsync} installed — if you use the +respective Vagrant functions. This package does not link to any specific +implementation of these to allow different clients and to avoid configuration +conflicts when running on a `foreign distribution'.") + (home-page "https://www.vagrantup.com") + ;; CVE-2021-21361 is related to the gradle-vagrant-plugin + (properties '((lint-hidden-cve . ("CVE-2021-21361")))) + (license license:bsd-3))) + +(define-public vagrant-cachier + (package + (name "vagrant-cachier") + (version "1.2.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "vagrant-cachier" version)) + (sha256 + (base32 + "0v11nf2d2y2knwm4zackd5ap8h2927n8rc1q73b6ii4hndv98fh9")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f ; neither gem nor source actually has tests + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'install-plugin.json + (lambda _ + (let* ((plugins.d (string-append + #$output "/share/vagrant-plugins/plugins.d")) + (plugin.json (string-append + plugins.d "/" #$name ".json"))) + (mkdir-p plugins.d) + #$(with-extensions (list guile-json-4) + #~(begin + (use-modules (json)) + (call-with-output-file plugin.json + (lambda (port) + (scm->json + '((#$name + . + (("ruby_version" + . #$(package-version (this-package-input "ruby"))) + ("vagrant_version" + . #$(package-version (this-package-input "vagrant"))) + ("gem_version" . "") + ("require" . "") + ("installed_gem_version" . #$version) + ("sources" . #())))) + port))))))))))) + (inputs (list ruby vagrant)) + (synopsis "Share a common package cache among similar VM instances") + (description "This package provides a Vagrant plugin that helps you reduce +the amount of coffee you drink while waiting for boxes to be provisioned by +sharing a common package cache among similar VM instances. Kinda like +vagrant-apt_cache or this magical snippet but targeting multiple package +managers and Linux distros.") + (home-page "https://github.com/fgrehm/vagrant-cachier") + (license license:expat))) + +(define-public vagrant-libvirt + (package + (name "vagrant-libvirt") + (version "0.12.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "vagrant-libvirt" version)) + (sha256 + (base32 + "013g6wn24k01lwwkzcb0vvxj959lws8c52bkyqi6b8shnn793j1l")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f ; tests involve running vagrant, downloading a box and + ; access to libvirt socket + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'install-plugin.json + (lambda _ + (let* ((plugins.d (string-append + #$output "/share/vagrant-plugins/plugins.d")) + (plugin.json (string-append + plugins.d "/" #$name ".json"))) + (mkdir-p plugins.d) + #$(with-extensions (list guile-json-4) + #~(begin + (use-modules (json)) + (call-with-output-file plugin.json + (lambda (port) + (scm->json + '((#$name + . + (("ruby_version" + . #$(package-version (this-package-input "ruby"))) + ("vagrant_version" + . #$(package-version (this-package-input "vagrant"))) + ("gem_version" . "") + ("require" . "") + ("installed_gem_version" . #$version) + ("sources" . #())))) + port))))))))))) + (inputs (list ruby vagrant)) + (propagated-inputs (list ruby-diffy + ruby-fog-core + ruby-fog-libvirt + ruby-nokogiri + ruby-rexml + ruby-xml-simple)) + (synopsis "Libvirt provider for Vagrant") + (description "This is a Vagrant plugin that adds a Libvirt provider to +Vagrant, allowing Vagrant to control and provision machines via the Libvirt +toolkit.") + (home-page "https://github.com/vagrant-libvirt/vagrant-libvirt") + (license license:expat))) + +(define-public vagrant-reload + (package + (name "vagrant-reload") + (version "0.0.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "vagrant-reload" version)) + (sha256 + (base32 + "0smy0px20xgakcyki5hdbk3n63k9c6ychh5pvbannn1p4zjxa0xa")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f ; has no tests, testing as described in the Readme requires + ; running vagrant, a provider and downloading a box + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-gemfile + (lambda _ + (substitute* "Gemfile" + ((", :git.*") "\n")))) + (add-after 'install 'install-plugin.json + (lambda _ + (let* ((plugins.d (string-append + #$output "/share/vagrant-plugins/plugins.d")) + (plugin.json (string-append + plugins.d "/" #$name ".json"))) + (mkdir-p plugins.d) + #$(with-extensions (list guile-json-4) + #~(begin + (use-modules (json)) + (call-with-output-file plugin.json + (lambda (port) + (scm->json + '((#$name + . + (("ruby_version" + . #$(package-version (this-package-input "ruby"))) + ("vagrant_version" + . #$(package-version (this-package-input "vagrant"))) + ("gem_version" . "") + ("require" . "") + ("installed_gem_version" . #$version) + ("sources" . #())))) + port))))))))))) + (inputs (list ruby vagrant)) + (synopsis "Reload a Vagrant VM as a provisioning step") + (description "This Vagrant plugin enables reloading a Vagrant VM as a +provisioning step.") + (home-page "http://www.vagrantup.com") + (license license:expat))) + +(define-public vagrant-vai + (package + (name "vagrant-vai") + (version "0.9.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "vai" version)) + (sha256 + (base32 + "041bi8hk03ybhacqzhw153j3knqhwvxn8aczzq6nikmpklcs4m4a")))) + (build-system ruby-build-system) + (arguments + (list + #:tests? #f ; tests involve running vagrant and downloading a box + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'install-plugin.json + (lambda _ + (let* ((plugins.d (string-append + #$output "/share/vagrant-plugins/plugins.d")) + (plugin.json (string-append + plugins.d "/" #$name ".json"))) + (mkdir-p plugins.d) + #$(with-extensions (list guile-json-4) + #~(begin + (use-modules (json)) + (call-with-output-file plugin.json + (lambda (port) + (scm->json + '(("vai" ;; #$name + . + (("ruby_version" + . #$(package-version (this-package-input "ruby"))) + ("vagrant_version" + . #$(package-version (this-package-input "vagrant"))) + ("gem_version" . "") + ("require" . "") + ("installed_gem_version" . #$version) + ("sources" . #())))) + port))))))))))) + (inputs (list ruby vagrant)) + (synopsis "Vagrant provisioning plugin to output an Ansible inventory") + (description "This plugin creates an Ansible inventory file containing the +created virtual machines and the respective ssh-parameters.") + (home-page "https://github.com/MatthewMi11er/vai") + (license license:expat))) + (define-public python-vagrant (package (name "python-vagrant") @@ -2598,7 +2966,7 @@ virtual machines.") (define-public bubblewrap (package (name "bubblewrap") - (version "0.10.0") + (version "0.11.0") (source (origin (method git-fetch) (uri (git-reference @@ -2607,7 +2975,7 @@ virtual machines.") (file-name (git-file-name name version)) (sha256 (base32 - "0paahq4y8fmdnipahgymsshi3klmi60lvcqhhg1020z7n1gni0hx")) + "1rb7dih12s9liwq2lfjdm1br6jaxkmdwsqjr6zx9wfyy0cnwr07h")) (patches (search-patches "bubblewrap-fix-locale-in-tests.patch")))) (build-system meson-build-system) (arguments @@ -2668,7 +3036,15 @@ by default and can be made read-only.") "/bochs-" version ".tar.gz")) (sha256 (base32 - "1al1fx8dbb0ny7a4wbngnz8pqav0nl6rhakb434jqnpka4mm8vyb")))) + "1al1fx8dbb0ny7a4wbngnz8pqav0nl6rhakb434jqnpka4mm8vyb")) + (snippet + #~(begin + (use-modules (guix build utils)) + ;; This file is non-free. + (delete-file "bios/i440fx.bin") + ;; make -C bios bios-clean + (for-each delete-file + (find-files "bios" "^BIOS-bochs-")))))) (build-system gnu-build-system) (arguments (list #:tests? #f ;no test suite @@ -2697,7 +3073,14 @@ by default and can be made read-only.") "--enable-pnic" "--enable-e1000" "--enable-using-libslirp" - "--with-vncsrv"))) + "--with-vncsrv") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'make-reproducible + (lambda _ + (substitute* "bios/Makefile.in" + (("BUILDDATE.*") + "BUILDDATE = `date --utc --date='@0'"))))))) (native-inputs (list pkg-config)) (inputs (list libslirp libx11 libvnc readline wxwidgets)) (home-page "https://bochs.sourceforge.io/") @@ -2924,33 +3307,12 @@ which is a hypervisor.") (base32 "1ab6mgrvnd49m0ay9fbfyd02xaf3qvkwhyyavra4a7wpz0brg54h")))) (build-system cargo-build-system) (arguments - (list - #:install-source? #f - #:cargo-inputs - (list rust-futures-0.3 - rust-libc-0.2 - rust-tokio-1 - rust-netlink-packet-core-0.7 - rust-netlink-packet-route-0.18 - rust-netlink-proto-0.11 - rust-rtnetlink-0.14 - rust-async-stream-0.3 - rust-os-info-3 - rust-pnet-datalink-0.35 ; any version - rust-pnet-base-0.35 ; any version - rust-ipnetwork-0.20 ; any version - rust-log-0.4 - rust-env-logger-0.10 - rust-clap-4 - rust-xenstore-rs-0.6 - ;; Unix-specific dependencies - rust-uname-0.1 - rust-syslog-6 - rust-sysctl-0.5))) + (list #:install-source? #f)) (native-inputs (list pkg-config xen ; Pull in Xen for libxenstore clang)) + (inputs (cargo-inputs 'xen-guest-agent)) (home-page "https://gitlab.com/xen-project/xen-guest-agent") (synopsis "Provides guest VM information to hosting Xen hypervisor") (description "The agent gathers some guest information, and writes them to @@ -3100,8 +3462,12 @@ use with virtualization provisioning tools") (arguments (list #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'fix-dependencies + (add-after 'unpack 'fix-marshmallow-and-dependencies (lambda _ + ;; From marshmallow: versionchanged:: 3.13.0 + ;; Replace ``missing`` [..] with ``load_default``. + (substitute* "transient/configuration.py" + (("missing") "load_default")) (substitute* "setup.py" (("(~|=)=") ">=") (("lark-parser>=[0-9.]*") "lark"))))))) |