@@ -947,6 +947,7 @@ dist_patch_DATA = \
%D%/packages/patches/hdf-eos5-remove-gctp.patch \
%D%/packages/patches/hdf-eos5-fix-szip.patch \
%D%/packages/patches/hdf-eos5-fortrantests.patch \
+ %D%/packages/patches/heads-make-environment.patch \
%D%/packages/patches/higan-remove-march-native-flag.patch \
%D%/packages/patches/hubbub-sort-entities.patch \
%D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \
@@ -4,8 +4,12 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix utils)
#:use-module (gnu packages)
+ #:use-module (gnu packages admin)
#:use-module (gnu packages algebra)
+ #:use-module (gnu packages assembly)
+ #:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression)
#:use-module (gnu packages flex)
@@ -13,8 +17,11 @@
#:use-module (gnu packages elf)
#:use-module (gnu packages m4)
#:use-module (gnu packages curl)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages python)
#:use-module (gnu packages cpio)
+ #:use-module (gnu packages file)
#:use-module (gnu packages perl)
#:use-module (gnu packages version-control)
#:use-module (gnu packages virtualization))
@@ -122,3 +129,381 @@ done
(synopsis "Musl-cross gcc 5 toolchain")
(description "Musl-cross toolchain: binutils, gcc 5 and musl.")
(license license:isc))))
+
+(define heads
+ (let ((revision "1")
+ (commit "b7f2249b665705939dc4eca67d11553c72164f4b"))
+ (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
+ "0sgyqm4ss88hfp8miz40mw40kj7qp2khr7jcvscwv87bd5g9nwnx"))
+ (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)
+ ("elfutils" ,elfutils)
+ ("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 git-fetch)
+ (uri (git-reference
+ (url "https://github.com/osresearch/tpmtotp.git")
+ (commit "18b860fdcf5a55537c8395b891f2b2a5c24fc00a")))
+ (file-name "tpmtotp-checkout")
+ (sha256
+ (base32 "112p5afkrbipr0d8x9r9mrxrr3xyf97s2y3f32p41vs951sksqnv"))))
+ ("msrtools"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/osresearch/msr-tools.git")
+ (commit "572ef8a2b873eda15a322daa48861140a078b92c")))
+ (file-name "msr-tools-checkout")
+ (sha256
+ (base32 "0an1ypj5pin9l413vn4gxzi3x6ir1rba9jv6n5gk6s9dq803lb6p"))))
+ ("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://www.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.16.tar.gz")
+ (sha256
+ (base32 "0fkg5y3wxvkqrjii90iz1i59qd6hhq7ar27f0sgv7jbppyczq5yg"))))
+ ("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-1.0.tar.bz2")
+ (sha256
+ (base32 "0r7fkpfc8w51n8ffbhclj4wa3kwrk0ijv1acwpw5myx5bchzl0ip"))))
+ ("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.32.tar.bz2")
+ (sha256
+ (base32 "1jj08ns4sh1hmafqp1giskvdicdz18la516va26jycy27kkwaif3"))))
+ ("libgcrypt"
+ ,(origin
+ (method url-fetch)
+ (uri "https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.3.tar.bz2")
+ (sha256
+ (base32 "0z5gs1khzyknyfjr19k8gk4q148s6q987ya85cpn0iv70fz91v36"))))
+ ("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.1.tar.bz2")
+ (sha256
+ (base32 "0jb4nb4nrjr949gd3lw8lh4v5d6qigxaq6xwy24w5apjnhvnrya7"))))
+ ("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.10.tar.bz2")
+ (sha256
+ (base32 "05f9804g72pffdxgvxjmjzkfcpjg1x221g9rwcr8fi51hrxd77br"))))
+ ("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; FIXME: Extract.
+
+ ("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"))))
+ ;; 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.
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; For edk2.
+ (setenv "BUILD_CC" "gcc") ; 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.
+ ;; busybox needs the original values (for VERY few tools, but more than 0).
+ ;; 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"))
+ #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 "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"))
+ (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")
+ (copy-recursively (assoc-ref inputs "tpmtotp") "build/tpmtotp-git")
+ (copy-recursively (assoc-ref inputs "flashtools") "build/flashtools-0.0.1")
+ (copy-recursively (assoc-ref inputs "msrtools") "build/msrtools-git")
+
+ (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.
+ (("(git clone.*)." _ tar)
+ (format #f "(~a) && (cd $(build)/$($1_base_dir) && 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 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;' \"$$$$s\" ; fi ; done)
+" "true" (assoc-ref inputs "bash") (assoc-ref inputs "bash") (assoc-ref inputs "bash")))
+ (("(tar -xf.*)." _ tar)
+ (format #f "(~a) && (cd $(build)/$($1_base_dir) && 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 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;^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;' \"$$$$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\"
++ 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+))))
new file mode 100644
@@ -0,0 +1,446 @@
+diff --git a/Makefile b/Makefile
+index cc5cac6..ae8d7e7 100644
+--- a/Makefile
++++ b/Makefile
+@@ -124,10 +124,14 @@ CROSS_TOOLS_NOCC := \
+
+ CROSS_TOOLS := \
+ CC="$(heads_cc)" \
++ CPP="$(CROSS)cpp" \
++ CXXCPP="$(CROSS)cpp" \
++ CC_FOR_BUILD="$(CC_FOR_BUILD)" \
++ BUILD_CC="$(BUILD_CC)" \
++ HOSTCC="$(HOSTCC)" \
+ $(CROSS_TOOLS_NOCC) \
+
+
+-
+ ifeq "$(CONFIG_COREBOOT)" "y"
+ all: $(build)/$(BOARD)/coreboot.rom
+ else ifeq "$(CONFIG_LINUXBOOT)" "y"
+@@ -348,7 +352,7 @@ define define_module =
+ echo "$(MAKE) \
+ -C \"$(build)/$($1_dir)\" \
+ $($1_target)" ; \
+- $(MAKE) \
++ $($1_make_environment) $(MAKE) \
+ -C "$(build)/$($1_dir)" \
+ $($1_target) \
+ ) \
+@@ -453,7 +457,7 @@ $(COREBOOT_UTIL_DIR)/inteltool/inteltool \
+ : $(build)/$(coreboot_base_dir)/.canary \
+ $(build)/$(musl_dir)/.build
+ +$(call do,MAKE,$(notdir $@),\
+- $(MAKE) -C "$(dir $@)" $(CROSS_TOOLS) \
++ CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH= $(MAKE) -C "$(dir $@)" $(CROSS_TOOLS) \
+ )
+
+ # superio depends on zlib and pciutils
+diff --git a/modules/busybox b/modules/busybox
+index f8f8a83..4836780 100644
+--- a/modules/busybox
++++ b/modules/busybox
+@@ -11,6 +11,7 @@ busybox_hash := 604553b7dbd59ded9e3ad7c6af49ed2cff599adf3e54d9463e5e0027b362019c
+ busybox_configure := $(MAKE) CC="$(heads_cc)" oldconfig
+ busybox_config := config/busybox.config
+ busybox_output := busybox
++busybox_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ busybox_target := \
+ $(CROSS_TOOLS) \
+ $(MAKE_JOBS) \
+diff --git a/modules/cairo b/modules/cairo
+index 647ed2c..00f6cac 100644
+--- a/modules/cairo
++++ b/modules/cairo
+@@ -23,6 +23,7 @@ cairo_configure := \
+ && mv libtool-2 libtool \
+ && chmod 755 libtool
+
++cairo_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ cairo_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/cryptsetup b/modules/cryptsetup
+index 4cea7f3..d68da0c 100644
+--- a/modules/cryptsetup
++++ b/modules/cryptsetup
+@@ -20,6 +20,7 @@ cryptsetup_configure := ./configure \
+
+ # but after building, replace prefix so that they will be installed
+ # in the correct directory.
++cryptsetup_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ cryptsetup_target := \
+ $(MAKE_JOBS) \
+ && $(MAKE) \
+diff --git a/modules/dropbear b/modules/dropbear
+index 998087c..834a3ef 100644
+--- a/modules/dropbear
++++ b/modules/dropbear
+@@ -19,6 +19,7 @@ dropbear_configure := ./configure \
+ --disable-wtmpx \
+
+ dropbear_output := ssh scp dropbear
++dropbear_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ dropbear_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/fbwhiptail b/modules/fbwhiptail
+index f54a62d..1359677 100644
+--- a/modules/fbwhiptail
++++ b/modules/fbwhiptail
+@@ -6,6 +6,7 @@ fbwhiptail_version := git
+ fbwhiptail_dir := fbwhiptail
+ fbwhiptail_repo := https://source.puri.sm/coreboot/fbwhiptail.git
+
++fbwhiptail_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ fbwhiptail_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/flashrom b/modules/flashrom
+index 0a29b18..d695818 100644
+--- a/modules/flashrom
++++ b/modules/flashrom
+@@ -11,6 +11,7 @@ flashrom_tar := flashrom-$(flashrom_version).tar.bz2
+ flashrom_url := https://download.flashrom.org/releases/$(flashrom_tar)
+ flashrom_hash := 3702fa215ba5fb5af8e54c852d239899cfa1389194c1e51cb2a170c4dc9dee64
+
++flashrom_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ flashrom_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/flashtools b/modules/flashtools
+index d95c215..090362c 100644
+--- a/modules/flashtools
++++ b/modules/flashtools
+@@ -11,6 +11,7 @@ flashtools_tar := flashtools-$(flashtools_version).tar.gz
+ flashtools_url := https://github.com/osresearch/flashtools/archive/v$(flashtools_version).tar.gz
+ flashtools_hash := e8205aa3d19e536080f5974ed06ab9a88c4c3f37870c2f6a3a08a2f39302c22c
+
++flashtools_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ flashtools_target := \
+ $(CROSS_TOOLS) \
+ CFLAGS="-I$(INSTALL)/include" \
+diff --git a/modules/frotz b/modules/frotz
+index 611e04a..e2c2e22 100644
+--- a/modules/frotz
++++ b/modules/frotz
+@@ -8,6 +8,7 @@ frotz_hash := dbb5eb3bc95275dcb984c4bdbaea58bc1f1b085b20092ce6e86d9f0bf3ba858f
+
+ frotz_configure := touch .config
+
++frotz_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ frotz_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/gpg b/modules/gpg
+index 4d4440a..6a48664 100644
+--- a/modules/gpg
++++ b/modules/gpg
+@@ -39,6 +39,7 @@ gpg_configure := ./configure \
+ # Run one build to generate the executables with the pre-defined
+ # exec_prefix and datarootdir, then a second make to install the binaries
+ # into our actual target location
++gpg_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ gpg_target := $(MAKE_JOBS) \
+ && $(MAKE) -C $(build)/$(gpg_dir) \
+ DESTDIR="$(INSTALL)" \
+diff --git a/modules/gpg2 b/modules/gpg2
+index 318a4cd..522e518 100644
+--- a/modules/gpg2
++++ b/modules/gpg2
+@@ -50,6 +50,7 @@ gpg2_configure := ./configure \
+ # Run one build to generate the executables with the pre-defined
+ # exec_prefix and datarootdir, then a second make to install the binaries
+ # into our actual target location
++gpg2_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ gpg2_target := $(MAKE_JOBS) \
+ && $(MAKE) -C $(build)/$(gpg2_dir) \
+ DESTDIR="$(INSTALL)" \
+diff --git a/modules/kexec b/modules/kexec
+index d2311c2..b507d81 100644
+--- a/modules/kexec
++++ b/modules/kexec
+@@ -14,6 +14,7 @@ kexec_configure := ./configure \
+ --without-lzma \
+ && $(MAKE) clean
+
++kexec_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ kexec_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/libassuan b/modules/libassuan
+index 3c4e319..6138ec2 100644
+--- a/modules/libassuan
++++ b/modules/libassuan
+@@ -14,6 +14,7 @@ libassuan_configure := ./configure \
+ --with-libgpg-error-prefix="$(INSTALL)" \
+ --disable-asm \
+
++libassuan_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ libassuan_target := $(MAKE_JOBS) \
+ DESTDIR="$(INSTALL)" \
+ $(CROSS_TOOLS) \
+diff --git a/modules/libgcrypt b/modules/libgcrypt
+index aa7e1ef..384f672 100644
+--- a/modules/libgcrypt
++++ b/modules/libgcrypt
+@@ -14,6 +14,7 @@ libgcrypt_configure := ./configure \
+ --disable-asm \
+ --disable-nls \
+
++libgcrypt_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ libgcrypt_target := $(MAKE_JOBS) \
+ DESTDIR="$(INSTALL)" \
+ $(CROSS_TOOLS) \
+diff --git a/modules/libgpg-error b/modules/libgpg-error
+index 752e11a..3d4d217 100644
+--- a/modules/libgpg-error
++++ b/modules/libgpg-error
+@@ -16,6 +16,7 @@ libgpg-error_configure := ./configure \
+ --disable-tests \
+ --disable-asm \
+
++libgpg-error_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH= CC_FOR_BUILD="$(CC_FOR_BUILD)"
+ libgpg-error_target := $(MAKE_JOBS) \
+ DESTDIR="$(INSTALL)" \
+ $(CROSS_TOOLS) \
+diff --git a/modules/libksba b/modules/libksba
+index d352913..bd1835b 100644
+--- a/modules/libksba
++++ b/modules/libksba
+@@ -14,6 +14,7 @@ libksba_configure := ./configure \
+ --with-libgpg-error-prefix="$(INSTALL)" \
+ --disable-asm \
+
++libksba_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ libksba_target := $(MAKE_JOBS) \
+ DESTDIR="$(INSTALL)" \
+ $(CROSS_TOOLS) \
+diff --git a/modules/libpng b/modules/libpng
+index d6d9e65..33306e2 100644
+--- a/modules/libpng
++++ b/modules/libpng
+@@ -12,6 +12,7 @@ libpng_configure := \
+ --host i386-elf-linux \
+ --prefix="/" \
+
++libpng_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ libpng_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/libremkey-hotp-verification b/modules/libremkey-hotp-verification
+index c9b9d45..e7fab7d 100644
+--- a/modules/libremkey-hotp-verification
++++ b/modules/libremkey-hotp-verification
+@@ -6,6 +6,7 @@ libremkey-hotp-verification_version := git
+ libremkey-hotp-verification_dir := libremkey-hotp-verification
+ libremkey-hotp-verification_repo := --recursive https://github.com/Nitrokey/nitrokey-hotp-verification
+
++libremkey-hotp-verification_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ libremkey-hotp-verification_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/libusb b/modules/libusb
+index b7fe959..fe274e9 100644
+--- a/modules/libusb
++++ b/modules/libusb
+@@ -19,6 +19,7 @@ libusb_configure := ./configure\
+ # exec_prefix and datarootdir, then a second make to install the binaries
+ # into our actual target location
+
++libusb_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ libusb_target := $(MAKE_JOBS) \
+ DESTDIR="$(INSTALL)" \
+ $(CROSS_TOOLS) \
+diff --git a/modules/libusb-compat b/modules/libusb-compat
+index f95854e..78033ef 100644
+--- a/modules/libusb-compat
++++ b/modules/libusb-compat
+@@ -22,6 +22,7 @@ libusb-compat_configure := ./configure \
+ # Run one build to generate the executables with the pre-defined
+ # exec_prefix and datarootdir, then a second make to install the binaries
+ # into our actual target location
++libusb-compat_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ libusb-compat_target := $(MAKE_JOBS) \
+ DESTDIR="$(INSTALL)" \
+ $(CROSS_TOOLS) \
+diff --git a/modules/lvm2 b/modules/lvm2
+index 91f0f53..def7544 100644
+--- a/modules/lvm2
++++ b/modules/lvm2
+@@ -34,6 +34,7 @@ lvm2_configure := \
+ --with-cluster=none \
+
+ # not sure why LIB_SUFFIX is not defined in the cross build
++lvm2_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ lvm2_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/mbedtls b/modules/mbedtls
+index d844b16..2611866 100644
+--- a/modules/mbedtls
++++ b/modules/mbedtls
+@@ -10,6 +10,7 @@ mbedtls_libraries := library/libmbedcrypto.so.0
+
+ mbedtls_configure :=
+
++mbedtls_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ mbedtls_target := \
+ SHARED=1 \
+ DESTDIR=$(INSTALL) \
+diff --git a/modules/msrtools b/modules/msrtools
+index 9adfab0..85b5954 100644
+--- a/modules/msrtools
++++ b/modules/msrtools
+@@ -11,6 +11,7 @@ msrtools_tar := msr-tools-$(msrtools_version).tar.gz
+ msrtools_url := https://github.com/intel/msr-tools/archive/msr-tools-$(msrtools_version).tar.gz
+ msrtools_hash := e8205aa3d19e536080f5974ed06ab9a88c4c3f37870c2f6a3a08a2f39302c22c
+
++msrtools_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ msrtools_target := \
+ $(CROSS_TOOLS) \
+ CFLAGS="-I$(INSTALL)/include" \
+diff --git a/modules/musl b/modules/musl
+index eec76de..89b9a0f 100644
+--- a/modules/musl
++++ b/modules/musl
+@@ -24,6 +24,7 @@ musl_configure := ./configure \
+ --enable-gcc-wrapper \
+ --enable-shared \
+
++musl_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ musl_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS_NOCC) \
+diff --git a/modules/newt b/modules/newt
+index cc6341d..bad67c7 100644
+--- a/modules/newt
++++ b/modules/newt
+@@ -8,6 +8,7 @@ newt_tar := newt-$(newt_version).tar.gz
+ newt_url := https://releases.pagure.org/newt/$(newt_tar)
+ newt_hash := 8d66ba6beffc3f786d4ccfee9d2b43d93484680ef8db9397a4fb70b5adbb6dbc
+
++newt_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ newt_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/npth b/modules/npth
+index e0f30c6..a43d626 100644
+--- a/modules/npth
++++ b/modules/npth
+@@ -14,6 +14,7 @@ npth_configure := ./configure \
+ --with-libgpg-error-prefix="$(INSTALL)" \
+ --disable-asm \
+
++npth_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ npth_target := $(MAKE_JOBS) \
+ DESTDIR="$(INSTALL)" \
+ $(CROSS_TOOLS) \
+diff --git a/modules/pciutils b/modules/pciutils
+index 2ea5b9b..dfee3a0 100644
+--- a/modules/pciutils
++++ b/modules/pciutils
+@@ -16,6 +16,7 @@ pciutils_hash := 64293c6ab9318c40ef262b76d87bd9097531759752bac556e50979b1e63cfe6
+ # reproducible. Otherwise the build path will be embedded
+ # in the library and executables.
+
++pciutils_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ pciutils_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/pinentry b/modules/pinentry
+index c0e93d7..a541ce0 100644
+--- a/modules/pinentry
++++ b/modules/pinentry
+@@ -33,6 +33,7 @@ pinentry_configure := ./configure \
+ # Run one build to generate the executables with the pre-defined
+ # exec_prefix and datarootdir, then a second make to install the binaries
+ # into our actual target location
++pinentry_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ pinentry_target := $(MAKE_JOBS) \
+ && $(MAKE) -C $(build)/$(pinentry_dir) \
+ DESTDIR="$(INSTALL)" \
+diff --git a/modules/pixman b/modules/pixman
+index 65a2e20..198f8ac 100644
+--- a/modules/pixman
++++ b/modules/pixman
+@@ -13,6 +13,7 @@ pixman_configure := \
+ --prefix="/" \
+ --disable-gtk
+
++pixman_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ pixman_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/popt b/modules/popt
+index b3b0b04..242ae03 100644
+--- a/modules/popt
++++ b/modules/popt
+@@ -11,6 +11,7 @@ popt_configure := ./configure \
+ --prefix "/" \
+ --host i386-elf-linux \
+
++popt_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ popt_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/qrencode b/modules/qrencode
+index fb73c7b..afded70 100644
+--- a/modules/qrencode
++++ b/modules/qrencode
+@@ -14,6 +14,7 @@ qrencode_configure := ./configure \
+ --without-tools \
+ --host i386-elf-linux \
+
++qrencode_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ qrencode_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/slang b/modules/slang
+index a4ac84b..a338639 100644
+--- a/modules/slang
++++ b/modules/slang
+@@ -18,6 +18,7 @@ slang_configure := ./configure \
+ && mkdir -p src/elfobjs
+
+ # Disable parallel make for the install target
++slang_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ slang_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/tpmtotp b/modules/tpmtotp
+index 792dd51..02c6c10 100644
+--- a/modules/tpmtotp
++++ b/modules/tpmtotp
+@@ -11,6 +11,7 @@ tpmtotp_tar := tpmtotp-$(tpmtotp_version).tar.gz
+ tpmtotp_url := https://github.com/osresearch/tpmtotp/archive/v$(tpmtotp_version).tar.gz
+ tpmtotp_hash := e8205aa3d19e536080f5974ed06ab9a88c4c3f37870c2f6a3a08a2f39302c22c
+
++tpmtotp_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ tpmtotp_target := \
+ $(CROSS_TOOLS) \
+ CFLAGS="-I$(INSTALL)/include" \
+diff --git a/modules/util-linux b/modules/util-linux
+index e3377f6..a50bf40 100644
+--- a/modules/util-linux
++++ b/modules/util-linux
+@@ -22,6 +22,7 @@ util-linux_configure := ./configure \
+ --enable-libblkid \
+
+
++util-linux_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ util-linux_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \
+diff --git a/modules/zlib b/modules/zlib
+index dbdb44e..a6290b2 100644
+--- a/modules/zlib
++++ b/modules/zlib
+@@ -12,6 +12,7 @@ zlib_configure := \
+ ./configure \
+ --prefix="/" \
+
++zlib_make_environment := CPATH= C_INCLUDE_PATH= CPLUS_INCLUDE_PATH= LIBRARY_PATH=
+ zlib_target := \
+ $(MAKE_JOBS) \
+ $(CROSS_TOOLS) \