From 938f153784e17d055d73f1686b03c1f0642c8340 Mon Sep 17 00:00:00 2001 From: Jean-Pierre De Jesus DIAZ Date: Fri, 19 Jan 2024 14:54:47 +0100 Subject: [PATCH] gnu: Add make-crust-tools. * gnu/packages/firmware.scm (make-crust-tools): New procedure. Change-Id: Iac05ecf1796e4c10692a423c12423ea9b078d141 --- gnu/packages/firmware.scm | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 129dd0dfdd..41fe55eb2e 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -1252,6 +1252,50 @@ AR100.") ;; Most files are dual-licensed "BSD-3 OR GPL2", a few are GPL2 only. (license (list license:bsd-3 license:gpl2))))) +(define make-crust-tools + (mlambda (platform firmware) + (package + (inherit firmware) + (name (string-append "crust-" + (string-replace-substring platform "_" "-") + "-tools")) + (arguments + (list #:make-flags + #~(list "V=1" + "LEX=flex" + (string-append "HOSTAR=" #$(ar-for-target)) + (string-append "HOSTCC=" #$(cc-for-target))) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'do-not-build-tests + (lambda _ + ;; Attempting to build the tools test binary on a + ;; non-aarch64 architecture fails with: "No cache + ;; cleaning implementation available for this + ;; architecture". Avoid building it (see: + ;; https://github.com/crust-firmware/crust/issues/182). + (substitute* "tools/Makefile" + (("tools-y \\+= test") "")))) + (replace 'configure + (lambda* (#:key inputs native-inputs #:allow-other-keys) + (copy-file (search-input-file inputs "/libexec/.config") + ".config"))) + (replace 'build + (lambda* (#:key make-flags parallel-build? + #:allow-other-keys) + (apply invoke "make" "tools" + `(,@(if parallel-build? + `("-j" + ,(number->string (parallel-job-count))) + '()) + ,@make-flags)))) + (replace 'install + (lambda _ + (install-file "build/tools/load" + (string-append #$output "/bin"))))))) + (synopsis "Firmware for Allwinner sunxi SoCs (tools)") + (inputs (list firmware))))) + (define-public crust-pinebook (make-crust-package "pinebook"))