[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 3/5] gnu: Add ovmf.
From: |
Marius Bakke |
Subject: |
Re: [PATCH 3/5] gnu: Add ovmf. |
Date: |
Fri, 10 Feb 2017 01:15:55 +0100 |
User-agent: |
Notmuch/0.23.5 (https://notmuchmail.org) Emacs/25.1.1 (x86_64-unknown-linux-gnu) |
David Craven <address@hidden> writes:
> * gnu/packages/grub.scm (ovmf): New variable.
I would place this too in firmware.scm.
> ---
> gnu/packages/grub.scm | 82
> +++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 82 insertions(+)
>
> diff --git a/gnu/packages/grub.scm b/gnu/packages/grub.scm
> index a775e213c..4da01ceb9 100644
> --- a/gnu/packages/grub.scm
> +++ b/gnu/packages/grub.scm
> @@ -22,11 +22,14 @@
>
> (define-module (gnu packages grub)
> #:use-module (guix download)
> + #:use-module (guix git-download)
> #:use-module (guix packages)
> #:use-module (guix utils)
> #:use-module ((guix licenses) #:prefix license:)
> #:use-module (guix build-system gnu)
> #:use-module (gnu packages)
> + #:use-module (gnu packages admin)
> + #:use-module (gnu packages assembly)
> #:use-module (gnu packages flex)
> #:use-module (gnu packages disk)
> #:use-module (gnu packages bison)
> @@ -188,3 +191,82 @@ SeaBIOS can run in an emulator or it can run natively on
> X86 hardware with the
> use of coreboot.")
> ;; Dual licensed.
> (license (list license:gpl3+ license:lgpl3+))))
> +
> +;; OVMF is part of the edk2 source tree.
> +(define edk2-commit "13a50a6fe1dcfa6600c38456ee24e0f9ecf51b5f")
> +(define edk2-version (git-version "20170116" "1" edk2-commit))
> +(define edk2-origin
> + (origin
> + (method git-fetch)
> + (uri (git-reference
> + (url "https://github.com/tianocore/edk2")
> + (commit edk2-commit)))
> + (file-name (git-file-name "edk2" edk2-version))
> + (sha256
> + (base32
> + "1gy2332kdqk8bjzpcsripx10896rbvgl0ic7r344kmpiwdgm948b"))))
> +
> +(define-public ovmf
> + (package
> + (name "ovmf")
> + (version edk2-version)
> + (source edk2-origin)
> + (build-system gnu-build-system)
> + (native-inputs
> + `(("acpica" ,acpica)
> + ("nasm" ,nasm)
> + ("python-2" ,python-2)
> + ("util-linux" ,util-linux)))
> + (arguments
> + `(#:tests? #f ; No check target.
> + #:phases
> + (modify-phases %standard-phases
> + (replace 'configure
> + (lambda _
> + (let* ((cwd (getcwd))
> + (tools (string-append cwd "/BaseTools"))
> + (bin (string-append tools "/BinWrappers/PosixLike")))
> + (setenv "WORKSPACE" cwd)
> + (setenv "EDK_TOOLS_PATH" tools)
> + (setenv "PATH" (string-append (getenv "PATH") ":" bin))
> + (system* "bash" "edksetup.sh" "BaseTools")
> + (substitute* "Conf/target.txt"
> + (("^TARGET[ ]*=.*$") "TARGET = RELEASE\n")
> + (("^TOOL_CHAIN_TAG[ ]*=.*$") "TOOL_CHAIN_TAG = GCC49\n")
> + (("^MAX_CONCURRENT_THREAD_NUMBER[ ]*=.*$")
> + (format #f "MAX_CONCURRENT_THREAD_NUMBER = ~a~%"
> + (number->string (parallel-job-count)))))
> + ;; Build build support.
> + (setenv "BUILD_CC" "gcc")
> + (zero? (system* "make" "-C" (string-append tools
> "/Source/C"))))))
> + (add-after 'build 'build-ia32
I would simply (replace 'build ...) here, instead of deleting it and
using add-after.
> + (lambda _
> + (substitute* "Conf/target.txt"
> + (("^TARGET_ARCH[ ]*=.*$") "TARGET_ARCH = IA32\n")
> + (("^ACTIVE_PLATFORM[ ]*=.*$")
> + "ACTIVE_PLATFORM = OvmfPkg/OvmfPkgIa32.dsc\n"))
> + (zero? (system* "build"))))
> + (add-after 'build 'build-x64
> + (lambda _
> + (substitute* "Conf/target.txt"
> + (("^TARGET_ARCH[ ]*=.*$") "TARGET_ARCH = X64\n")
> + (("^ACTIVE_PLATFORM[ ]*=.*$")
> + "ACTIVE_PLATFORM = OvmfPkg/OvmfPkgX64.dsc\n"))
> + (zero? (system* "build"))))
> + (delete 'build)
> + (replace 'install
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))
> + (fmw (string-append out "/share/firmware")))
> + (mkdir-p fmw)
> + (copy-file "Build/OvmfIa32/RELEASE_GCC49/FV/OVMF.fd"
> + (string-append fmw "/ovmf_ia32.bin"))
> + (copy-file "Build/OvmfX64/RELEASE_GCC49/FV/OVMF.fd"
> + (string-append fmw "/ovmf_x64.bin")))
> + #t)))))
> + (supported-systems '("x86_64-linux" "i686-linux"))
Is it not possible to build this firmware on (not for) other archs?
> + (home-page "http://www.tianocore.org")
> + (synopsis "UEFI firmware for QEMU")
> + (description "OVMF is an EDK II based project to enable UEFI support for
> +Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.")
> + (license license:expat)))
There appears to also be a good number of bsd-{2,3,4} licensed files in
this distribution. I've tested both this and seabios with qemu, great
work! :-)
> --
> 2.11.0
signature.asc
Description: PGP signature