~ruther/guix-local

edb794bbd45a3e290c678d3f50863278b8f09799 — spacecadet@purge.sh 2 years ago c67e8c1
gnu: ovmf-arm: Update to use GCC5.

* gnu/packages/firmware.scm (ovmf-arm): Updating OVMF to 202308 requires
GCC5, packages inheriting from ovmf also need to be updated.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
Change-Id: I3a7b3f450e0da39129e7cffce7482b8e391e3858
1 files changed, 33 insertions(+), 30 deletions(-)

M gnu/packages/firmware.scm
M gnu/packages/firmware.scm => gnu/packages/firmware.scm +33 -30
@@ 1018,36 1018,39 @@ Virtual Machines.  OVMF contains a sample UEFI firmware for QEMU and KVM.")
      (supported-systems %supported-systems))))

(define-public ovmf-arm
  (package
    (inherit ovmf)
    (name "ovmf-arm")
    (native-inputs
     (append (package-native-inputs ovmf)
             (if (not (string-prefix? "armhf" (%current-system)))
                 `(("cross-gcc" ,(cross-gcc "arm-linux-gnueabihf"))
                   ("cross-binutils" ,(cross-binutils "arm-linux-gnueabihf")))
                 '())))
    (arguments
     (substitute-keyword-arguments (package-arguments ovmf)
       ((#:phases phases)
        #~(modify-phases #$phases
            #$@(if (string-prefix? "armhf" (%current-system))
                   '()
                   '((add-before 'configure 'set-env
                       (lambda _
                         (setenv "GCC49_ARM_PREFIX" "arm-linux-gnueabihf-")))))
            (replace 'build
              (lambda _
                (invoke "build" "-a" "ARM" "-t" "GCC49"
                        "-p" "ArmVirtPkg/ArmVirtQemu.dsc")))
            (delete 'build-x64)
            (replace 'install
              (lambda _
                (let ((fmw (string-append #$output "/share/firmware")))
                  (mkdir-p fmw)
                  (copy-file "Build/ArmVirtQemu-ARM/RELEASE_GCC49/FV/QEMU_EFI.fd"
                             (string-append fmw "/ovmf_arm.bin")))))))))
    (supported-systems %supported-systems)))
  (let ((toolchain-ver "GCC5"))
    (package
      (inherit ovmf)
      (name "ovmf-arm")
      (native-inputs
       (append (package-native-inputs ovmf)
               (if (not (string-prefix? "armhf" (%current-system)))
                   `(("cross-gcc" ,(cross-gcc "arm-linux-gnueabihf"))
                     ("cross-binutils" ,(cross-binutils "arm-linux-gnueabihf")))
                   '())))
      (arguments
       (substitute-keyword-arguments (package-arguments ovmf)
         ((#:phases phases)
          #~(modify-phases #$phases
              #$@(if (string-prefix? "armhf" (%current-system))
                     '()
                     #~((add-before 'configure 'set-env
                          (lambda _
                            (setenv (string-append #$toolchain-ver "_ARM_PREFIX")
                                    "arm-linux-gnueabihf-")))))
              (replace 'build
                (lambda _
                  (invoke "build" "-a" "ARM" "-t" #$toolchain-ver
                          "-p" "ArmVirtPkg/ArmVirtQemu.dsc")))
              (delete 'build-x64)
              (replace 'install
                (lambda _
                  (let ((fmw (string-append #$output "/share/firmware")))
                    (mkdir-p fmw)
                    (copy-file (string-append "Build/ArmVirtQemu-ARM/RELEASE_"
                                              #$toolchain-ver "/FV/QEMU_EFI.fd")
                               (string-append fmw "/ovmf_arm.bin")))))))))
      (supported-systems %supported-systems))))

(define* (make-arm-trusted-firmware platform
                                    #:key (triplet "aarch64-linux-gnu"))