diff options
Diffstat (limited to 'gnu/packages')
-rw-r--r-- | gnu/packages/virtualization.scm | 320 |
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 |