;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017 Andy Patterson <ajpatter@uwaterloo.ca>
;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
-;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages backup)
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
+ #:use-module (gnu packages build-tools)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages nettle)
#:use-module (gnu packages networking)
+ #:use-module (gnu packages ninja)
#:use-module (gnu packages onc-rpc)
#:use-module (gnu packages package-management)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages polkit)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-build)
+ #:use-module (gnu packages python-check)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26)
#:use-module (ice-9 match))
(define (qemu-patch commit file-name sha256-bv)
(define-public qemu
(package
(name "qemu")
- (version "5.1.0")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://download.qemu.org/qemu-"
- version ".tar.xz"))
- (sha256
- (base32
- "1rd41wwlvp0vpialjp2czs6i3lsc338xc72l3zkbb7ixjfslw5y9"))
- (patches (search-patches "qemu-build-info-manual.patch"))))
- (outputs '("out" "doc")) ;4.7 MiB of HTML docs
+ (version "5.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qemu.org/qemu-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1g0pvx4qbirpcn9mni704y03n3lvkmw2c0rbcwvydyr8ns4xh66b"))
+ (patches (search-patches "qemu-CVE-2021-20203.patch"
+ "qemu-build-info-manual.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Fix a bug in the do_ioctl_ifconf() function of qemu to
+ ;; make ioctl(…, SIOCGIFCONF, …) work for emulated 64 bit
+ ;; architectures. The size of struct ifreq is handled
+ ;; incorrectly.
+ ;; https://lists.nongnu.org/archive/html/qemu-devel/2021-01/msg01545.html
+ (substitute* '("linux-user/syscall.c")
+ (("^([[:blank:]]*)const argtype ifreq_arg_type.*$" line indent)
+ (string-append line indent "const argtype ifreq_max_type[] = "
+ "{ MK_STRUCT(STRUCT_ifmap_ifreq) };\n"))
+ (("^([[:blank:]]*)target_ifreq_size[[:blank:]]=.*$" _ indent)
+ (string-append indent "target_ifreq_size = "
+ "thunk_type_size(ifreq_max_type, 0);")))
+ ;; Delete the bundled meson copy.
+ (delete-file-recursively "meson")))))
+ (outputs '("out" "static" "doc")) ;5.3 MiB of HTML docs
(build-system gnu-build-system)
(arguments
- `(;; FIXME: Disable tests on i686 to work around
- ;; <https://bugs.gnu.org/40527>.
- #:tests? ,(or (%current-target-system)
+ ;; 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 (list "--enable-usb-redir" "--enable-opengl"
- "--enable-docs"
- (string-append "--smbd="
- (assoc-ref %outputs "out")
- "/libexec/samba-wrapper")
- "--audio-drv-list=alsa,pa,sdl")
+ #:configure-flags
+ (let ((gcc (string-append (assoc-ref %build-inputs "gcc") "/bin/gcc"))
+ (out (assoc-ref %outputs "out")))
+ (list (string-append "--cc=" gcc)
+ ;; Some architectures insist on using HOST_CC.
+ (string-append "--host-cc=" gcc)
+ (string-append "--prefix=" out)
+ "--sysconfdir=/etc"
+ (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)
+ (srfi srfi-26)
+ (ice-9 ftw)
(ice-9 match)
,@%gnu-build-system-modules)
#:phases
inputs)))
(set-path-environment-variable "C_INCLUDE_PATH"
'("include")
- input-directories)
- #t)))
+ input-directories))))
(add-after 'unpack 'extend-test-time-outs
(lambda _
;; These tests can time out on heavily-loaded and/or slow storage.
(string-append match "9")))))
(add-after 'unpack 'disable-unusable-tests
(lambda _
- (substitute* "tests/Makefile.include"
+ (substitute* "tests/meson.build"
;; Comment out the test-qga test, which needs /sys and
;; fails within the build environment.
- (("check-unit-.* tests/test-qga" all)
+ (("tests.*test-qga.*$" all)
(string-append "# " all))
;; Comment out the test-char test, which needs networking and
;; fails within the build environment.
(("check-unit-.* tests/test-char" all)
- (string-append "# " all)))
- (substitute* "tests/qtest/Makefile.include"
- ;; Disable the following test, which triggers a crash on some
- ;; x86 CPUs (see https://issues.guix.info/43048 and
- ;; https://bugs.launchpad.net/qemu/+bug/1896263).
- (("check-qtest-i386-y \\+= bios-tables-test" all)
- (string-append "# " all)))
- #t))
- (add-after 'patch-source-shebangs 'patch-/bin/sh-references
+ (string-append "# " all)))))
+ (add-after 'patch-source-shebangs 'patch-embedded-shebangs
(lambda _
;; 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")
(("/bin/sh") (which "sh")))
- #t))
+ (substitute* "Makefile"
+ (("SHELL = /usr/bin/env bash -o pipefail")
+ "SHELL = bash -o pipefail"))
+ (substitute* "tests/qemu-iotests/check"
+ (("#!/usr/bin/env python3")
+ (string-append "#!" (which "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 outputs (configure-flags '())
- #:allow-other-keys)
+ (lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
;; The `configure' script doesn't understand some of the
;; GNU options. Thus, add a new phase that's compatible.
(let ((out (assoc-ref outputs "out")))
(setenv "SHELL" (which "bash"))
-
- ;; While we're at it, patch for tests.
- (substitute* "tests/qemu-iotests/check"
- (("#!/usr/bin/env python3")
- (string-append "#!" (which "python3"))))
-
;; 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 configury, and fails.
+ ;; attempts to re-run the whole configuration, and fails.
(substitute* "configure"
(("#!/bin/sh")
(string-append "#!" (which "sh"))))
-
- ;; The binaries need to be linked against -lrt.
- (setenv "LDFLAGS" "-lrt")
- (apply invoke
- `("./configure"
- ,(string-append "--cc=" (which "gcc"))
- ;; Some architectures insist on using HOST_CC
- ,(string-append "--host-cc=" (which "gcc"))
- "--disable-debug-info" ; save build space
- "--enable-virtfs" ; just to be sure
- ,(string-append "--prefix=" out)
- ,(string-append "--sysconfdir=/etc")
- ,@configure-flags)))))
+ (mkdir-p "b/qemu")
+ (chdir "b/qemu")
+ (apply invoke "../../configure" configure-flags))))
+ ;; Configure, build and install QEMU user-emulation static binaries.
+ (add-after 'configure 'configure-user-static
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((gcc (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
+ (static (assoc-ref outputs "static"))
+ ;; 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" <>))))))))
;; 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.
(format port "#!/bin/sh
exec smbd $@")))
(chmod "samba-wrapper" #o755)
- (install-file "samba-wrapper" libexec))
- #t))
+ (install-file "samba-wrapper" libexec))))
(add-after 'install 'move-html-doc
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(qemu-doc (string-append doc "/share/doc/qemu-" ,version)))
(mkdir-p qemu-doc)
(rename-file (string-append out "/share/doc/qemu")
- (string-append qemu-doc "/html")))
- #t)))))
- (inputs ; TODO: Add optional inputs.
+ (string-append qemu-doc "/html"))))))))
+ (inputs ; TODO: Add optional inputs.
`(("alsa-lib" ,alsa-lib)
("attr" ,attr)
("glib" ,glib)
("gtk+" ,gtk+)
("libaio" ,libaio)
("libattr" ,attr)
- ("libcacard" ,libcacard) ; smartcard support
- ("libcap-ng" ,libcap-ng) ; virtfs support requires libcap-ng & libattr
+ ("libcacard" ,libcacard) ; smartcard support
+ ("libcap-ng" ,libcap-ng) ; virtfs support requires libcap-ng & libattr
("libdrm" ,libdrm)
("libepoxy" ,libepoxy)
("libjpeg" ,libjpeg-turbo)
("libpng" ,libpng)
("libseccomp" ,libseccomp)
- ("libusb" ,libusb) ;USB pass-through support
+ ("libusb" ,libusb) ;USB pass-through support
("mesa" ,mesa)
("ncurses" ,ncurses)
;; ("pciutils" ,pciutils)
("perl" ,perl)
("flex" ,flex)
("bison" ,bison)
+ ;; Using meson 0.57.1 enables reproducible QEMU builds.
+ ("meson" ,meson-next)
+ ("ninja" ,ninja)
("pkg-config" ,pkg-config)
("python-wrapper" ,python-wrapper)
("python-sphinx" ,python-sphinx)
- ("texinfo" ,texinfo)))
+ ("texinfo" ,texinfo)
+ ;; The following static libraries are required to build
+ ;; the static output of QEMU.
+ ("glib-static" ,glib-static)
+ ("pcre:static" ,pcre "static")
+ ("zlib:static" ,zlib "static")))
(home-page "https://www.qemu.org")
(synopsis "Machine emulator and virtualizer")
(description
(define-public qemu-minimal
;; QEMU without GUI support, only supporting the host's architecture
- (package (inherit qemu)
+ (package
+ (inherit qemu)
(name "qemu-minimal")
(synopsis
"Machine emulator and virtualizer (without GUI) for the host architecture")
(arguments
(substitute-keyword-arguments (package-arguments qemu)
- ((#:configure-flags _ '(list))
+ ((#:configure-flags configure-flags '(list))
;; Restrict to the host's architecture.
- (match (car (string-split (or (%current-target-system)
- (%current-system))
- #\-))
- ("i686"
- '(list "--target-list=i386-softmmu"))
- ("x86_64"
- '(list "--target-list=i386-softmmu,x86_64-softmmu"))
- ("mips64"
- '(list (string-append "--target-list=mips-softmmu,mipsel-softmmu,"
- "mips64-softmmu,mips64el-softmmu")))
- ("mips"
- '(list "--target-list=mips-softmmu,mipsel-softmmu"))
- ("aarch64"
- '(list "--target-list=arm-softmmu,aarch64-softmmu"))
- ("arm"
- '(list "--target-list=arm-softmmu"))
- ("alpha"
- '(list "--target-list=alpha-softmmu"))
- ("powerpc64"
- '(list "--target-list=ppc-softmmu,ppc64-softmmu"))
- ("powerpc"
- '(list "--target-list=ppc-softmmu"))
- ("s390"
- '(list "--target-list=s390x-softmmu"))
- ("riscv"
- '(list "--target-list=riscv32-softmmu,riscv64-softmmu"))
- (else ; An empty list actually builds all the targets.
- ''())))))
+ (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.
+ '()))))
+ `(cons ,target-list-arg ,configure-flags)))))
;; Remove dependencies on optional libraries, notably GUI libraries.
(native-inputs (fold alist-delete (package-native-inputs qemu)
- '("gettext")))
+ '("gettext")))
(inputs (fold alist-delete (package-inputs qemu)
'("libusb" "mesa" "sdl2" "spice" "virglrenderer" "gtk+"
"usbredir" "libdrm" "libepoxy" "pulseaudio" "vde2"
("python-bitarray" ,python-bitarray)
("python-paramiko" ,python-paramiko)
("python-psutil" ,python-psutil)))
- (home-page "http://www.ganeti.org/")
+ (home-page "https://www.ganeti.org/")
(synopsis "Cluster-based virtual machine management system")
(description
"Ganeti is a virtual machine management tool built on top of existing
(native-inputs
`(("glib" ,glib "bin") ; glib-mkenums, etc.
("gobject-introspection" ,gobject-introspection)
- ("gtk-doc" ,gtk-doc)
+ ("gtk-doc" ,gtk-doc/stable)
("vala" ,vala)
("intltool" ,intltool)
("pkg-config" ,pkg-config)
(define-public lxc
(package
(name "lxc")
- (version "3.1.0")
+ (version "4.0.6")
(source (origin
(method url-fetch)
(uri (string-append
version ".tar.gz"))
(sha256
(base32
- "1igxqgx8q9cp15mcp1y8j564bl85ijw04jcmgb1s5bmfbg1751sd"))))
+ "0qz4l7mlhq7hx53q606qgvkyzyr01glsw290v8ppzvxn1fydlrci"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(define-public libvirt
(package
(name "libvirt")
- (version "5.8.0")
+ (version "7.1.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://libvirt.org/sources/libvirt-"
version ".tar.xz"))
(sha256
- (base32 "0m8cqaqflvys5kaqpvb0qr4k365j09jc5xk6x70yvg8qkcl2hcz2"))
+ (base32 "0v50ckf56h6jd9bmqwp0lh2cmb7qqjmcb6y3mz2i2r15h06ih3w7"))
(patches
- (search-patches "libvirt-create-machine-cgroup.patch"))))
- (build-system gnu-build-system)
+ (search-patches "libvirt-do-not-create-var-dirs.patch"))))
+ (build-system meson-build-system)
(arguments
- `(#:configure-flags
- (list "--with-qemu"
- "--with-qemu-user=nobody"
- "--with-qemu-group=kvm"
- "--with-polkit"
- (string-append "--docdir=" (assoc-ref %outputs "out") "/share/doc/"
- ,name "-" ,version)
- "--sysconfdir=/etc"
- "--localstatedir=/var")
+ `(#:meson ,meson-0.55 ;; libvirt requires meson 0.54 or higher.
+ #:configure-flags
+ (list "-Ddriver_qemu=enabled"
+ "-Dqemu_user=nobody"
+ "-Dqemu_group=kvm"
+ "-Dpolkit=enabled")
#:phases
(modify-phases %standard-phases
- (add-before 'configure 'fix-BOURNE_SHELL-definition
- ;; BOURNE_SHELL is hard-#defined to ‘/bin/sh’, causing test failures.
+ (add-after 'unpack 'fix-sysconfdir-and-localstatedir
(lambda _
- (substitute* "config.h.in"
- (("/bin/sh") (which "sh")))
- #t))
- (add-before 'configure 'patch-libtirpc-file-names
- (lambda* (#:key inputs #:allow-other-keys)
- ;; libvirt uses an m4 macro instead of pkg-config to determine where
- ;; the RPC headers are located. Tell it to look in the right place.
- (substitute* "configure"
- (("/usr/include/tirpc") ;defined in m4/virt-xdr.m4
- (string-append (assoc-ref inputs "libtirpc")
- "/include/tirpc")))
+ (substitute* "meson.build"
+ ;; We set the prefix to be the package output, but we need
+ ;; localstatedir to be /var. Sadly the build system doesn't
+ ;; seem to allow that easily.
+ (("localstatedir = prefix / get_option\\('localstatedir'\\)")
+ "localstatedir = get_option('localstatedir')")
+ ;; On the other hand, we keep sysconfdir using the prefix so
+ ;; that we install configuration files in the package output.
+ ;; However, we need to make sure the C code refers to /etc via
+ ;; SYSCONFDIR, and not the read-only configuration in the
+ ;; package output.
+ (("set_quoted\\('SYSCONFDIR', sysconfdir\\)")
+ "set_quoted('SYSCONFDIR', '/etc')"))
#t))
(add-before 'configure 'disable-broken-tests
(lambda _
- (let ((tests (list "commandtest" ; hangs idly
- "qemuxml2argvtest" ; fails
- "qemuhotplugtest" ; fails
- "virnetsockettest" ; tries to network
- "virshtest"))) ; fails
- (substitute* "tests/Makefile.in"
- (((format #f "(~a)\\$\\(EXEEXT\\)" (string-join tests "|")))
- ""))
- #t)))
- (replace 'install
- ;; Since the sysconfdir and localstatedir should be /etc and /var
- ;; at runtime, we must prevent writing to them at installation
- ;; time.
- (lambda* (#:key make-flags #:allow-other-keys)
- (apply invoke "make" "install"
- "sysconfdir=/tmp/etc"
- "localstatedir=/tmp/var"
- make-flags))))))
+ (substitute* "tests/meson.build"
+ (("\\{ 'name': 'commandtest'.*") "") ; hangs idly
+ (("\\{ 'name': 'qemuxml2argvtest'.*") "") ; fails
+ (("\\{ 'name': 'virnetsockettest'.*") "")) ; tries to network
+ #t)))))
(inputs
`(("libxml2" ,libxml2)
("eudev" ,eudev)
("perl" ,perl)
("pkg-config" ,pkg-config)
("polkit" ,polkit)
- ("python" ,python-wrapper)))
+ ("python" ,python-wrapper)
+ ("python-docutils" ,python-docutils) ;for rst2html
+ ("rpcsvc-proto" ,rpcsvc-proto))) ;for 'rpcgen'
(home-page "https://libvirt.org")
(synopsis "Simple API for virtualization")
(description "Libvirt is a C toolkit to interact with the virtualization
(define-public skopeo
(package
(name "skopeo")
- (version "1.2.0")
+ (version "1.2.2")
(source (origin
(method git-fetch)
(uri (git-reference
(file-name (git-file-name name version))
(sha256
(base32
- "1v7k3ki10i6082r7zswblyirx6zck674y6bw3plssw4p1l2611rd"))))
+ "03sznybn3rqjyplc6w4b7mfa6gas8db15p5vnmfm1xqw72ldylgc"))))
(build-system go-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
(define-public xen
(package
(name "xen")
- (version "4.13.0")
+ (version "4.14.1")
(source (origin
(method git-fetch)
(uri (git-reference
(file-name (git-file-name name version))
(sha256
(base32
- "0py50n995gv909i0d1lfdcj9wcp5g1d5z6m2291jqqlfyany138g"))))
+ "1r90rvypw76ya9clqw5p02gm1k8hxz73f7gr95ca778nnzvb7xjw"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
new-search-path ":")))
(setenv env-name new-env-value)))
environment-variable-names))
- (setenv "CROSS_CPATH" (getenv "CPATH"))
+ (setenv "CROSS_C_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))
+ (setenv "CROSS_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH"))
(setenv "CROSS_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
(filter-environment! cross?
- '("CROSS_CPATH"
+ '("CROSS_C_INCLUDE_PATH" "CROSS_CPLUS_INCLUDE_PATH"
"CROSS_LIBRARY_PATH"))
(filter-environment! (lambda (e) (not (cross? e)))
- '("CPATH"
+ '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
"LIBRARY_PATH"))
;; Guix tries to be helpful and automatically adds
;; mini-os-git-checkout/include to the include path,
(not
(string-contains e
"mini-os-git-checkout")))
- '("CPATH"
+ '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
"LIBRARY_PATH"))
(setenv "EFI_VENDOR" "guix")
#t))
(define-public osinfo-db
(package
(name "osinfo-db")
- (version "20201011")
+ (version "20201218")
(source (origin
(method url-fetch)
(uri (string-append "https://releases.pagure.org/libosinfo/osinfo-db-"
version ".tar.xz"))
(sha256
(base32
- "1zzx5gsqgzg2zki6h8vl0h7kpcrk5i2s1qhz7gcb18s7g99px8aj"))))
+ "0ydbindwgw7kg861rqii5036gq0dbbbmv35dzrmmv937ddfsxwh0"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
libosinfo library. It provides information about guest operating systems for
use with virtualization provisioning tools")
(license license:lgpl2.0+)))
+
+(define-public python-transient
+ (package
+ (name "python-transient")
+ (version "0.12")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "transient" version))
+ (sha256
+ (base32
+ "148yiqrmcscsi6787y0f27i1y9cf0gcw3mqfv5frhpmsmv62mv5z"))))
+ (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
+ `(("python-beautifultable" ,python-beautifultable)
+ ("python-click" ,python-click)
+ ("python-importlib-resources"
+ ,python-importlib-resources)
+ ("python-lark-parser" ,python-lark-parser)
+ ("python-marshmallow" ,python-marshmallow)
+ ("python-progressbar2" ,python-progressbar2)
+ ("python-requests" ,python-requests)
+ ("python-toml" ,python-toml)))
+ (native-inputs
+ `(("python-black" ,python-black)
+ ("python-mypy" ,python-mypy)
+ ("python-pyhamcrest" ,python-pyhamcrest)
+ ("python-twine" ,python-twine)))
+ (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)))