summaryrefslogtreecommitdiff
path: root/gnu/packages/virtualization.scm
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2023-09-24 02:00:00 +0200
committerTobias Geerinckx-Rice <me@tobias.gr>2023-09-24 02:00:00 +0200
commit91097713eecefa10c8a04b5c152adb2e7b8c36bb (patch)
treedd777453fe7a9f858bc30a1c0ff1277053d4e93a /gnu/packages/virtualization.scm
parent11f1d72dd8b0cac83cf73156abce909008cd7cdf (diff)
gnu: xen: Update package style.
* gnu/packages/virtualization.scm (xen) [arguments]: Rewrite as G-expressions. Use SEARCH-INPUT-FILE whenever possible. Put SUBSTITUTE* features to use. [native-inputs, inputs]: Remove input labels.
Diffstat (limited to 'gnu/packages/virtualization.scm')
-rw-r--r--gnu/packages/virtualization.scm320
1 files changed, 153 insertions, 167 deletions
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 7ab3354e64..777c372f9e 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -2291,164 +2291,150 @@ DOS or Microsoft Windows.")
"1cdzpxbihkdn4za8ly0lgkbxrafjzbxjflhfn83kyg4bam1vv7mn"))))
(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")))
- (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 =")))))
- (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")))))
- (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))
- (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_C_INCLUDE_PATH" "CROSS_CPLUS_INCLUDE_PATH"
- "CROSS_LIBRARY_PATH"))
- (filter-environment! (lambda (e) (not (cross? e)))
- '("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,
- ;; but actually we don't want it to be there (yet).
- (filter-environment! (lambda (e)
- (not
- (string-contains e
- "mini-os-git-checkout")))
- '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
- "LIBRARY_PATH"))
- (setenv "EFI_VENDOR" "guix")))
- (replace 'build
- (lambda* (#:key make-flags #:allow-other-keys)
- (apply invoke "make" "world" make-flags))))))
+ (list
+ #:configure-flags
+ #~(list "--enable-rpath"
+ "--disable-qemu-traditional" ; tries to "git clone"
+ "--disable-rombios" ; tries 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=" #$output "/etc/init.d")
+ (string-append "--with-system-qemu="
+ (search-input-file %build-inputs
+ "bin/qemu-system-i386"))
+ (string-append "--with-system-seabios="
+ (search-input-file %build-inputs
+ "share/firmware/bios.bin"))
+ (string-append "--with-system-ovmf="
+ (search-input-file %build-inputs
+ "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=" #$output
+ "/etc/bash_completion.d")
+ (string-append "BOOT_DIR=" #$output "/boot")
+ (string-append "DEBUG_DIR=" #$output "/lib/debug")
+ (string-append "EFI_DIR=" #$output "/lib/efi")
+ "MINIOS_UPSTREAM_URL=")
+ #:test-target "test"
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'unpack-mini-os
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((mini-os (dirname (search-input-file inputs "minios.mk"))))
+ (copy-recursively mini-os "extras/mini-os"))))
+ (add-after 'unpack-mini-os 'patch
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "tools/firmware/Rules.mk"
+ (("override XEN_TARGET_ARCH = x86_32" match)
+ (string-append match "\noverride CC = "
+ (search-input-file inputs
+ "bin/i686-linux-gnu-gcc")))
+ (("^CFLAGS =$" match)
+ (string-append match " -I" (assoc-ref inputs "cross-libc")
+ "/include\n")))
+ (substitute* "config/x86_32.mk"
+ (("(CFLAGS += )-m32 -march=i686" _ match)
+ (string-append match "-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-(configs|readmes)") ""))
+ ;; Set rpath.
+ (substitute* "tools/pygrub/setup.py"
+ (("library_dirs =" match)
+ ;; TODO: extra_link_args = ['-Wl,-rpath=/opt/foo'],
+ (string-append "runtime_library_dirs = ['" #$output "/lib'],"
+ "\n" match)))))
+ (add-before 'configure 'patch-xen-script-directory
+ (lambda _
+ (substitute* '("configure"
+ "tools/configure"
+ "docs/configure")
+ (("(XEN_SCRIPT_DIR=).*" _ match)
+ (string-append match #$output "/etc/xen/scripts")))))
+ (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))
+ (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_C_INCLUDE_PATH"
+ "CROSS_CPLUS_INCLUDE_PATH"
+ "CROSS_LIBRARY_PATH"))
+ (filter-environment! (lambda (e) (not (cross? e)))
+ '("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,
+ ;; but actually we don't want it to be there (yet).
+ (filter-environment! (lambda (e)
+ (not
+ (string-contains e
+ "mini-os-git-checkout")))
+ '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
+ "LIBRARY_PATH"))
+ (setenv "EFI_VENDOR" "guix")))
+ (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)
- ("yajl" ,yajl)
- ("ncurses" ,ncurses)
- ("openssl" ,openssl)
- ("ovmf" ,ovmf)
- ("pixman" ,pixman)
- ("qemu" ,qemu-minimal)
- ("seabios" ,seabios)
- ("util-linux" ,util-linux "lib") ; uuid
- ; TODO: ocaml-findlib, ocaml-nox.
- ("xz" ,xz) ; for liblzma
- ("zlib" ,zlib)))
+ (list acpica ; TODO: patch iasl invocation
+ bridge-utils ; TODO: patch invocations
+ glib
+ iproute ; TODO: patch invocations
+ libaio
+ libx11
+ yajl
+ ncurses
+ openssl
+ ovmf
+ pixman
+ qemu-minimal
+ seabios
+ `(,util-linux "lib") ; uuid
+ ;; TODO: ocaml-findlib, ocaml-nox.
+ xz ; for liblzma
+ zlib))
(native-inputs
- `(("dev86" ,dev86)
- ("bison" ,bison)
- ("cmake" ,cmake-minimal)
- ("figlet" ,figlet)
- ("flex" ,flex)
- ("gettext" ,gettext-minimal)
- ("libnl" ,libnl)
- ("mini-os"
- ,(origin
+ (list dev86
+ bison
+ cmake-minimal
+ figlet
+ flex
+ gettext-minimal
+ libnl
+ (origin
(method git-fetch)
(uri (git-reference
(url "https://xenbits.xen.org/git-http/mini-os.git")
@@ -2459,17 +2445,17 @@ override CC = " (assoc-ref inputs "cross-gcc") "/bin/i686-linux-gnu-gcc"))
(commit "f57858b7e8ef8dd48394dd08cec2bef3c9fb92f5")))
(sha256
(base32 "04y7grxs47amvjcq1rq4jgk174rhid5m2z9w8wrv7rfd2xhazxy1"))
- (file-name (string-append name "-" version "-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")))
+ (file-name (string-append name "-" version "-mini-os-git-checkout")))
+ perl
+ ;; TODO: markdown.
+ pkg-config
+ python-2
+ wget
+ (cross-gcc "i686-linux-gnu"
+ #:xbinutils (cross-binutils "i686-linux-gnu")
+ #:libc (cross-libc "i686-linux-gnu"))
+ (cross-libc "i686-linux-gnu") ; header files
+ `(,(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