diff mbox series

[bug#37466,WIP,v7,2/4] gnu: Add heads.

Message ID 20200601105441.13726-3-dannym@scratchpost.org
State New
Headers show
Series Add heads and co. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job

Commit Message

Danny Milosavljevic June 1, 2020, 10:54 a.m. UTC
* gnu/packages/heads.scm (heads): New variable.
---
 gnu/packages/heads.scm | 439 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 438 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 86ab487b0f..8182b2ecd4 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -109,7 +109,7 @@ 
              (substitute* "defs.sh"
               (("touch \"[$]2/extracted\"")
                (string-append "touch \"$2/extracted\"
-for s in mkinstalldirs move-if-change compile depcomp callprocs configure \\
+set -e ; for s in mkinstalldirs move-if-change compile depcomp callprocs configure \\
 mkdep compile libtool-ldflags config.guess install-sh missing config.sub \\
 config.rpath progtest.m4 lib-ld.m4 acx.m4 gen-fixed.sh mkheader.sh ylwrap \\
 merge.sh godeps.sh lock-and-run.sh print-sysroot-suffix.sh mkconfig.sh \\
@@ -174,3 +174,440 @@  done
                (base32
                 "12nhr8zrw4sjzrvpf38vl55bq5nm05qkd7nq76as443f0xq7xwnd"))
               (patches (search-patches "elfutils-tests-ptrace.patch"))))))
+
+(define heads
+  (let ((revision "3")
+        (commit "4245aec85796523945da51596d4d4af864288843"))
+  (package
+    (name "heads")
+    (version (git-version "0.1" revision commit))
+    (source
+     (origin
+      (method git-fetch)
+      (uri (git-reference
+             (url "https://github.com/osresearch/heads.git")
+             (commit commit)))
+      (file-name (git-file-name name version))
+      (sha256
+       (base32
+        "0ddph9bpbi6sf6dj5hp6018czfw46s553xzikw9xcd6x76j3q1c6"))
+      (patches (search-patches "heads-make-environment.patch"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("bash" ,bash)
+       ("git" ,git)
+       ("perl" ,perl)
+       ("cpio" ,cpio)
+       ("m4" ,m4)
+       ("bison" ,bison)
+       ("flex" ,flex)
+       ("curl" ,curl) ; unused
+       ("zlibx" ,zlib)
+       ("musl-cross" ,musl-cross)
+       ;("musl-cross-i386" ,musl-cross-i386)
+       ("target-musl-cross"
+        ,(origin
+          (method url-fetch)
+          (uri "https://github.com/richfelker/musl-cross-make/archive/38e52db8358c043ae82b346a2e6e66bc86a53bc1.tar.gz")
+          (file-name "musl-cross-38e52db8358c043ae82b346a2e6e66bc86a53bc1.tar.gz")
+          (sha256
+           (base32
+            "0071ml3d42w8m59dc1zvl9pk931zcxsyflqacnwg5c6s7mnmvf5l"))))
+       ;; Ours would be too new for musl-cross binutils.
+       ;; See also https://bbs.archlinux.org/viewtopic.php?id=242682
+       ("elfutils" ,elfutils-0.174)
+       ("bc" ,bc)
+       ("findutils" ,findutils)
+       ("flashtools"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/osresearch/flashtools.git")
+                 (commit "9acce09aeb635c5bef01843e495b95e75e8da135")))
+           (file-name "flashtools-checkout")
+           (sha256
+            (base32 "0r4gj3nzr67ycd39k1vjzxfzkp90yacrdgxhc1z5jfvxfq4x91c1"))))
+       ("tpmtotp"
+        ,(origin
+           (method url-fetch)
+           (uri "https://github.com/osresearch/tpmtotp/archive/18b860fdcf5a55537c8395b891f2b2a5c24fc00a.tar.gz")
+           (file-name "tpmtotp-18b860fdcf5a55537c8395b891f2b2a5c24fc00a.tar.gz")
+           (sha256
+            (base32 "0v30biwwqyqf06xnhmnwwjgb77m3476fvp8d4823x0xgwjqg50hh"))))
+       ("msrtools"
+        ,(origin
+           (method url-fetch)
+           (uri "https://github.com/osresearch/msr-tools/archive/572ef8a2b873eda15a322daa48861140a078b92c.tar.gz")
+           (file-name "msr-tools-572ef8a2b873eda15a322daa48861140a078b92c.tar.gz")
+           (sha256
+            (base32 "1h3a1rai47r0dxiiv0i3xj0fjng15n6sxj8mw9gj0154s284fmc0"))))
+       ("coreboot-blobs"
+        ,(origin
+           (method url-fetch)
+           (uri "https://www.coreboot.org/releases/coreboot-blobs-4.8.1.tar.xz")
+           (sha256
+            (base32 "15g222xj1zdn8i8qz0pw2jf28h66dljb1q5isw2ml05gwfd51ahq"))))
+       ("coreboot"
+        ,(origin
+           (method url-fetch)
+           (uri "https://www.coreboot.org/releases/coreboot-4.8.1.tar.xz")
+           (sha256
+            (base32 "08xdd5drk8yd37a3z5hc81qmgsybv6201i28hcggxh980vdz9pgh"))))
+       ("linux"
+        ,(origin
+           (method url-fetch)
+           (uri "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.62.tar.xz")
+           (sha256
+            (base32 "1ar29ikway5im17iw9ag1fxivr7sbj8nhxxw347xqmp1irz4vjji"))))
+       ("musl" ; useless
+        ,(origin
+           (method url-fetch)
+           (uri "https://www.musl-libc.org/releases/musl-1.1.15.tar.gz")
+           (sha256
+            (base32 "1ymhxkskivzph0q34zadwfglc5gyahqajm7chqqn2zraxv3lgr4p"))))
+       ("busybox"
+        ,(origin
+           (method url-fetch)
+           (uri "https://busybox.net/downloads/busybox-1.28.0.tar.bz2")
+           (sha256
+            (base32 "1701carjf02y7r3djm1yvyd5kzrcxm4szinp7agfv7fmvfvm6ib0"))))
+       ("zlib"
+        ,(origin
+           (method url-fetch)
+           (uri "https://www.zlib.net/zlib-1.2.11.tar.gz")
+           (sha256
+            (base32 "18dighcs333gsvajvvgqp8l4cx7h1x7yx9gd5xacnk80spyykrf3"))))
+       ("mbedtls"
+        ,(origin
+           (method url-fetch)
+           (uri "https://tls.mbed.org/download/mbedtls-2.4.2-gpl.tgz")
+           (sha256
+            (base32 "17r9qs585gqghcf5yavb1cnvsigl0f8r0k8rklr5a855hrajs7yh"))))
+       ("kexec-tools"
+        ,(origin
+           (method url-fetch)
+           (uri "https://kernel.org/pub/linux/utils/kernel/kexec/kexec-tools-2.0.20.tar.gz")
+           (sha256
+            (base32 "05ksnlzal3sfnix9qds6qql1sjn3fxbdwgp3ncxxxjg032cdf5nb"))))
+       ("qrencode"
+        ,(origin
+           (method url-fetch)
+           (uri "https://fukuchi.org/works/qrencode/qrencode-3.4.4.tar.gz")
+           (sha256
+            (base32 "0wiagx7i8p9zal53smf5abrnh9lr31mv0p36wg017401jrmf5577"))))
+       ("pciutils"
+        ,(origin
+           (method url-fetch)
+           (uri "https://www.kernel.org/pub/software/utils/pciutils/pciutils-3.5.4.tar.xz")
+           (sha256
+            (base32 "0rpy7kkb2y89wmbcbfjjjxsk2x89v5xxhxib4vpl131ip5m3qab4"))))
+       ("util-linux"
+        ,(origin
+           (method url-fetch)
+           (uri "https://www.kernel.org/pub/linux/utils/util-linux/v2.29/util-linux-2.29.2.tar.xz")
+           (sha256
+            (base32 "1qz81w8vzrmy8xn9yx7ls4amkbgwx6vr62pl6kv9g7r0g3ba9kmc"))))
+       ("flashrom"
+        ,(origin
+           (method url-fetch)
+           (uri "https://download.flashrom.org/releases/flashrom-v1.2.tar.bz2")
+           (sha256
+            (base32 "0ax4kqnh7kd3z120ypgp73qy1knz47l6qxsqzrfkd97mh5cdky71"))))
+       ("popt"
+        ,(origin
+           (method url-fetch)
+           (uri "https://launchpad.net/popt/head/1.16/+download/popt-1.16.tar.gz")
+           (sha256
+            (base32 "1j2c61nn2n351nhj4d25mnf3vpiddcykq005w2h6kw79dwlysa77"))))
+       ("lvm2"
+        ,(origin
+           (method url-fetch)
+           (uri "https://mirrors.kernel.org/sourceware/lvm2/LVM2.2.02.168.tgz")
+           (sha256
+            (base32 "03b62hcsj9z37ckd8c21wwpm07s9zblq7grfh58yzcs1vp6x38r3"))))
+       ("cryptsetup"
+        ,(origin
+           (method url-fetch)
+           (uri "https://www.kernel.org/pub/linux/utils/cryptsetup/v1.7/cryptsetup-1.7.3.tar.xz")
+           (sha256
+            (base32 "00nwd96m9yq4k3cayc04i5y7iakkzana35zxky6hpx2w8zl08axg"))))
+       ("libgpg-error"
+        ,(origin
+           (method url-fetch)
+           (uri "https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.37.tar.bz2")
+           (sha256
+            (base32 "0qwpx8mbc2l421a22l0l1hpzkip9jng06bbzgxwpkkvk5bvnybdk"))))
+       ("libgcrypt"
+        ,(origin
+           (method url-fetch)
+           (uri "https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.5.tar.bz2")
+           (sha256
+            (base32 "1hvsazms1bfd769q0ngl0r9g5i4m9mpz9jmvvrdzyzk3rfa2ljiv"))))
+       ("libksba"
+        ,(origin
+           (method url-fetch)
+           (uri "https://gnupg.org/ftp/gcrypt/libksba/libksba-1.3.5.tar.bz2")
+           (sha256
+            (base32 "0h53q4sns1jz1pkmhcz5wp9qrfn9f5g9i3vjv6dafwzzlvblyi21"))))
+       ("libassuan"
+        ,(origin
+           (method url-fetch)
+           (uri "https://gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.3.tar.bz2")
+           (sha256
+            (base32 "00p7cpvzf0q3qwcgg51r9d0vbab4qga2xi8wpk2fgd36710b1g4i"))))
+       ("npth"
+        ,(origin
+           (method url-fetch)
+           (uri "https://gnupg.org/ftp/gcrypt/npth/npth-1.6.tar.bz2")
+           (sha256
+            (base32 "1lg2lkdd3z1s3rpyf88786l243adrzyk9p4q8z9n41ygmpcsp4qk"))))
+       ("libusb"
+        ,(origin
+           (method url-fetch)
+           (uri "https://downloads.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.21/libusb-1.0.21.tar.bz2")
+           (sha256
+            (base32 "0jw2n5kdnrqvp7zh792fd6mypzzfap6jp4gfcmq4n6c1kb79rkkx"))))
+       ("libusb-compat"
+        ,(origin
+           (method url-fetch)
+           (uri "https://downloads.sourceforge.net/project/libusb/libusb-compat-0.1/libusb-compat-0.1.5/libusb-compat-0.1.5.tar.bz2")
+           (sha256
+            (base32 "0nn5icrfm9lkhzw1xjvaks9bq3w6mjg86ggv3fn7kgi4nfvg8kj0"))))
+       ("dropbear"
+        ,(origin
+           (method url-fetch)
+           (uri "https://matt.ucc.asn.au/dropbear/releases/dropbear-2016.74.tar.bz2")
+           (sha256
+            (base32 "14c8f4gzixf0j9fkx68jgl85q7b05852kk0vf09gi6h0xmafl817"))))
+       ("pinentry"
+        ,(origin
+           (method url-fetch)
+           (uri "https://www.gnupg.org/ftp/gcrypt/pinentry/pinentry-1.1.0.tar.bz2")
+           (sha256
+            (base32 "0w35ypl960pczg5kp6km3dyr000m1hf0vpwwlh72jjkjza36c1v8"))))
+       ("gnupg"
+        ,(origin
+           (method url-fetch)
+           (uri "https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.20.tar.bz2")
+           (sha256
+            (base32 "0c6a4v9p6qzhsw1pfcwc459bxpc8hma0w9z8iqb9khvligack9q4"))))
+       ("slang"
+        ,(origin
+           (method url-fetch)
+           (uri "https://www.jedsoft.org/releases/slang/slang-2.3.1a.tar.bz2")
+           (sha256
+            (base32 "0dlcy0hn0j6cj9qj5x6hpb0axifnvzzmv5jqq0wq14fygw0c7w2l"))))
+       ("newt"
+        ,(origin
+           (method url-fetch)
+           (uri "https://releases.pagure.org/newt/newt-0.52.20.tar.gz")
+           (sha256
+            (base32 "1g3dpfnvaw7vljbr7nzq1rl88d6r8cmrvvng9inphgzwxxmvlrld"))))
+
+       ;;; coreboot cross.
+
+       ("gmp"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftpmirror.gnu.org/gmp/gmp-6.1.2.tar.xz")
+           (sha256
+            (base32 "04hrwahdxyqdik559604r7wrj9ffklwvipgfxgj4ys4skbl6bdc7"))))
+       ("mpfr"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftpmirror.gnu.org/mpfr/mpfr-3.1.5.tar.xz")
+           (sha256
+            (base32 "1g32l2fg8f62lcyzzh88y3fsh6rk539qc6ahhdgvx7wpnf1dwpq1"))))
+       ("mpc"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftpmirror.gnu.org/mpc/mpc-1.0.3.tar.gz")
+           (sha256
+            (base32 "1hzci2zrrd7v3g1jk35qindq05hbl0bhjcyyisq9z209xb3fqzb1"))))
+       ("binutils-2.30"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftpmirror.gnu.org/binutils/binutils-2.30.tar.xz")
+           (sha256
+            (base32 "1rhshw4m5m2pjz8g15hpiwhp52kn0pj0b5dxy0v7lwigmspbhikf"))))
+       ("gcc-8"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftpmirror.gnu.org/gcc/gcc-8.1.0/gcc-8.1.0.tar.xz")
+           (sha256
+            (base32 "0lxil8x0jjx7zbf90cy1rli650akaa6hpk8wk8s62vk2jbwnc60x"))))
+       ("target-make"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftp.gnu.org/gnu/make/make-4.2.1.tar.bz2")
+           (sha256
+            (base32 "12f5zzyq2w56g95nni65hc0g5p7154033y2f3qmjvd016szn5qnn"))))
+       ;; Note: Non-coreboot heads really doesn't need that.
+       ("acpica-coreboot"
+        ,(origin
+           (method url-fetch)
+           (uri "https://acpica.org/sites/acpica/files/acpica-unix2-20180531.tar.gz")
+           (sha256
+            (base32 "0q7vg1nr51f3rg16vjh4glz361a64r6gpm46fqkl2jf4fq7g43g5"))))))
+    (arguments
+     `(#:tests? #f ; Toplevel makefile has no tests.
+       #:make-flags
+       (list (string-append
+              "CROSS="
+              (assoc-ref %build-inputs "musl-cross")
+              "/crossgcc/x86_64-linux-musl/bin/x86_64-linux-musl-")
+             "MAKE_JOBS=SHELL=bash") ; FIXME: Remove workaround
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "SHELL" "bash") ; doesn't help
+             (setenv "CONFIG_SHELL" "bash") ; doesn't help
+             ;; For edk2 and kexec-tools.
+             ;; FIXME: musl *musl-cross*/x86_64-linux-musl/bin/x86_64-linux-musl-gcc || ./x86_64-linux-musl/x86_64-linux-musl/bin/musl-gcc.
+             (setenv "BUILD_CC"
+              (string-append (assoc-ref inputs "musl-cross")
+                             "/crossgcc/x86_64-linux-musl/bin/x86_64-linux-musl-gcc"))
+             ;; Disable wget.
+             (setenv "WGET" "true")
+             ;  ;; Work around mcheck.h problem (in glibc!?)
+             ; (substitute* "modules/popt"
+             ;  (("[.]/configure") "CFLAGS=\"-D__END_DECLS -D__BEGIN_DECLS -D__THROW\" ./configure"))
+
+             ;; ???
+;             (let ((gcc (assoc-ref inputs "gcc-8")))
+;                 (setenv "CPATH"
+;                         (string-join
+;                          (delete (string-append gcc "/include")
+;                                  (string-split (getenv "CPATH")
+;                                                #\:))
+;                          ":"))
+;                 (format #t
+;                         "environment variable `CPATH' changed to ~a~%"
+;                           (getenv "CPATH")))
+
+             ;; Fix build error in busybox.
+             (let ((libc (assoc-ref inputs "libc")))
+                 (setenv "C_INCLUDE_PATH"
+                         (string-join
+                          (delete (string-append libc "/include")
+                                  (string-split (getenv "C_INCLUDE_PATH")
+                                                #\:))
+                          ":"))
+                 (format #t
+                         "environment variable `C_INCLUDE_PATH' changed to ~a~%"
+                           (getenv "C_INCLUDE_PATH")))
+
+             ;; We don't have musl-cross for i386 target, so fake it.
+             (substitute* "modules/coreboot"
+              (("CROSS=\"[^\"]*\"")
+               "CROSS=\"$(CROSS)\"")
+              (("CFLAGS_x86_32=\"")
+               "CFLAGS_x86_32=\"-m32 "))
+             #t))
+         (add-after 'unpack 'unpack-heads-packages
+           (lambda* (#:key inputs #:allow-other-keys)
+             (define (install-file* source-key destination-directory destination-suffix)
+               (let* ((source-file (assoc-ref inputs source-key))
+                      (source-basename (basename source-file))
+                      (source-parts (string-split source-basename #\-))
+                      (drop (@ (srfi srfi-1) drop))
+                      (destination-file
+                       (string-join (drop source-parts 1) "-")))
+                 (copy-file source-file
+                  (string-append destination-directory "/"
+                                 destination-file destination-suffix))
+                 ;(invoke "tar" "-xf" source-file "-C" "build")
+))
+             (mkdir-p "packages")
+             (setenv "V" "1") ; verbose
+             (setenv "GUIX_C_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))
+             (setenv "GUIX_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH"))
+             (setenv "GUIX_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
+             (setenv "GUIX_CPATH" (getenv "CPATH"))
+             (for-each (lambda (name)
+                         (install-file* name "packages" ".tmp"))
+                       '("linux" "coreboot-blobs" "coreboot" "busybox" "zlib" "mbedtls" "kexec-tools" "qrencode" "pciutils" "util-linux" "flashrom" "popt" "lvm2" "cryptsetup" "libgpg-error" "libgcrypt" "libksba" "libassuan" "npth" "libusb" "libusb-compat" "dropbear" "pinentry" "gnupg" "slang" "newt" "musl" "target-musl-cross" "tpmtotp" "msrtools" "target-make"))
+             (mkdir-p "build")
+             (mkdir-p "build/musl-cross-git/tarballs")
+             (mkdir-p "build/coreboot-4.8.1/util/crossgcc/tarballs")
+             (for-each (lambda (name)
+                         (install-file* name "build/coreboot-4.8.1/util/crossgcc/tarballs" ""))
+                       '("gmp" "mpfr" "mpc" "binutils-2.30" "gcc-8" "acpica-coreboot"))
+             (copy-recursively (assoc-ref inputs "musl-cross") "build/musl-cross-git")
+             ; musl-cross-38e52db8358c043ae82b346a2e6e66bc86a53bc1.tar.gz
+             (copy-recursively (assoc-ref inputs "flashtools") "build/flashtools-0.0.1")
+
+             (setenv "MUSL_DIR" (assoc-ref inputs "musl-cross"))
+             ;(setenv "CROSS" (string-append (getenv "MUSL_DIR") "/crossgcc/x86_64-linux-musl/bin/x86_64-musl-linux-")) ; Note: Useless
+             (substitute* "Makefile"
+              ;; Disable our non-cross toolchain environment.
+              (("CROSS_TOOLS_NOCC := ")
+               ; CPP=" (getenv "CROSS") "cpp CXXCPP=" (getenv "CROSS") "cpp "
+               (string-append "CROSS_TOOLS_NOCC := C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH= CPATH= "))
+              ;; Disable git.
+              (("git submodule update --init")
+               "true submodule update --init")
+              ;; Re-enable our non-cross toolchain environment selectively.
+              (("^WGET.*")
+               (string-append "HOSTCC =" ; for busybox
+                              " C_INCLUDE_PATH=" (or (getenv "GUIX_C_INCLUDE_PATH") "")
+                              " CPLUS_INCLUDE_PATH=" (or (getenv "GUIX_CPLUS_INCLUDE_PATH") "")
+                              " CPATH=" (or (getenv "GUIX_CPATH") "")
+                              " LIBRARY_PATH=" (or (getenv "GUIX_LIBRARY_PATH") "")
+                              " gcc\n"
+                              "CC_FOR_BUILD = $(HOSTCC)\n" ; for libgpg-error
+                              "BUILD_CC = $(HOSTCC)\n")) ; for kexec-tools
+              ;; Disable git, patch shebangs, and selectively re-enable host compiler.
+              ;; (Note: $HOSTCC is too complicated for bash, for example
+              ;; HOSTCC="a=b c=d gcc", then invoking $HOSTCC won't work).
+              (("(git clone.*)." _ tar)
+               (format #f "(~a) && (cd $(build)/$($1_base_dir) && set -e && for s in Makefile Makefile.in configure lib/configure config.sub config.guess tools/install.sh tools/scripts/Makefile.include tools/power/cpupower/Makefile Makefile.rules scripts/* applets/usage_compressed applets/busybox.mkll applets/busybox.mksuid po/Makefile.in.in po/Makefile.in po/Makefile make.tmpl.in *-config.in src/*-config.in src/Makefile.in applets/install.sh applets/busybox.mkll tests/pkits/* tests/openpgp/* tests/fake-pinentries/fake-pinentry.sh tests/*/Makefile tests/inittests tests/runtests tests/Makefile.in tests/runtest modules/test/runtests.sh src/test/runtests.sh mkfiles/build.sh autoconf/* demo/Makefile.in slsh/Makefile.in util/xcompile/xcompile util/genbuild_h/genbuild_h.sh ; do if [ -f \"$$$${s}\" ] ; then sed -i -e 's;/bin/sh\\>;~a/bin/sh;' -e 's;/bin/pwd\\>;pwd;' -e 's;/bin/ln\\>;ln;' -e 's;/usr/bin/file\\>;file;' -e 's;/bin/false\\>;false;' -e 's;/bin/bash\\>;~a/bin/bash;' -e 's;/usr/bin/env bash;~a/bin/bash;' -e 's;git clone;true clone;' -e 's;^TERMCAP=-ltermcap;TERMCAP=;' -e 's;^HOSTCC.*$$$$;HOSTCC=C_INCLUDE_PATH=\"$(GUIX_C_INCLUDE_PATH)\" CPLUS_INCLUDE_PATH=\"$(GUIX_CPLUS_INCLUDE_PATH)\" CPATH=\"$(GUIX_CPATH)\" LIBRARY_PATH=\"$(GUIX_LIBRARY_PATH)\" gcc;' -e 's;^\\(\\$$$$HOSTCC[^|]*\\);(echo \\1 | bash);' -e 's;MAKEARGS += ;MAKEARGS += SHELL=bash ;' -e 's;\\([$][(]MAKE[)]\\);\\1 SHELL=bash ;' \"$$$${s}\" ; fi ; done)
+" "true" (assoc-ref inputs "bash") (assoc-ref inputs "bash") (assoc-ref inputs "bash")))
+              (("(tar xf.*)." _ tar) ; "make" is not in a "define" block
+               (format #f "(~a) && (cd $(build)/$($1_base_dir) && set -e && for s in make-4.2.1/configure make-4.2.1/Makefile.in ; do sed -i -e 's;/bin/sh\\>;~a/bin/sh;' \"$${s}\" ; done)
+" tar (assoc-ref inputs "bash")))
+              (("(tar -xf.*)." _ tar)
+               (format #f "(~a) && (cd $(build)/$($1_base_dir) && echo XXX && pwd && set -e && for s in Makefile Makefile.in configure lib/configure config.sub config.guess tools/install.sh tools/scripts/Makefile.include tools/power/cpupower/Makefile Makefile.rules scripts/* applets/usage_compressed applets/busybox.mkll applets/busybox.mksuid  po/Makefile.in.in po/Makefile.in po/Makefile make.tmpl.in *-config.in src/*-config.in src/Makefile.in applets/install.sh applets/busybox.mkll tests/pkits/* tests/openpgp/* tests/fake-pinentries/fake-pinentry.sh tests/*/Makefile tests/inittests tests/runtests tests/Makefile.in tests/runtest modules/test/runtests.sh src/test/runtests.sh mkfiles/build.sh autoconf/* demo/Makefile.in slsh/Makefile.in util/xcompile/xcompile util/genbuild_h/genbuild_h.sh ; do if [ -f \"$$$${s}\" ] ; then echo \": $$$${s}\" ; sed -i -e 's;/bin/sh\\>;~a/bin/sh;' -e 's;^TERMCAP=-ltermcap;TERMCAP=;' -e 's;/bin/pwd\\>;pwd;' -e 's;/bin/ln\\>;ln;' -e 's;/usr/bin/file\\>;file;' -e 's;/bin/false\\>;false;' -e 's;/bin/bash\\>;~a/bin/bash;' -e 's;/usr/bin/env bash;~a/bin/bash;' -e 's;git clone;true clone;' -e 's;^HOSTCC.*$$$$;HOSTCC=C_INCLUDE_PATH=\"$(GUIX_C_INCLUDE_PATH)\" CPLUS_INCLUDE_PATH=\"$(GUIX_CPLUS_INCLUDE_PATH)\" CPATH=\"$(GUIX_CPATH)\" LIBRARY_PATH=\"$(GUIX_LIBRARY_PATH)\" gcc;' -e 's;^\\(\\$$$$HOSTCC[^|]*\\);(echo \\1 | bash);' -e 's;MAKEARGS += ;MAKEARGS += SHELL=bash ;' -e 's;\\([$][(]MAKE[)]\\);\\1 SHELL=bash ;' \"$$$${s}\" ; fi ; done)
+" tar (assoc-ref inputs "bash") (assoc-ref inputs "bash") (assoc-ref inputs "bash"))))
+             ;(substitute* "modules/musl-cross"
+             ; (("/bin/echo") "echo"))
+             (call-with-output-file "patches/coreboot-4.8.1/9999-shell.patch"
+               (lambda (port)
+                 (format port "--- coreboot-4.8.1/util/crossgcc/buildgcc.orig 2019-09-13 14:45:12.463998974 +0200
++++ coreboot-4.8.1/util/crossgcc/buildgcc 2019-09-13 14:46:49.808268216 +0200
+@@ -462,6 +462,13 @@
+ 			}
+ 		done
+ 		touch \"${dir}/.unpack_success\"
++  set -e && for s in \"${dir}/Makefile\" \"${dir}/configure\" \"${dir}/config.sub\" \"${dir}/config.guess\" \"${dir}/mpn/cpp-ccas\" \"${dir}/mpn/m4-ccas\" \"${dir}/missing\" \"${dir}/\"*\"/configure\" \"${dir}/move-if-change\" \"${dir}/libgcc/mkheader.sh\" \"${dir}/gcc/genmultilib\"
++  do
++   if [ -f \"${s}\" ]
++   then
++    sed -i -e 's;/bin/sh\\>;~a/bin/sh;' \"${s}\"
++   fi
++  done
+ 	)
+ }
+ 
+" (assoc-ref inputs "bash"))))
+             #t))
+         (add-after 'install 'install-images
+           (lambda* (#:key outputs make-flags #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (make-flags-assoc (map (lambda (x)
+                                             (string-split x #\=))
+                                           make-flags))
+                    (BOARD (car (assoc-ref make-flags-assoc "BOARD")))
+                    (out-images (string-append out "/libexec/heads/" BOARD "/images")))
+               (mkdir-p out-images)
+               (copy-recursively (string-append "build/" BOARD) out-images)
+               ;; Contains timestamp.
+               (delete-file (string-append out-images "/hashes.txt"))
+               #t))))))
+    (home-page "https://github.com/osresearch/heads")
+    (synopsis "Heads: coreboot/LinuxBoot payload")
+    (description "A minimal Linux that runs as a coreboot or LinuxBoot ROM
+payload to provide a secure, flexible boot environment for laptops and
+servers.")
+    (license license:gpl2+))))