unofficial mirror of guix-patches@gnu.org 
 help / color / Atom feed
* [bug#37466] [PATCH 0/4] Add heads.
@ 2019-09-20  1:02 Danny Milosavljevic
  2019-09-20  7:31 ` [bug#37466] [PATCH 1/4] gnu: Add musl-cross Danny Milosavljevic
                   ` (2 more replies)
  0 siblings, 3 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-20  1:02 UTC (permalink / raw)
  To: 37466

Danny Milosavljevic (4):
  gnu: Add musl-cross.
  gnu: Add heads.
  gnu: Add heads-linuxboot.
  gnu: Add heads-qemu-linuxboot.

 gnu/local.mk           |   1 +
 gnu/packages/heads.scm | 557 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 558 insertions(+)
 create mode 100644 gnu/packages/heads.scm

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [PATCH 1/4] gnu: Add musl-cross.
  2019-09-20  1:02 [bug#37466] [PATCH 0/4] Add heads Danny Milosavljevic
@ 2019-09-20  7:31 ` Danny Milosavljevic
  2019-09-20  7:31   ` [bug#37466] [PATCH 2/4] gnu: Add heads Danny Milosavljevic
                     ` (2 more replies)
  2019-09-24 14:01 ` [bug#37466] [WIP v2 0/7] Add heads Danny Milosavljevic
  2020-06-01 10:54 ` [bug#37466] [WIP v7 0/4] Add heads and co Danny Milosavljevic
  2 siblings, 3 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-20  7:31 UTC (permalink / raw)
  To: 37466

* gnu/packages/heads.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk           |   1 +
 gnu/packages/heads.scm | 124 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 125 insertions(+)
 create mode 100644 gnu/packages/heads.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index ad85894ebe..4fc22d6fb4 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -245,6 +245,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/haskell-web.scm			\
   %D%/packages/haskell-xyz.scm			\
   %D%/packages/ham-radio.scm			\
+  %D%/packages/heads.scm			\
   %D%/packages/hexedit.scm			\
   %D%/packages/hugs.scm				\
   %D%/packages/hurd.scm				\
diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
new file mode 100644
index 0000000000..b547a374e0
--- /dev/null
+++ b/gnu/packages/heads.scm
@@ -0,0 +1,124 @@
+(define-module (gnu packages heads)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages algebra)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages elf)
+  #:use-module (gnu packages m4)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages cpio)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages virtualization))
+
+(define-public musl-cross
+  (let ((revision "1")
+        (commit "b7f2249b665705939dc4eca67d11553c72164f4b"))
+  (package
+    (name "musl-cross")
+    (version (git-version "0.1" revision commit))
+    (source
+          (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/GregorR/musl-cross")
+                   (commit "3b5b118f1cdddecda3f04b5005f69f962278fc1e")))
+             (file-name "musl-cross-checkout")
+             (sha256
+              (base32 "0pd1b7k4gwbvnyw0677p56d7j0xmv80k5iihkkjrd1mp9zdx90gj"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; No tests in main project.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _
+             (setenv "SHELL" "bash")
+             (setenv "CONFIG_SHELL" "bash")
+             #t))
+         (add-after 'unpack 'unpack-dependencies
+           (lambda* (#:key inputs outputs #: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))))
+             (for-each (lambda (name)
+                         (install-file* name "tarballs" ""))
+                       '("binutils" "target-gcc-5" "kernel-headers" "musl"))
+             (substitute* "config.sh"
+              (("^CC_BASE_PREFIX=.*")
+               (string-append "CC_BASE_PREFIX=" (assoc-ref outputs "out")
+                              "/crossgcc\n")))
+             ;; Note: Important: source/gcc-5.3.0/gcc/exec-tool.in
+             ;; Note: Important: source/kernel-headers-3.12.6-5/tools/install.sh
+             ;; Note: Important: move-if-change (twice)
+             ;; Make sure that shebangs are patched after new extractions.
+             (substitute* "defs.sh"
+              (("touch \"[$]2/extracted\"")
+               (string-append "touch \"$2/extracted\"
+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 \\
+genmultilib exec-tool.in install.sh
+do
+  find . -name $s -exec sed -i -e 's;!/bin/sh;!" (assoc-ref inputs "bash")
+"/bin/sh;' '{}' ';'
+  find . -name $s -exec sed -i -e 's; /bin/sh; " (assoc-ref inputs "bash")
+"/bin/sh;' '{}' ';'
+done
+" )))
+             #t))
+         (replace 'build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "./build.sh")))
+         (delete 'install))))
+    (native-inputs
+     `(("bash" ,bash)
+       ("flex" ,flex)
+       ("gmp" ,gmp)
+       ("mpfr" ,mpfr)
+       ("mpc" ,mpc)
+       ("binutils"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftpmirror.gnu.org/gnu/binutils/binutils-2.25.1.tar.bz2")
+           (sha256
+            (base32 "08lzmhidzc16af1zbx34f8cy4z7mzrswpdbhrb8shy3xxpflmcdm"))))
+       ("target-gcc-5"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftpmirror.gnu.org/gnu/gcc/gcc-5.3.0/gcc-5.3.0.tar.bz2")
+           (sha256
+            (base32 "1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq"))))
+       ("kernel-headers"
+        ,(origin
+           (method url-fetch)
+           (uri "http://ftp.barfooze.de/pub/sabotage/tarballs/kernel-headers-3.12.6-5.tar.xz")
+           (sha256
+            (base32 "0p43lvbpy69lbjmvq39g570imj0p8z791bhzrpdnp1nygwshj2wf"))))
+       ("musl"
+        ,(origin
+           (method url-fetch)
+           (uri "http://www.musl-libc.org/releases/musl-1.1.21.tar.gz")
+           (sha256
+            (base32 "0i2z52zgc86af1n1gjiz43hgd85mxjgvgn345zsybja9dxpvchn7"))))))
+    (home-page "https://github.com/osresearch/heads")
+    (synopsis "Musl-cross gcc 5 toolchain")
+    (description "Musl-cross toolchain: binutils, gcc 5 and musl.")
+    (license license:isc))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [PATCH 2/4] gnu: Add heads.
  2019-09-20  7:31 ` [bug#37466] [PATCH 1/4] gnu: Add musl-cross Danny Milosavljevic
@ 2019-09-20  7:31   ` Danny Milosavljevic
  2019-09-20 12:05     ` Björn Höfling
  2019-09-20  7:31   ` [bug#37466] [PATCH 3/4] gnu: Add heads-linuxboot Danny Milosavljevic
  2019-09-20  7:31   ` [bug#37466] [PATCH 4/4] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
  2 siblings, 1 reply; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-20  7:31 UTC (permalink / raw)
  To: 37466

* gnu/packages/heads.scm (heads): New variable.
---
 gnu/packages/heads.scm | 378 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 378 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index b547a374e0..de97c8de6c 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -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,374 @@ done
     (synopsis "Musl-cross gcc 5 toolchain")
     (description "Musl-cross toolchain: binutils, gcc 5 and musl.")
     (license license:isc))))
+
+(define-public 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-build-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) ; FIXME: Remove.
+       ("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://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.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"))))))
+    (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"))
+             (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 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 ; do if [ -f \"$$$$s\" ] ; then sed -i -e 's;/bin/sh\\>;~a/bin/sh;' -e 's;/bin/pwd\\>;pwd;' -e 's;/usr/bin/file\\>;file;' -e 's;/bin/false\\>;false;' -e 's;/bin/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)
+" "true" (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 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 ; do if [ -f \"$$$$s\" ] ; then sed -i -e 's;/bin/sh\\>;~a/bin/sh;' -e 's;/bin/pwd\\>;pwd;' -e 's;/usr/bin/file\\>;file;' -e 's;/bin/false\\>;false;' -e 's;/bin/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"))))
+             ;(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\"
++  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+))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [PATCH 3/4] gnu: Add heads-linuxboot.
  2019-09-20  7:31 ` [bug#37466] [PATCH 1/4] gnu: Add musl-cross Danny Milosavljevic
  2019-09-20  7:31   ` [bug#37466] [PATCH 2/4] gnu: Add heads Danny Milosavljevic
@ 2019-09-20  7:31   ` Danny Milosavljevic
  2019-09-20  7:31   ` [bug#37466] [PATCH 4/4] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
  2 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-20  7:31 UTC (permalink / raw)
  To: 37466

* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
 gnu/packages/heads.scm | 48 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 47 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index de97c8de6c..4412770ae3 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -489,7 +489,7 @@ done
                                            make-flags))
                     (BOARD (car (assoc-ref make-flags-assoc "BOARD")))
                     (out-images (string-append out "/libexec/heads/" BOARD "/images")))
-               (mkdir -p out-images)
+               (mkdir-p out-images)
                (copy-recursively (string-append "build/" BOARD) out-images)
                ;; Contains timestamp.
                (delete-file (string-append out-images "/hashes.txt"))
@@ -500,3 +500,49 @@ done
 payload to provide a secure, flexible boot environment for laptops and
 servers.")
     (license license:gpl2+))))
+
+(define-public heads-linuxboot
+  (package
+    (inherit heads)
+    (name "heads-linuxboot")
+    (arguments
+     (substitute-keyword-arguments (package-arguments heads)
+      ((#:phases phases)
+       `(modify-phases ,phases
+          (add-before 'unpack-heads-packages 'unpack-linuxboot
+            (lambda* (#:key inputs #:allow-other-keys)
+               (mkdir-p "build")
+               (copy-recursively (assoc-ref inputs "linuxboot") "build/linuxboot-git")
+               (copy-recursively (assoc-ref inputs "edk2") "build/linuxboot-git/edk2")
+               (invoke "chmod" "-R" "u+w" "build/linuxboot-git")
+               (chmod "build/linuxboot-git/Makefile" #o664)
+               (substitute* "build/linuxboot-git/dxe/Makefile"
+                (("/usr/bin/") ""))
+               #t))))))
+    (native-inputs
+     `(("edk2"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/linuxboot/edk2")
+                   (commit "UDK2018")
+                   (recursive? #t))) ; openssl
+             (file-name "edk2-checkout")
+             (sha256
+              (base32 "0crjx1hg1m5mir2qm96dbcc3glrnww3ni0bc9f370qmm337wzlhi"))))
+       ("libuuid" ,util-linux) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("nasm" ,nasm) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("python" ,python-2) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("acpica" ,acpica) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("file" ,file)
+       ("linuxboot"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/osresearch/linuxboot.git")
+                   (commit "b5376a441e8e85cbf722e943bb8294958e87c784")
+                   (recursive? #t)))
+             (file-name "linuxboot-checkout")
+             (sha256
+              (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
+       ,@(package-native-inputs heads)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [PATCH 4/4] gnu: Add heads-qemu-linuxboot.
  2019-09-20  7:31 ` [bug#37466] [PATCH 1/4] gnu: Add musl-cross Danny Milosavljevic
  2019-09-20  7:31   ` [bug#37466] [PATCH 2/4] gnu: Add heads Danny Milosavljevic
  2019-09-20  7:31   ` [bug#37466] [PATCH 3/4] gnu: Add heads-linuxboot Danny Milosavljevic
@ 2019-09-20  7:31   ` Danny Milosavljevic
  2 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-20  7:31 UTC (permalink / raw)
  To: 37466

* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
 gnu/packages/heads.scm | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 4412770ae3..815634116b 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -546,3 +546,12 @@ servers.")
              (sha256
               (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
        ,@(package-native-inputs heads)))))
+
+(define-public heads-qemu-linuxboot
+  (package
+    (inherit heads-linuxboot)
+    (name "heads-qemu-linuxboot")
+    (arguments
+     `(#:make-flags
+       '("BOARD=qemu-linuxboot")
+       ,@(package-arguments heads-linuxboot)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [PATCH 2/4] gnu: Add heads.
  2019-09-20  7:31   ` [bug#37466] [PATCH 2/4] gnu: Add heads Danny Milosavljevic
@ 2019-09-20 12:05     ` Björn Höfling
  2019-09-20 13:49       ` Danny Milosavljevic
  0 siblings, 1 reply; 58+ messages in thread
From: Björn Höfling @ 2019-09-20 12:05 UTC (permalink / raw)
  To: Danny Milosavljevic; +Cc: 37466

[-- Attachment #1: Type: text/plain, Size: 1021 bytes --]

Hi Danny,

no full review, just one remark:

On Fri, 20 Sep 2019 09:31:47 +0200
Danny Milosavljevic <dannym@scratchpost.org> wrote:

> * gnu/packages/heads.scm (heads): New variable.

[..]

> +    (native-inputs
> +     `(("bash" ,bash)

[..]
> +       ("linux"
> +        ,(origin
> +           (method url-fetch)
> +           (uri
> "https://cdntt.kernel.org/pub/linux/kernel/v4.x/linux-4.14.62.tar.xz")
> +           (sha256
> +            (base32
> "1ar29ikway5im17iw9ag1fxivr7sbj8nhxxw347xqmp1irz4vjji"))))

That's the non-free kernel, right?
Besides that neither DNS nor Google knows that host.

In general, this long list of source-files looks a bit strange: I think
all/most of these packages are already a Guix package, where
the source code is (more or less) verified to be FSDG-compatible,
possibly with a snipped. Now this package is just getting a huge list of
unreviewed source tarballs in. Hm.

Could we at least somehow reference the source package from Guix?

Björn

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [PATCH 2/4] gnu: Add heads.
  2019-09-20 12:05     ` Björn Höfling
@ 2019-09-20 13:49       ` Danny Milosavljevic
  2019-09-20 14:45         ` Julien Lepiller
  2019-09-24 14:40         ` Danny Milosavljevic
  0 siblings, 2 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-20 13:49 UTC (permalink / raw)
  To: Björn Höfling; +Cc: 37466

[-- Attachment #1: Type: text/plain, Size: 1309 bytes --]

Hi Björn,

On Fri, 20 Sep 2019 14:05:29 +0200
Björn Höfling <bjoern.hoefling@bjoernhoefling.de> wrote:

> That's the non-free kernel, right?

Right.

> Besides that neither DNS nor Google knows that host.

Hmm, you're right, but it worked for me.  Doesn't work now.
Using "www" is probably better anyhow (and works).

> In general, this long list of source-files looks a bit strange: I think
> all/most of these packages are already a Guix package, where
> the source code is (more or less) verified to be FSDG-compatible,
> possibly with a snipped. Now this package is just getting a huge list of
> unreviewed source tarballs in. Hm.
> 
> Could we at least somehow reference the source package from Guix?

Well, heads provides an initrd and they want reproducible builds for it for
security purposes--that's the main reason they build a "cross" compiler too:
To have the compiler produce verifiable executables.

So basically if we change the version or anything, the hashes won't match
any more and any person going along their installation guide should
abort the installation--because heads has presumably been tampered with.

Not sure what to do about it.

Maybe at least linux-libre produces bitwise identical outputs to Linux
for what they care about.  I'll try it.

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [PATCH 2/4] gnu: Add heads.
  2019-09-20 13:49       ` Danny Milosavljevic
@ 2019-09-20 14:45         ` Julien Lepiller
  2019-09-24 14:40         ` Danny Milosavljevic
  1 sibling, 0 replies; 58+ messages in thread
From: Julien Lepiller @ 2019-09-20 14:45 UTC (permalink / raw)
  To: 37466, dannym, bjoern.hoefling

Le 20 septembre 2019 15:49:54 GMT+02:00, Danny Milosavljevic <dannym@scratchpost.org> a écrit :
>Hi Björn,
>
>On Fri, 20 Sep 2019 14:05:29 +0200
>Björn Höfling <bjoern.hoefling@bjoernhoefling.de> wrote:
>
>> That's the non-free kernel, right?
>
>Right.
>
>> Besides that neither DNS nor Google knows that host.
>
>Hmm, you're right, but it worked for me.  Doesn't work now.
>Using "www" is probably better anyhow (and works).
>
>> In general, this long list of source-files looks a bit strange: I
>think
>> all/most of these packages are already a Guix package, where
>> the source code is (more or less) verified to be FSDG-compatible,
>> possibly with a snipped. Now this package is just getting a huge list
>of
>> unreviewed source tarballs in. Hm.
>> 
>> Could we at least somehow reference the source package from Guix?
>
>Well, heads provides an initrd and they want reproducible builds for it
>for
>security purposes--that's the main reason they build a "cross" compiler
>too:
>To have the compiler produce verifiable executables.
>
>So basically if we change the version or anything, the hashes won't
>match
>any more and any person going along their installation guide should
>abort the installation--because heads has presumably been tampered
>with.
>
>Not sure what to do about it.
>
>Maybe at least linux-libre produces bitwise identical outputs to Linux
>for what they care about.  I'll try it.

Not sure about heads, but some build systems specify the exact version of their dependencies, but we don't package all of them in guix. In that case, the guix build-system overwrites the declared hash with the actual hash of the package that is used instead. Can't you do something similar?

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v2 0/7] Add heads.
  2019-09-20  1:02 [bug#37466] [PATCH 0/4] Add heads Danny Milosavljevic
  2019-09-20  7:31 ` [bug#37466] [PATCH 1/4] gnu: Add musl-cross Danny Milosavljevic
@ 2019-09-24 14:01 ` Danny Milosavljevic
  2019-09-24 14:01   ` [bug#37466] [WIP v2 1/7] gnu: Add musl-cross Danny Milosavljevic
                     ` (7 more replies)
  2020-06-01 10:54 ` [bug#37466] [WIP v7 0/4] Add heads and co Danny Milosavljevic
  2 siblings, 8 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-24 14:01 UTC (permalink / raw)
  To: 37466

This adds heads to Guix.  Heads is minimal Linux that runs as a coreboot or
LinuxBoot payload to provide a secure, flexible boot environment for laptops
and servers.

Heads uses checksums to make sure that all the components are what they are
supposed to be, at build time, at BOOT time and when resuming.

Therefore, it's difficult to replace stuff with our versions.
I'm not sure whether we should--since Heads is supposed to build the same
thing reproducibly everywhere.

A future version will be a variant which does replace Linux by Linux-libre,
but that also changes both the source hashes and the output (and thus the
output hashes).

Danny Milosavljevic (7):
  gnu: Add musl-cross.
  gnu: Add heads.
  gnu: Add heads-linuxboot.
  gnu: Add heads-qemu-linuxboot.
  gnu: Add heads-coreboot.
  gnu: Add heads-qemu-coreboot.
  gnu: Add heads-kgpe-d16.

 gnu/local.mk                                  |   2 +
 gnu/packages/heads.scm                        | 607 ++++++++++++++++++
 .../patches/heads-make-environment.patch      | 446 +++++++++++++
 3 files changed, 1055 insertions(+)
 create mode 100644 gnu/packages/heads.scm
 create mode 100644 gnu/packages/patches/heads-make-environment.patch

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v2 1/7] gnu: Add musl-cross.
  2019-09-24 14:01 ` [bug#37466] [WIP v2 0/7] Add heads Danny Milosavljevic
@ 2019-09-24 14:01   ` Danny Milosavljevic
  2019-09-24 14:01   ` [bug#37466] [WIP v2 2/7] gnu: Add heads Danny Milosavljevic
                     ` (6 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-24 14:01 UTC (permalink / raw)
  To: 37466

* gnu/packages/heads.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk           |   1 +
 gnu/packages/heads.scm | 124 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 125 insertions(+)
 create mode 100644 gnu/packages/heads.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 8e535e208b..2ca70bdeaf 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -245,6 +245,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/haskell-web.scm			\
   %D%/packages/haskell-xyz.scm			\
   %D%/packages/ham-radio.scm			\
+  %D%/packages/heads.scm			\
   %D%/packages/hexedit.scm			\
   %D%/packages/hugs.scm				\
   %D%/packages/hurd.scm				\
diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
new file mode 100644
index 0000000000..b547a374e0
--- /dev/null
+++ b/gnu/packages/heads.scm
@@ -0,0 +1,124 @@
+(define-module (gnu packages heads)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages algebra)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages elf)
+  #:use-module (gnu packages m4)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages cpio)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages virtualization))
+
+(define-public musl-cross
+  (let ((revision "1")
+        (commit "b7f2249b665705939dc4eca67d11553c72164f4b"))
+  (package
+    (name "musl-cross")
+    (version (git-version "0.1" revision commit))
+    (source
+          (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/GregorR/musl-cross")
+                   (commit "3b5b118f1cdddecda3f04b5005f69f962278fc1e")))
+             (file-name "musl-cross-checkout")
+             (sha256
+              (base32 "0pd1b7k4gwbvnyw0677p56d7j0xmv80k5iihkkjrd1mp9zdx90gj"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; No tests in main project.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _
+             (setenv "SHELL" "bash")
+             (setenv "CONFIG_SHELL" "bash")
+             #t))
+         (add-after 'unpack 'unpack-dependencies
+           (lambda* (#:key inputs outputs #: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))))
+             (for-each (lambda (name)
+                         (install-file* name "tarballs" ""))
+                       '("binutils" "target-gcc-5" "kernel-headers" "musl"))
+             (substitute* "config.sh"
+              (("^CC_BASE_PREFIX=.*")
+               (string-append "CC_BASE_PREFIX=" (assoc-ref outputs "out")
+                              "/crossgcc\n")))
+             ;; Note: Important: source/gcc-5.3.0/gcc/exec-tool.in
+             ;; Note: Important: source/kernel-headers-3.12.6-5/tools/install.sh
+             ;; Note: Important: move-if-change (twice)
+             ;; Make sure that shebangs are patched after new extractions.
+             (substitute* "defs.sh"
+              (("touch \"[$]2/extracted\"")
+               (string-append "touch \"$2/extracted\"
+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 \\
+genmultilib exec-tool.in install.sh
+do
+  find . -name $s -exec sed -i -e 's;!/bin/sh;!" (assoc-ref inputs "bash")
+"/bin/sh;' '{}' ';'
+  find . -name $s -exec sed -i -e 's; /bin/sh; " (assoc-ref inputs "bash")
+"/bin/sh;' '{}' ';'
+done
+" )))
+             #t))
+         (replace 'build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "./build.sh")))
+         (delete 'install))))
+    (native-inputs
+     `(("bash" ,bash)
+       ("flex" ,flex)
+       ("gmp" ,gmp)
+       ("mpfr" ,mpfr)
+       ("mpc" ,mpc)
+       ("binutils"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftpmirror.gnu.org/gnu/binutils/binutils-2.25.1.tar.bz2")
+           (sha256
+            (base32 "08lzmhidzc16af1zbx34f8cy4z7mzrswpdbhrb8shy3xxpflmcdm"))))
+       ("target-gcc-5"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftpmirror.gnu.org/gnu/gcc/gcc-5.3.0/gcc-5.3.0.tar.bz2")
+           (sha256
+            (base32 "1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq"))))
+       ("kernel-headers"
+        ,(origin
+           (method url-fetch)
+           (uri "http://ftp.barfooze.de/pub/sabotage/tarballs/kernel-headers-3.12.6-5.tar.xz")
+           (sha256
+            (base32 "0p43lvbpy69lbjmvq39g570imj0p8z791bhzrpdnp1nygwshj2wf"))))
+       ("musl"
+        ,(origin
+           (method url-fetch)
+           (uri "http://www.musl-libc.org/releases/musl-1.1.21.tar.gz")
+           (sha256
+            (base32 "0i2z52zgc86af1n1gjiz43hgd85mxjgvgn345zsybja9dxpvchn7"))))))
+    (home-page "https://github.com/osresearch/heads")
+    (synopsis "Musl-cross gcc 5 toolchain")
+    (description "Musl-cross toolchain: binutils, gcc 5 and musl.")
+    (license license:isc))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v2 2/7] gnu: Add heads.
  2019-09-24 14:01 ` [bug#37466] [WIP v2 0/7] Add heads Danny Milosavljevic
  2019-09-24 14:01   ` [bug#37466] [WIP v2 1/7] gnu: Add musl-cross Danny Milosavljevic
@ 2019-09-24 14:01   ` Danny Milosavljevic
  2019-09-24 14:01   ` [bug#37466] [WIP v2 3/7] gnu: Add heads-linuxboot Danny Milosavljevic
                     ` (5 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-24 14:01 UTC (permalink / raw)
  To: 37466

* gnu/packages/heads.scm (heads): New variable.
* gnu/packages/patches/heads-make-environment.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                  |   1 +
 gnu/packages/heads.scm                        | 385 +++++++++++++++
 .../patches/heads-make-environment.patch      | 446 ++++++++++++++++++
 3 files changed, 832 insertions(+)
 create mode 100644 gnu/packages/patches/heads-make-environment.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 2ca70bdeaf..b2f801b05f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -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        \
diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index b547a374e0..94764e9a1f 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -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+))))
diff --git a/gnu/packages/patches/heads-make-environment.patch b/gnu/packages/patches/heads-make-environment.patch
new file mode 100644
index 0000000000..f38d08ee51
--- /dev/null
+++ b/gnu/packages/patches/heads-make-environment.patch
@@ -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) \

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v2 3/7] gnu: Add heads-linuxboot.
  2019-09-24 14:01 ` [bug#37466] [WIP v2 0/7] Add heads Danny Milosavljevic
  2019-09-24 14:01   ` [bug#37466] [WIP v2 1/7] gnu: Add musl-cross Danny Milosavljevic
  2019-09-24 14:01   ` [bug#37466] [WIP v2 2/7] gnu: Add heads Danny Milosavljevic
@ 2019-09-24 14:01   ` Danny Milosavljevic
  2019-09-24 14:01   ` [bug#37466] [WIP v2 4/7] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
                     ` (4 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-24 14:01 UTC (permalink / raw)
  To: 37466

* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
 gnu/packages/heads.scm | 46 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 94764e9a1f..72565531e3 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -507,3 +507,49 @@ done
 payload to provide a secure, flexible boot environment for laptops and
 servers.")
     (license license:gpl2+))))
+
+(define-public heads-linuxboot
+  (package
+    (inherit heads)
+    (name "heads-linuxboot")
+    (arguments
+     (substitute-keyword-arguments (package-arguments heads)
+      ((#:phases phases)
+       `(modify-phases ,phases
+          (add-before 'unpack-heads-packages 'unpack-linuxboot
+            (lambda* (#:key inputs #:allow-other-keys)
+               (mkdir-p "build")
+               (copy-recursively (assoc-ref inputs "linuxboot") "build/linuxboot-git")
+               (copy-recursively (assoc-ref inputs "edk2") "build/linuxboot-git/edk2")
+               (invoke "chmod" "-R" "u+w" "build/linuxboot-git")
+               (chmod "build/linuxboot-git/Makefile" #o664)
+               (substitute* "build/linuxboot-git/dxe/Makefile"
+                (("/usr/bin/") ""))
+               #t))))))
+    (native-inputs
+     `(("edk2"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/linuxboot/edk2")
+                   (commit "UDK2018")
+                   (recursive? #t))) ; openssl
+             (file-name "edk2-checkout")
+             (sha256
+              (base32 "0crjx1hg1m5mir2qm96dbcc3glrnww3ni0bc9f370qmm337wzlhi"))))
+       ("libuuid" ,util-linux) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("nasm" ,nasm) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("python" ,python-2) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("acpica" ,acpica) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("file" ,file)
+       ("linuxboot"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/osresearch/linuxboot.git")
+                   (commit "b5376a441e8e85cbf722e943bb8294958e87c784")
+                   (recursive? #t)))
+             (file-name "linuxboot-checkout")
+             (sha256
+              (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
+       ,@(package-native-inputs heads)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v2 4/7] gnu: Add heads-qemu-linuxboot.
  2019-09-24 14:01 ` [bug#37466] [WIP v2 0/7] Add heads Danny Milosavljevic
                     ` (2 preceding siblings ...)
  2019-09-24 14:01   ` [bug#37466] [WIP v2 3/7] gnu: Add heads-linuxboot Danny Milosavljevic
@ 2019-09-24 14:01   ` Danny Milosavljevic
  2019-09-24 14:01   ` [bug#37466] [WIP v2 5/7] gnu: Add heads-coreboot Danny Milosavljevic
                     ` (3 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-24 14:01 UTC (permalink / raw)
  To: 37466

* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
 gnu/packages/heads.scm | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 72565531e3..8982dc1fd3 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -553,3 +553,12 @@ servers.")
              (sha256
               (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
        ,@(package-native-inputs heads)))))
+
+(define-public heads-qemu-linuxboot
+  (package
+    (inherit heads-linuxboot)
+    (name "heads-qemu-linuxboot")
+    (arguments
+     `(#:make-flags
+       '("BOARD=qemu-linuxboot")
+       ,@(package-arguments heads-linuxboot)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v2 5/7] gnu: Add heads-coreboot.
  2019-09-24 14:01 ` [bug#37466] [WIP v2 0/7] Add heads Danny Milosavljevic
                     ` (3 preceding siblings ...)
  2019-09-24 14:01   ` [bug#37466] [WIP v2 4/7] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
@ 2019-09-24 14:01   ` Danny Milosavljevic
  2019-09-24 14:01   ` [bug#37466] [WIP v2 6/7] gnu: Add heads-qemu-coreboot Danny Milosavljevic
                     ` (2 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-24 14:01 UTC (permalink / raw)
  To: 37466

* gnu/packages/heads.scm (heads-coreboot): New variable.
---
 gnu/packages/heads.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 8982dc1fd3..ef1748b992 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -562,3 +562,19 @@ servers.")
      `(#:make-flags
        '("BOARD=qemu-linuxboot")
        ,@(package-arguments heads-linuxboot)))))
+
+(define heads-coreboot
+  (package
+    (inherit heads)
+    (name "heads-coreboot")
+    (arguments
+     (substitute-keyword-arguments (package-arguments heads)
+      ((#:phases phases)
+       `(modify-phases ,phases
+          (add-before 'unpack-heads-packages 'unpack-coreboot
+            (lambda* (#:key inputs #:allow-other-keys)
+               (mkdir-p "build")
+               #t))))))
+    (native-inputs
+     `(("file" ,file)
+       ,@(package-native-inputs heads)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v2 6/7] gnu: Add heads-qemu-coreboot.
  2019-09-24 14:01 ` [bug#37466] [WIP v2 0/7] Add heads Danny Milosavljevic
                     ` (4 preceding siblings ...)
  2019-09-24 14:01   ` [bug#37466] [WIP v2 5/7] gnu: Add heads-coreboot Danny Milosavljevic
@ 2019-09-24 14:01   ` Danny Milosavljevic
  2019-09-24 14:01   ` [bug#37466] [WIP v2 7/7] gnu: Add heads-kgpe-d16 Danny Milosavljevic
  2019-09-29 11:07   ` [bug#37466] [WIP v3 0/7] Add heads Danny Milosavljevic
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-24 14:01 UTC (permalink / raw)
  To: 37466

* gnu/packages/heads.scm (heads-qemu-coreboot): New variable.
---
 gnu/packages/heads.scm | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index ef1748b992..8436bf2880 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -24,7 +24,8 @@
   #:use-module (gnu packages file)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages version-control)
-  #:use-module (gnu packages virtualization))
+  #:use-module (gnu packages virtualization)
+  #:use-module ((guix build utils) #:select (alist-replace)))
 
 (define-public musl-cross
   (let ((revision "1")
@@ -578,3 +579,12 @@ servers.")
     (native-inputs
      `(("file" ,file)
        ,@(package-native-inputs heads)))))
+
+(define-public heads-qemu-coreboot
+  (package
+    (inherit heads-coreboot)
+    (name "heads-qemu-coreboot")
+    (arguments
+     `(#:make-flags
+       '("BOARD=qemu-coreboot")
+       ,@(package-arguments heads-coreboot)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v2 7/7] gnu: Add heads-kgpe-d16.
  2019-09-24 14:01 ` [bug#37466] [WIP v2 0/7] Add heads Danny Milosavljevic
                     ` (5 preceding siblings ...)
  2019-09-24 14:01   ` [bug#37466] [WIP v2 6/7] gnu: Add heads-qemu-coreboot Danny Milosavljevic
@ 2019-09-24 14:01   ` Danny Milosavljevic
  2019-09-29 11:07   ` [bug#37466] [WIP v3 0/7] Add heads Danny Milosavljevic
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-24 14:01 UTC (permalink / raw)
  To: 37466

* gnu/packages/heads.scm (heads-kgpe-d16): New variable.
---
 gnu/packages/heads.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 8436bf2880..9128a4f426 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -588,3 +588,20 @@ servers.")
      `(#:make-flags
        '("BOARD=qemu-coreboot")
        ,@(package-arguments heads-coreboot)))))
+
+(define-public heads-kgpe-d16
+  (package
+    (inherit heads-coreboot)
+    (name "heads-kgpe-d16")
+    (native-inputs
+     (alist-replace "gnupg"
+       (list (origin
+         (method url-fetch)
+         (uri "https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-1.4.21.tar.bz2")
+         (sha256
+          (base32 "0xi2mshq8f6zbarb5f61c9w2qzwrdbjm4q8fqsrwlzc51h8a6ivb"))))
+      (package-native-inputs heads-coreboot)))
+    (arguments
+     `(#:make-flags
+       '("BOARD=kgpe-d16")
+       ,@(package-arguments heads-coreboot)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [PATCH 2/4] gnu: Add heads.
  2019-09-20 13:49       ` Danny Milosavljevic
  2019-09-20 14:45         ` Julien Lepiller
@ 2019-09-24 14:40         ` Danny Milosavljevic
  2019-09-24 14:41           ` Danny Milosavljevic
  1 sibling, 1 reply; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-24 14:40 UTC (permalink / raw)
  Cc: 37466

[-- Attachment #1: Type: text/plain, Size: 362 bytes --]

> Maybe at least linux-libre produces bitwise identical outputs to Linux
> for what they care about.  I'll try it.

Status (*mumbles*):

I tried substituting linux-4.14.62 with our linux-libre-4.14.62-source.
It doesn't provide identical output--the bzImage is different, the modules are
different and the initrd is different (why the latter? weird...).

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [PATCH 2/4] gnu: Add heads.
  2019-09-24 14:40         ` Danny Milosavljevic
@ 2019-09-24 14:41           ` Danny Milosavljevic
  2019-09-25  0:24             ` Danny Milosavljevic
  0 siblings, 1 reply; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-24 14:41 UTC (permalink / raw)
  Cc: 37466

[-- Attachment #1: Type: text/plain, Size: 3106 bytes --]

To use our linux-libre (with the mentioned problems):

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 9128a4f426..e9c0b6b41c 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -202,12 +202,13 @@ done
            (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"))))
+;       ("linux"
+;        ,(origin
+;           (method url-fetch)
+;           (uri "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.62.tar.xz")
+;           (sha256
+;            (base32 "1ar29ikway5im17iw9ag1fxivr7sbj8nhxxw347xqmp1irz4vjji"))))
+       ("linux" ,linux-libre-4.14-source)
        ("musl" ; useless
         ,(origin
            (method url-fetch)
@@ -422,13 +423,16 @@ done
                  ;(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"))
+             (copy-file (assoc-ref inputs "linux")
+                        "packages/linux-4.14.62.tar.xz.tmp")
              (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"))
+                       '("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")
@@ -443,6 +447,9 @@ done
              (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 checksum verification--we do it ourselves.
+              (("sha256sum --check")
+               "cat")
               ;; Disable our non-cross toolchain environment.
               (("CROSS_TOOLS_NOCC := ")
                ; CPP=" (getenv "CROSS") "cpp CXXCPP=" (getenv "CROSS") "cpp "

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [PATCH 2/4] gnu: Add heads.
  2019-09-24 14:41           ` Danny Milosavljevic
@ 2019-09-25  0:24             ` Danny Milosavljevic
  0 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-25  0:24 UTC (permalink / raw)
  Cc: 37466

[-- Attachment #1: Type: text/plain, Size: 10263 bytes --]

Better version:

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 9128a4f426..01b9eeaa90 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -202,12 +202,13 @@ done
            (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"))))
+;       ("linux"
+;        ,(origin
+;           (method url-fetch)
+;           (uri "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.62.tar.xz")
+;           (sha256
+;            (base32 "1ar29ikway5im17iw9ag1fxivr7sbj8nhxxw347xqmp1irz4vjji"))))
+       ("linux" ,linux-libre-4.14-source)
        ("musl" ; useless
         ,(origin
            (method url-fetch)
@@ -422,13 +423,16 @@ done
                  ;(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"))
+             (copy-file (assoc-ref inputs "linux")
+                        "packages/linux-4.14.62.tar.xz.tmp")
              (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"))
+                       '("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")
@@ -443,6 +447,9 @@ done
              (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 checksum verification--we do it ourselves.
+              (("sha256sum --check")
+               "cat")
               ;; Disable our non-cross toolchain environment.
               (("CROSS_TOOLS_NOCC := ")
                ; CPP=" (getenv "CROSS") "cpp CXXCPP=" (getenv "CROSS") "cpp "
@@ -461,11 +468,13 @@ done
                               "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 issuing $HOSTCC won't work).
               (("(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)
+               (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 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);' \"$$$$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)
+               (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 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;^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);' \"$$$$s\" ; fi ; done)
 " tar (assoc-ref inputs "bash") (assoc-ref inputs "bash") (assoc-ref inputs "bash"))))
              ;(substitute* "modules/musl-cross"
              ; (("/bin/echo") "echo"))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 59874b097c..5b234a1ba9 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -194,7 +194,7 @@ defconfig.  Return the appropriate make target if applicable, otherwise return
 
 (define deblob-scripts-4.14
   (linux-libre-deblob-scripts
-   "4.14.140"
+   "4.14.62"
    (base32 "091jk9jkn9jf39bxpc7395bhcb7p96nkg3a8047380ki06lnfxh6")
    (base32 "0x9nd3hnyrm753cbgdqmy92mbnyw86w64g4hvyibnkpq5n7s3z9n")))
 
@@ -366,10 +366,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.142")
+(define-public linux-libre-4.14-version "4.14.62")
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "1wwhnm1n1b6yzsd2zzzf9i3n4hlvgnph70p67cwahw0ik4ssayz6")))
+        (hash (base32 "1ar29ikway5im17iw9ag1fxivr7sbj8nhxxw347xqmp1irz4vjji")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v3 0/7] Add heads.
  2019-09-24 14:01 ` [bug#37466] [WIP v2 0/7] Add heads Danny Milosavljevic
                     ` (6 preceding siblings ...)
  2019-09-24 14:01   ` [bug#37466] [WIP v2 7/7] gnu: Add heads-kgpe-d16 Danny Milosavljevic
@ 2019-09-29 11:07   ` Danny Milosavljevic
  2019-09-29 11:07     ` [bug#37466] [WIP v3 1/7] gnu: Add musl-cross Danny Milosavljevic
                       ` (7 more replies)
  7 siblings, 8 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-29 11:07 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

This adds heads to Guix.  Heads is minimal Linux that runs as a coreboot or
LinuxBoot payload to provide a secure, flexible boot environment for laptops
and servers.

Heads uses checksums to make sure that all the components are what they are
supposed to be, at build time, at BOOT time and when resuming.

Therefore, it's difficult to replace stuff with our versions.
I'm not sure whether we should--since Heads is supposed to build the same
thing reproducibly everywhere.

A future version will be a variant which does replace Linux by Linux-libre,
but that also changes both the source hashes and the output (and thus the
output hashes).

Danny Milosavljevic (7):
  gnu: Add musl-cross.
  gnu: Add heads.
  gnu: Add heads-linuxboot.
  gnu: Add heads-qemu-linuxboot.
  gnu: Add heads-coreboot.
  gnu: Add heads-qemu-coreboot.
  gnu: Add heads-kgpe-d16.

 gnu/local.mk                                  |   2 +
 gnu/packages/heads.scm                        | 610 ++++++++++++++++++
 .../patches/heads-make-environment.patch      | 446 +++++++++++++
 3 files changed, 1058 insertions(+)
 create mode 100644 gnu/packages/heads.scm
 create mode 100644 gnu/packages/patches/heads-make-environment.patch

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v3 1/7] gnu: Add musl-cross.
  2019-09-29 11:07   ` [bug#37466] [WIP v3 0/7] Add heads Danny Milosavljevic
@ 2019-09-29 11:07     ` Danny Milosavljevic
  2019-09-29 11:07     ` [bug#37466] [WIP v3 2/7] gnu: Add heads Danny Milosavljevic
                       ` (6 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-29 11:07 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk           |   1 +
 gnu/packages/heads.scm | 124 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 125 insertions(+)
 create mode 100644 gnu/packages/heads.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index b04a5d796e..01c726d8cf 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -246,6 +246,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/haskell-web.scm			\
   %D%/packages/haskell-xyz.scm			\
   %D%/packages/ham-radio.scm			\
+  %D%/packages/heads.scm			\
   %D%/packages/hexedit.scm			\
   %D%/packages/hugs.scm				\
   %D%/packages/hurd.scm				\
diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
new file mode 100644
index 0000000000..b547a374e0
--- /dev/null
+++ b/gnu/packages/heads.scm
@@ -0,0 +1,124 @@
+(define-module (gnu packages heads)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages algebra)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages elf)
+  #:use-module (gnu packages m4)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages cpio)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages virtualization))
+
+(define-public musl-cross
+  (let ((revision "1")
+        (commit "b7f2249b665705939dc4eca67d11553c72164f4b"))
+  (package
+    (name "musl-cross")
+    (version (git-version "0.1" revision commit))
+    (source
+          (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/GregorR/musl-cross")
+                   (commit "3b5b118f1cdddecda3f04b5005f69f962278fc1e")))
+             (file-name "musl-cross-checkout")
+             (sha256
+              (base32 "0pd1b7k4gwbvnyw0677p56d7j0xmv80k5iihkkjrd1mp9zdx90gj"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; No tests in main project.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _
+             (setenv "SHELL" "bash")
+             (setenv "CONFIG_SHELL" "bash")
+             #t))
+         (add-after 'unpack 'unpack-dependencies
+           (lambda* (#:key inputs outputs #: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))))
+             (for-each (lambda (name)
+                         (install-file* name "tarballs" ""))
+                       '("binutils" "target-gcc-5" "kernel-headers" "musl"))
+             (substitute* "config.sh"
+              (("^CC_BASE_PREFIX=.*")
+               (string-append "CC_BASE_PREFIX=" (assoc-ref outputs "out")
+                              "/crossgcc\n")))
+             ;; Note: Important: source/gcc-5.3.0/gcc/exec-tool.in
+             ;; Note: Important: source/kernel-headers-3.12.6-5/tools/install.sh
+             ;; Note: Important: move-if-change (twice)
+             ;; Make sure that shebangs are patched after new extractions.
+             (substitute* "defs.sh"
+              (("touch \"[$]2/extracted\"")
+               (string-append "touch \"$2/extracted\"
+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 \\
+genmultilib exec-tool.in install.sh
+do
+  find . -name $s -exec sed -i -e 's;!/bin/sh;!" (assoc-ref inputs "bash")
+"/bin/sh;' '{}' ';'
+  find . -name $s -exec sed -i -e 's; /bin/sh; " (assoc-ref inputs "bash")
+"/bin/sh;' '{}' ';'
+done
+" )))
+             #t))
+         (replace 'build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "./build.sh")))
+         (delete 'install))))
+    (native-inputs
+     `(("bash" ,bash)
+       ("flex" ,flex)
+       ("gmp" ,gmp)
+       ("mpfr" ,mpfr)
+       ("mpc" ,mpc)
+       ("binutils"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftpmirror.gnu.org/gnu/binutils/binutils-2.25.1.tar.bz2")
+           (sha256
+            (base32 "08lzmhidzc16af1zbx34f8cy4z7mzrswpdbhrb8shy3xxpflmcdm"))))
+       ("target-gcc-5"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftpmirror.gnu.org/gnu/gcc/gcc-5.3.0/gcc-5.3.0.tar.bz2")
+           (sha256
+            (base32 "1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq"))))
+       ("kernel-headers"
+        ,(origin
+           (method url-fetch)
+           (uri "http://ftp.barfooze.de/pub/sabotage/tarballs/kernel-headers-3.12.6-5.tar.xz")
+           (sha256
+            (base32 "0p43lvbpy69lbjmvq39g570imj0p8z791bhzrpdnp1nygwshj2wf"))))
+       ("musl"
+        ,(origin
+           (method url-fetch)
+           (uri "http://www.musl-libc.org/releases/musl-1.1.21.tar.gz")
+           (sha256
+            (base32 "0i2z52zgc86af1n1gjiz43hgd85mxjgvgn345zsybja9dxpvchn7"))))))
+    (home-page "https://github.com/osresearch/heads")
+    (synopsis "Musl-cross gcc 5 toolchain")
+    (description "Musl-cross toolchain: binutils, gcc 5 and musl.")
+    (license license:isc))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v3 2/7] gnu: Add heads.
  2019-09-29 11:07   ` [bug#37466] [WIP v3 0/7] Add heads Danny Milosavljevic
  2019-09-29 11:07     ` [bug#37466] [WIP v3 1/7] gnu: Add musl-cross Danny Milosavljevic
@ 2019-09-29 11:07     ` Danny Milosavljevic
  2019-09-29 11:07     ` [bug#37466] [WIP v3 3/7] gnu: Add heads-linuxboot Danny Milosavljevic
                       ` (5 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-29 11:07 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads): New variable.
* gnu/packages/patches/heads-make-environment.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                  |   1 +
 gnu/packages/heads.scm                        | 388 +++++++++++++++
 .../patches/heads-make-environment.patch      | 446 ++++++++++++++++++
 3 files changed, 835 insertions(+)
 create mode 100644 gnu/packages/patches/heads-make-environment.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 01c726d8cf..fb3c913f2c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -948,6 +948,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        \
diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index b547a374e0..311eeeb1a1 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -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,384 @@ 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://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.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 "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"))
+             (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.
+              ;; (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) && 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);' \"$$$$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 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;^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);' \"$$$$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+))))
diff --git a/gnu/packages/patches/heads-make-environment.patch b/gnu/packages/patches/heads-make-environment.patch
new file mode 100644
index 0000000000..f38d08ee51
--- /dev/null
+++ b/gnu/packages/patches/heads-make-environment.patch
@@ -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) \

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v3 3/7] gnu: Add heads-linuxboot.
  2019-09-29 11:07   ` [bug#37466] [WIP v3 0/7] Add heads Danny Milosavljevic
  2019-09-29 11:07     ` [bug#37466] [WIP v3 1/7] gnu: Add musl-cross Danny Milosavljevic
  2019-09-29 11:07     ` [bug#37466] [WIP v3 2/7] gnu: Add heads Danny Milosavljevic
@ 2019-09-29 11:07     ` Danny Milosavljevic
  2019-09-29 11:07     ` [bug#37466] [WIP v3 4/7] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
                       ` (4 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-29 11:07 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
 gnu/packages/heads.scm | 46 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 311eeeb1a1..7d1f70a621 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -510,3 +510,49 @@ done
 payload to provide a secure, flexible boot environment for laptops and
 servers.")
     (license license:gpl2+))))
+
+(define-public heads-linuxboot
+  (package
+    (inherit heads)
+    (name "heads-linuxboot")
+    (arguments
+     (substitute-keyword-arguments (package-arguments heads)
+      ((#:phases phases)
+       `(modify-phases ,phases
+          (add-before 'unpack-heads-packages 'unpack-linuxboot
+            (lambda* (#:key inputs #:allow-other-keys)
+               (mkdir-p "build")
+               (copy-recursively (assoc-ref inputs "linuxboot") "build/linuxboot-git")
+               (copy-recursively (assoc-ref inputs "edk2") "build/linuxboot-git/edk2")
+               (invoke "chmod" "-R" "u+w" "build/linuxboot-git")
+               (chmod "build/linuxboot-git/Makefile" #o664)
+               (substitute* "build/linuxboot-git/dxe/Makefile"
+                (("/usr/bin/") ""))
+               #t))))))
+    (native-inputs
+     `(("edk2"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/linuxboot/edk2")
+                   (commit "UDK2018")
+                   (recursive? #t))) ; openssl
+             (file-name "edk2-checkout")
+             (sha256
+              (base32 "0crjx1hg1m5mir2qm96dbcc3glrnww3ni0bc9f370qmm337wzlhi"))))
+       ("libuuid" ,util-linux) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("nasm" ,nasm) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("python" ,python-2) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("acpica" ,acpica) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("file" ,file)
+       ("linuxboot"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/osresearch/linuxboot.git")
+                   (commit "b5376a441e8e85cbf722e943bb8294958e87c784")
+                   (recursive? #t)))
+             (file-name "linuxboot-checkout")
+             (sha256
+              (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
+       ,@(package-native-inputs heads)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v3 4/7] gnu: Add heads-qemu-linuxboot.
  2019-09-29 11:07   ` [bug#37466] [WIP v3 0/7] Add heads Danny Milosavljevic
                       ` (2 preceding siblings ...)
  2019-09-29 11:07     ` [bug#37466] [WIP v3 3/7] gnu: Add heads-linuxboot Danny Milosavljevic
@ 2019-09-29 11:07     ` Danny Milosavljevic
  2019-09-29 11:07     ` [bug#37466] [WIP v3 5/7] gnu: Add heads-coreboot Danny Milosavljevic
                       ` (3 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-29 11:07 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
 gnu/packages/heads.scm | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 7d1f70a621..179dab1546 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -556,3 +556,12 @@ servers.")
              (sha256
               (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
        ,@(package-native-inputs heads)))))
+
+(define-public heads-qemu-linuxboot
+  (package
+    (inherit heads-linuxboot)
+    (name "heads-qemu-linuxboot")
+    (arguments
+     `(#:make-flags
+       '("BOARD=qemu-linuxboot")
+       ,@(package-arguments heads-linuxboot)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v3 5/7] gnu: Add heads-coreboot.
  2019-09-29 11:07   ` [bug#37466] [WIP v3 0/7] Add heads Danny Milosavljevic
                       ` (3 preceding siblings ...)
  2019-09-29 11:07     ` [bug#37466] [WIP v3 4/7] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
@ 2019-09-29 11:07     ` Danny Milosavljevic
  2019-09-29 11:07     ` [bug#37466] [WIP v3 6/7] gnu: Add heads-qemu-coreboot Danny Milosavljevic
                       ` (2 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-29 11:07 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-coreboot): New variable.
---
 gnu/packages/heads.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 179dab1546..0b6a93d744 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -565,3 +565,19 @@ servers.")
      `(#:make-flags
        '("BOARD=qemu-linuxboot")
        ,@(package-arguments heads-linuxboot)))))
+
+(define heads-coreboot
+  (package
+    (inherit heads)
+    (name "heads-coreboot")
+    (arguments
+     (substitute-keyword-arguments (package-arguments heads)
+      ((#:phases phases)
+       `(modify-phases ,phases
+          (add-before 'unpack-heads-packages 'unpack-coreboot
+            (lambda* (#:key inputs #:allow-other-keys)
+               (mkdir-p "build")
+               #t))))))
+    (native-inputs
+     `(("file" ,file)
+       ,@(package-native-inputs heads)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v3 6/7] gnu: Add heads-qemu-coreboot.
  2019-09-29 11:07   ` [bug#37466] [WIP v3 0/7] Add heads Danny Milosavljevic
                       ` (4 preceding siblings ...)
  2019-09-29 11:07     ` [bug#37466] [WIP v3 5/7] gnu: Add heads-coreboot Danny Milosavljevic
@ 2019-09-29 11:07     ` Danny Milosavljevic
  2019-09-29 11:07     ` [bug#37466] [WIP v3 7/7] gnu: Add heads-kgpe-d16 Danny Milosavljevic
  2019-10-02 21:15     ` [bug#37466] [WIP v4 0/7] Add heads Danny Milosavljevic
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-29 11:07 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-qemu-coreboot): New variable.
---
 gnu/packages/heads.scm | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 0b6a93d744..80e570b097 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -24,7 +24,8 @@
   #:use-module (gnu packages file)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages version-control)
-  #:use-module (gnu packages virtualization))
+  #:use-module (gnu packages virtualization)
+  #:use-module ((guix build utils) #:select (alist-replace)))
 
 (define-public musl-cross
   (let ((revision "1")
@@ -581,3 +582,12 @@ servers.")
     (native-inputs
      `(("file" ,file)
        ,@(package-native-inputs heads)))))
+
+(define-public heads-qemu-coreboot
+  (package
+    (inherit heads-coreboot)
+    (name "heads-qemu-coreboot")
+    (arguments
+     `(#:make-flags
+       '("BOARD=qemu-coreboot")
+       ,@(package-arguments heads-coreboot)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v3 7/7] gnu: Add heads-kgpe-d16.
  2019-09-29 11:07   ` [bug#37466] [WIP v3 0/7] Add heads Danny Milosavljevic
                       ` (5 preceding siblings ...)
  2019-09-29 11:07     ` [bug#37466] [WIP v3 6/7] gnu: Add heads-qemu-coreboot Danny Milosavljevic
@ 2019-09-29 11:07     ` Danny Milosavljevic
  2019-10-02 21:15     ` [bug#37466] [WIP v4 0/7] Add heads Danny Milosavljevic
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-09-29 11:07 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-kgpe-d16): New variable.
---
 gnu/packages/heads.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 80e570b097..22f3f60d75 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -591,3 +591,20 @@ servers.")
      `(#:make-flags
        '("BOARD=qemu-coreboot")
        ,@(package-arguments heads-coreboot)))))
+
+(define-public heads-kgpe-d16
+  (package
+    (inherit heads-coreboot)
+    (name "heads-kgpe-d16")
+    (native-inputs
+     (alist-replace "gnupg"
+       (list (origin
+         (method url-fetch)
+         (uri "https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-1.4.21.tar.bz2")
+         (sha256
+          (base32 "0xi2mshq8f6zbarb5f61c9w2qzwrdbjm4q8fqsrwlzc51h8a6ivb"))))
+      (package-native-inputs heads-coreboot)))
+    (arguments
+     `(#:make-flags
+       '("BOARD=kgpe-d16")
+       ,@(package-arguments heads-coreboot)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v4 0/7] Add heads.
  2019-09-29 11:07   ` [bug#37466] [WIP v3 0/7] Add heads Danny Milosavljevic
                       ` (6 preceding siblings ...)
  2019-09-29 11:07     ` [bug#37466] [WIP v3 7/7] gnu: Add heads-kgpe-d16 Danny Milosavljevic
@ 2019-10-02 21:15     ` Danny Milosavljevic
  2019-10-02 21:15       ` [bug#37466] [WIP v4 1/7] gnu: Add musl-cross Danny Milosavljevic
                         ` (7 more replies)
  7 siblings, 8 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-10-02 21:15 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

This adds heads to Guix.  Heads is minimal Linux that runs as a coreboot or
LinuxBoot payload to provide a secure, flexible boot environment for laptops
and servers.

Heads uses checksums to make sure that all the components are what they are
supposed to be, at build time, at BOOT time and when resuming.

Therefore, it's difficult to replace stuff with our versions.
I'm not sure whether we should--since Heads is supposed to build the same
thing reproducibly everywhere.

A future version will be a variant which does replace Linux by Linux-libre,
but that also changes both the source hashes and the output (and thus the
output hashes).

Danny Milosavljevic (7):
  gnu: Add musl-cross.
  gnu: Add heads.
  gnu: Add heads-linuxboot.
  gnu: Add heads-qemu-linuxboot.
  gnu: Add heads-coreboot.
  gnu: Add heads-qemu-coreboot.
  gnu: Add heads-kgpe-d16.

 gnu/local.mk                                  |   3 +
 gnu/packages/heads.scm                        | 615 ++++++++++++++++++
 .../patches/heads-kgpe-d16-nonalignment.patch |  23 +
 .../patches/heads-make-environment.patch      | 446 +++++++++++++
 4 files changed, 1087 insertions(+)
 create mode 100644 gnu/packages/heads.scm
 create mode 100644 gnu/packages/patches/heads-kgpe-d16-nonalignment.patch
 create mode 100644 gnu/packages/patches/heads-make-environment.patch

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v4 1/7] gnu: Add musl-cross.
  2019-10-02 21:15     ` [bug#37466] [WIP v4 0/7] Add heads Danny Milosavljevic
@ 2019-10-02 21:15       ` Danny Milosavljevic
  2019-10-07 13:50         ` Danny Milosavljevic
  2019-10-02 21:15       ` [bug#37466] [WIP v4 2/7] gnu: Add heads Danny Milosavljevic
                         ` (6 subsequent siblings)
  7 siblings, 1 reply; 58+ messages in thread
From: Danny Milosavljevic @ 2019-10-02 21:15 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk           |   1 +
 gnu/packages/heads.scm | 124 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 125 insertions(+)
 create mode 100644 gnu/packages/heads.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index b04a5d796e..01c726d8cf 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -246,6 +246,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/haskell-web.scm			\
   %D%/packages/haskell-xyz.scm			\
   %D%/packages/ham-radio.scm			\
+  %D%/packages/heads.scm			\
   %D%/packages/hexedit.scm			\
   %D%/packages/hugs.scm				\
   %D%/packages/hurd.scm				\
diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
new file mode 100644
index 0000000000..b547a374e0
--- /dev/null
+++ b/gnu/packages/heads.scm
@@ -0,0 +1,124 @@
+(define-module (gnu packages heads)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages algebra)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages elf)
+  #:use-module (gnu packages m4)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages cpio)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages virtualization))
+
+(define-public musl-cross
+  (let ((revision "1")
+        (commit "b7f2249b665705939dc4eca67d11553c72164f4b"))
+  (package
+    (name "musl-cross")
+    (version (git-version "0.1" revision commit))
+    (source
+          (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/GregorR/musl-cross")
+                   (commit "3b5b118f1cdddecda3f04b5005f69f962278fc1e")))
+             (file-name "musl-cross-checkout")
+             (sha256
+              (base32 "0pd1b7k4gwbvnyw0677p56d7j0xmv80k5iihkkjrd1mp9zdx90gj"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; No tests in main project.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _
+             (setenv "SHELL" "bash")
+             (setenv "CONFIG_SHELL" "bash")
+             #t))
+         (add-after 'unpack 'unpack-dependencies
+           (lambda* (#:key inputs outputs #: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))))
+             (for-each (lambda (name)
+                         (install-file* name "tarballs" ""))
+                       '("binutils" "target-gcc-5" "kernel-headers" "musl"))
+             (substitute* "config.sh"
+              (("^CC_BASE_PREFIX=.*")
+               (string-append "CC_BASE_PREFIX=" (assoc-ref outputs "out")
+                              "/crossgcc\n")))
+             ;; Note: Important: source/gcc-5.3.0/gcc/exec-tool.in
+             ;; Note: Important: source/kernel-headers-3.12.6-5/tools/install.sh
+             ;; Note: Important: move-if-change (twice)
+             ;; Make sure that shebangs are patched after new extractions.
+             (substitute* "defs.sh"
+              (("touch \"[$]2/extracted\"")
+               (string-append "touch \"$2/extracted\"
+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 \\
+genmultilib exec-tool.in install.sh
+do
+  find . -name $s -exec sed -i -e 's;!/bin/sh;!" (assoc-ref inputs "bash")
+"/bin/sh;' '{}' ';'
+  find . -name $s -exec sed -i -e 's; /bin/sh; " (assoc-ref inputs "bash")
+"/bin/sh;' '{}' ';'
+done
+" )))
+             #t))
+         (replace 'build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "./build.sh")))
+         (delete 'install))))
+    (native-inputs
+     `(("bash" ,bash)
+       ("flex" ,flex)
+       ("gmp" ,gmp)
+       ("mpfr" ,mpfr)
+       ("mpc" ,mpc)
+       ("binutils"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftpmirror.gnu.org/gnu/binutils/binutils-2.25.1.tar.bz2")
+           (sha256
+            (base32 "08lzmhidzc16af1zbx34f8cy4z7mzrswpdbhrb8shy3xxpflmcdm"))))
+       ("target-gcc-5"
+        ,(origin
+           (method url-fetch)
+           (uri "https://ftpmirror.gnu.org/gnu/gcc/gcc-5.3.0/gcc-5.3.0.tar.bz2")
+           (sha256
+            (base32 "1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq"))))
+       ("kernel-headers"
+        ,(origin
+           (method url-fetch)
+           (uri "http://ftp.barfooze.de/pub/sabotage/tarballs/kernel-headers-3.12.6-5.tar.xz")
+           (sha256
+            (base32 "0p43lvbpy69lbjmvq39g570imj0p8z791bhzrpdnp1nygwshj2wf"))))
+       ("musl"
+        ,(origin
+           (method url-fetch)
+           (uri "http://www.musl-libc.org/releases/musl-1.1.21.tar.gz")
+           (sha256
+            (base32 "0i2z52zgc86af1n1gjiz43hgd85mxjgvgn345zsybja9dxpvchn7"))))))
+    (home-page "https://github.com/osresearch/heads")
+    (synopsis "Musl-cross gcc 5 toolchain")
+    (description "Musl-cross toolchain: binutils, gcc 5 and musl.")
+    (license license:isc))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v4 2/7] gnu: Add heads.
  2019-10-02 21:15     ` [bug#37466] [WIP v4 0/7] Add heads Danny Milosavljevic
  2019-10-02 21:15       ` [bug#37466] [WIP v4 1/7] gnu: Add musl-cross Danny Milosavljevic
@ 2019-10-02 21:15       ` Danny Milosavljevic
  2019-10-02 21:15       ` [bug#37466] [WIP v4 3/7] gnu: Add heads-linuxboot Danny Milosavljevic
                         ` (5 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-10-02 21:15 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads): New variable.
* gnu/packages/patches/heads-make-environment.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                  |   1 +
 gnu/packages/heads.scm                        | 388 +++++++++++++++
 .../patches/heads-make-environment.patch      | 446 ++++++++++++++++++
 3 files changed, 835 insertions(+)
 create mode 100644 gnu/packages/patches/heads-make-environment.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 01c726d8cf..fb3c913f2c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -948,6 +948,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        \
diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index b547a374e0..311eeeb1a1 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -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,384 @@ 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://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.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.
+
+       ("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 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"))
+             #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"))
+             (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.
+              ;; (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) && 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);' \"$$$$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 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;^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);' \"$$$$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+))))
diff --git a/gnu/packages/patches/heads-make-environment.patch b/gnu/packages/patches/heads-make-environment.patch
new file mode 100644
index 0000000000..f38d08ee51
--- /dev/null
+++ b/gnu/packages/patches/heads-make-environment.patch
@@ -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) \

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v4 3/7] gnu: Add heads-linuxboot.
  2019-10-02 21:15     ` [bug#37466] [WIP v4 0/7] Add heads Danny Milosavljevic
  2019-10-02 21:15       ` [bug#37466] [WIP v4 1/7] gnu: Add musl-cross Danny Milosavljevic
  2019-10-02 21:15       ` [bug#37466] [WIP v4 2/7] gnu: Add heads Danny Milosavljevic
@ 2019-10-02 21:15       ` Danny Milosavljevic
  2019-10-02 21:15       ` [bug#37466] [WIP v4 4/7] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
                         ` (4 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-10-02 21:15 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
 gnu/packages/heads.scm | 46 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 311eeeb1a1..7d1f70a621 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -510,3 +510,49 @@ done
 payload to provide a secure, flexible boot environment for laptops and
 servers.")
     (license license:gpl2+))))
+
+(define-public heads-linuxboot
+  (package
+    (inherit heads)
+    (name "heads-linuxboot")
+    (arguments
+     (substitute-keyword-arguments (package-arguments heads)
+      ((#:phases phases)
+       `(modify-phases ,phases
+          (add-before 'unpack-heads-packages 'unpack-linuxboot
+            (lambda* (#:key inputs #:allow-other-keys)
+               (mkdir-p "build")
+               (copy-recursively (assoc-ref inputs "linuxboot") "build/linuxboot-git")
+               (copy-recursively (assoc-ref inputs "edk2") "build/linuxboot-git/edk2")
+               (invoke "chmod" "-R" "u+w" "build/linuxboot-git")
+               (chmod "build/linuxboot-git/Makefile" #o664)
+               (substitute* "build/linuxboot-git/dxe/Makefile"
+                (("/usr/bin/") ""))
+               #t))))))
+    (native-inputs
+     `(("edk2"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/linuxboot/edk2")
+                   (commit "UDK2018")
+                   (recursive? #t))) ; openssl
+             (file-name "edk2-checkout")
+             (sha256
+              (base32 "0crjx1hg1m5mir2qm96dbcc3glrnww3ni0bc9f370qmm337wzlhi"))))
+       ("libuuid" ,util-linux) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("nasm" ,nasm) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("python" ,python-2) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("acpica" ,acpica) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("file" ,file)
+       ("linuxboot"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/osresearch/linuxboot.git")
+                   (commit "b5376a441e8e85cbf722e943bb8294958e87c784")
+                   (recursive? #t)))
+             (file-name "linuxboot-checkout")
+             (sha256
+              (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
+       ,@(package-native-inputs heads)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v4 4/7] gnu: Add heads-qemu-linuxboot.
  2019-10-02 21:15     ` [bug#37466] [WIP v4 0/7] Add heads Danny Milosavljevic
                         ` (2 preceding siblings ...)
  2019-10-02 21:15       ` [bug#37466] [WIP v4 3/7] gnu: Add heads-linuxboot Danny Milosavljevic
@ 2019-10-02 21:15       ` Danny Milosavljevic
  2019-10-02 21:16       ` [bug#37466] [WIP v4 5/7] gnu: Add heads-coreboot Danny Milosavljevic
                         ` (3 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-10-02 21:15 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
 gnu/packages/heads.scm | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 7d1f70a621..179dab1546 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -556,3 +556,12 @@ servers.")
              (sha256
               (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
        ,@(package-native-inputs heads)))))
+
+(define-public heads-qemu-linuxboot
+  (package
+    (inherit heads-linuxboot)
+    (name "heads-qemu-linuxboot")
+    (arguments
+     `(#:make-flags
+       '("BOARD=qemu-linuxboot")
+       ,@(package-arguments heads-linuxboot)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v4 5/7] gnu: Add heads-coreboot.
  2019-10-02 21:15     ` [bug#37466] [WIP v4 0/7] Add heads Danny Milosavljevic
                         ` (3 preceding siblings ...)
  2019-10-02 21:15       ` [bug#37466] [WIP v4 4/7] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
@ 2019-10-02 21:16       ` Danny Milosavljevic
  2019-10-02 21:16       ` [bug#37466] [WIP v4 6/7] gnu: Add heads-qemu-coreboot Danny Milosavljevic
                         ` (2 subsequent siblings)
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-10-02 21:16 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-coreboot): New variable.
---
 gnu/packages/heads.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 179dab1546..0b6a93d744 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -565,3 +565,19 @@ servers.")
      `(#:make-flags
        '("BOARD=qemu-linuxboot")
        ,@(package-arguments heads-linuxboot)))))
+
+(define heads-coreboot
+  (package
+    (inherit heads)
+    (name "heads-coreboot")
+    (arguments
+     (substitute-keyword-arguments (package-arguments heads)
+      ((#:phases phases)
+       `(modify-phases ,phases
+          (add-before 'unpack-heads-packages 'unpack-coreboot
+            (lambda* (#:key inputs #:allow-other-keys)
+               (mkdir-p "build")
+               #t))))))
+    (native-inputs
+     `(("file" ,file)
+       ,@(package-native-inputs heads)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v4 6/7] gnu: Add heads-qemu-coreboot.
  2019-10-02 21:15     ` [bug#37466] [WIP v4 0/7] Add heads Danny Milosavljevic
                         ` (4 preceding siblings ...)
  2019-10-02 21:16       ` [bug#37466] [WIP v4 5/7] gnu: Add heads-coreboot Danny Milosavljevic
@ 2019-10-02 21:16       ` Danny Milosavljevic
  2019-10-02 21:16       ` [bug#37466] [WIP v4 7/7] gnu: Add heads-kgpe-d16 Danny Milosavljevic
  2020-05-02 17:11       ` [bug#37466] [WIP v5 0/8] Add heads Danny Milosavljevic
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-10-02 21:16 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-qemu-coreboot): New variable.
---
 gnu/packages/heads.scm | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 0b6a93d744..80e570b097 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -24,7 +24,8 @@
   #:use-module (gnu packages file)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages version-control)
-  #:use-module (gnu packages virtualization))
+  #:use-module (gnu packages virtualization)
+  #:use-module ((guix build utils) #:select (alist-replace)))
 
 (define-public musl-cross
   (let ((revision "1")
@@ -581,3 +582,12 @@ servers.")
     (native-inputs
      `(("file" ,file)
        ,@(package-native-inputs heads)))))
+
+(define-public heads-qemu-coreboot
+  (package
+    (inherit heads-coreboot)
+    (name "heads-qemu-coreboot")
+    (arguments
+     `(#:make-flags
+       '("BOARD=qemu-coreboot")
+       ,@(package-arguments heads-coreboot)))))

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v4 7/7] gnu: Add heads-kgpe-d16.
  2019-10-02 21:15     ` [bug#37466] [WIP v4 0/7] Add heads Danny Milosavljevic
                         ` (5 preceding siblings ...)
  2019-10-02 21:16       ` [bug#37466] [WIP v4 6/7] gnu: Add heads-qemu-coreboot Danny Milosavljevic
@ 2019-10-02 21:16       ` Danny Milosavljevic
  2020-05-02 17:11       ` [bug#37466] [WIP v5 0/8] Add heads Danny Milosavljevic
  7 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2019-10-02 21:16 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-kgpe-d16): New variable.
* gnu/packages/patches/heads-kgpe-d16-nonalignment.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/heads.scm                        | 22 ++++++++++++++++++
 .../patches/heads-kgpe-d16-nonalignment.patch | 23 +++++++++++++++++++
 3 files changed, 46 insertions(+)
 create mode 100644 gnu/packages/patches/heads-kgpe-d16-nonalignment.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index fb3c913f2c..10bac6c77b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -948,6 +948,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-kgpe-d16-nonalignment.patch	\
   %D%/packages/patches/heads-make-environment.patch		\
   %D%/packages/patches/higan-remove-march-native-flag.patch	\
   %D%/packages/patches/hubbub-sort-entities.patch		\
diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 80e570b097..5e14c95775 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -591,3 +591,25 @@ servers.")
      `(#:make-flags
        '("BOARD=qemu-coreboot")
        ,@(package-arguments heads-coreboot)))))
+
+(define-public heads-kgpe-d16
+  (package
+    (inherit heads-coreboot)
+    (name "heads-kgpe-d16")
+    (source
+     (origin
+      (inherit (package-source heads-coreboot))
+      (patches (search-patches "heads-make-environment.patch"
+                               "heads-kgpe-d16-nonalignment.patch"))))
+    (native-inputs
+     (alist-replace "gnupg"
+       (list (origin
+         (method url-fetch)
+         (uri "https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-1.4.21.tar.bz2")
+         (sha256
+          (base32 "0xi2mshq8f6zbarb5f61c9w2qzwrdbjm4q8fqsrwlzc51h8a6ivb"))))
+      (package-native-inputs heads-coreboot)))
+    (arguments
+     `(#:make-flags
+       '("BOARD=kgpe-d16")
+       ,@(package-arguments heads-coreboot)))))
diff --git a/gnu/packages/patches/heads-kgpe-d16-nonalignment.patch b/gnu/packages/patches/heads-kgpe-d16-nonalignment.patch
new file mode 100644
index 0000000000..cbbab1ea40
--- /dev/null
+++ b/gnu/packages/patches/heads-kgpe-d16-nonalignment.patch
@@ -0,0 +1,23 @@
+Source: https://github.com/osresearch/heads/pull/478
+From 25113cb8c2f431bb0e0c038cbd2a306069159bcb Mon Sep 17 00:00:00 2001
+From: Francis Lam <flam@alum.mit.edu>
+Date: Sat, 10 Nov 2018 13:41:01 -0800
+Subject: [PATCH] Fix coreboot build for kgpe-d16
+
+---
+ modules/coreboot | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/coreboot b/modules/coreboot
+index 7081fe08..7c62b6f3 100644
+--- a/modules/coreboot
++++ b/modules/coreboot
+@@ -16,7 +16,7 @@ CONFIG_COREBOOT_CONFIG ?= config/coreboot-$(BOARD).config
+ # Ensure that touching the config file will force a rebuild
+ $(build)/$(coreboot_dir)/.configured: $(CONFIG_COREBOOT_CONFIG)
+ 
+-EXTRA_FLAGS := -fdebug-prefix-map=$(pwd)=heads -gno-record-gcc-switches
++EXTRA_FLAGS := -fdebug-prefix-map=$(pwd)=heads -gno-record-gcc-switches -Wno-error=packed-not-aligned
+ 
+ coreboot_configure := \
+ 	mkdir -p "$(build)/$(coreboot_dir)" \

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v4 1/7] gnu: Add musl-cross.
  2019-10-02 21:15       ` [bug#37466] [WIP v4 1/7] gnu: Add musl-cross Danny Milosavljevic
@ 2019-10-07 13:50         ` Danny Milosavljevic
  2020-05-02 15:52           ` Danny Milosavljevic
  0 siblings, 1 reply; 58+ messages in thread
From: Danny Milosavljevic @ 2019-10-07 13:50 UTC (permalink / raw)
  To: 37466

[-- Attachment #1: Type: text/plain, Size: 234 bytes --]

Hi,

in two weeks, if there are no objections, I'll push (only) musl-cross to guix
master.  It is the main thing you have to have on Guix so you can compile
Heads at all (even manually)--and I didn't modify it in some weeks now.

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v4 1/7] gnu: Add musl-cross.
  2019-10-07 13:50         ` Danny Milosavljevic
@ 2020-05-02 15:52           ` Danny Milosavljevic
  0 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-02 15:52 UTC (permalink / raw)
  To: 37466

[-- Attachment #1: Type: text/plain, Size: 86 bytes --]

Pushed musl-cross to guix master as commit f7228e317703808a8a193f6db8a3cb6ba5380f2f.

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v5 0/8] Add heads.
  2019-10-02 21:15     ` [bug#37466] [WIP v4 0/7] Add heads Danny Milosavljevic
                         ` (6 preceding siblings ...)
  2019-10-02 21:16       ` [bug#37466] [WIP v4 7/7] gnu: Add heads-kgpe-d16 Danny Milosavljevic
@ 2020-05-02 17:11       ` Danny Milosavljevic
  2020-05-02 17:11         ` [bug#37466] [WIP v5 1/8] gnu: Add elfutils@0.174 Danny Milosavljevic
                           ` (8 more replies)
  7 siblings, 9 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-02 17:11 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

Danny Milosavljevic (8):
  gnu: Add elfutils@0.174.
  gnu: Add heads.
  gnu: Add heads-linuxboot.
  gnu: Add heads-qemu-linuxboot.
  gnu: Add heads-coreboot.
  gnu: Add heads-qemu-coreboot.
  gnu: Add heads-kgpe-d16.
  gnu: Add heads-diesel.

 gnu/packages/heads.scm | 523 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 523 insertions(+)





^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v5 1/8] gnu: Add elfutils@0.174.
  2020-05-02 17:11       ` [bug#37466] [WIP v5 0/8] Add heads Danny Milosavljevic
@ 2020-05-02 17:11         ` Danny Milosavljevic
  2020-05-02 17:11         ` [bug#37466] [WIP v5 2/8] gnu: Add heads Danny Milosavljevic
                           ` (7 subsequent siblings)
  8 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-02 17:11 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (elfutils-0.174): New variable.
---
 gnu/packages/heads.scm | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index b28433431c..86ab487b0f 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -161,3 +161,16 @@ done
     (synopsis "Musl-cross gcc 5 toolchain")
     (description "Musl-cross toolchain: binutils, gcc 5 and musl.")
     (license license:isc))))
+
+(define elfutils-0.174
+  (package
+    (inherit elfutils)
+    (version "0.174")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://sourceware.org/elfutils/ftp/"
+                                  version "/elfutils-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "12nhr8zrw4sjzrvpf38vl55bq5nm05qkd7nq76as443f0xq7xwnd"))
+              (patches (search-patches "elfutils-tests-ptrace.patch"))))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v5 2/8] gnu: Add heads.
  2020-05-02 17:11       ` [bug#37466] [WIP v5 0/8] Add heads Danny Milosavljevic
  2020-05-02 17:11         ` [bug#37466] [WIP v5 1/8] gnu: Add elfutils@0.174 Danny Milosavljevic
@ 2020-05-02 17:11         ` Danny Milosavljevic
  2020-05-02 17:11         ` [bug#37466] [WIP v5 3/8] gnu: Add heads-linuxboot Danny Milosavljevic
                           ` (6 subsequent siblings)
  8 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-02 17:11 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads): New variable.
---
 gnu/packages/heads.scm | 391 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 391 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 86ab487b0f..3428573836 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -174,3 +174,394 @@ done
                (base32
                 "12nhr8zrw4sjzrvpf38vl55bq5nm05qkd7nq76as443f0xq7xwnd"))
               (patches (search-patches "elfutils-tests-ptrace.patch"))))))
+
+(define heads
+  (let ((revision "2")
+        (commit "00a1a2bef6672f04cb69212cc657639c3cf476a4"))
+  (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
+        "0phgqpwriky6fl7xrvkfhrnbkmb3yf3gr924bfn0gg9abwjlvymh"))
+      (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)
+       ("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.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.
+
+       ("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.
+       #:make-flags
+       (list (string-append
+              "CROSS="
+              (assoc-ref %build-inputs "musl-cross")
+              "/crossgcc/x86_64-linux-musl/bin/x86_64-linux-musl-"))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; 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"))
+             #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"))
+             (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) && 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);' \"$$$$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 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;^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);' \"$$$$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+))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v5 3/8] gnu: Add heads-linuxboot.
  2020-05-02 17:11       ` [bug#37466] [WIP v5 0/8] Add heads Danny Milosavljevic
  2020-05-02 17:11         ` [bug#37466] [WIP v5 1/8] gnu: Add elfutils@0.174 Danny Milosavljevic
  2020-05-02 17:11         ` [bug#37466] [WIP v5 2/8] gnu: Add heads Danny Milosavljevic
@ 2020-05-02 17:11         ` Danny Milosavljevic
  2020-05-02 17:11         ` [bug#37466] [WIP v5 4/8] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
                           ` (5 subsequent siblings)
  8 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-02 17:11 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
 gnu/packages/heads.scm | 46 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 3428573836..48030f8ed5 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -565,3 +565,49 @@ done
 payload to provide a secure, flexible boot environment for laptops and
 servers.")
     (license license:gpl2+))))
+
+(define heads-linuxboot
+  (package
+    (inherit heads)
+    (name "heads-linuxboot")
+    (arguments
+     (substitute-keyword-arguments (package-arguments heads)
+      ((#:phases phases)
+       `(modify-phases ,phases
+          (add-before 'unpack-heads-packages 'unpack-linuxboot
+            (lambda* (#:key inputs #:allow-other-keys)
+               (mkdir-p "build")
+               (copy-recursively (assoc-ref inputs "linuxboot") "build/linuxboot-git")
+               (copy-recursively (assoc-ref inputs "edk2") "build/linuxboot-git/edk2")
+               (invoke "chmod" "-R" "u+w" "build/linuxboot-git")
+               (chmod "build/linuxboot-git/Makefile" #o664)
+               (substitute* "build/linuxboot-git/dxe/Makefile"
+                (("/usr/bin/") ""))
+               #t))))))
+    (native-inputs
+     `(("edk2"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/linuxboot/edk2")
+                   (commit "UDK2018")
+                   (recursive? #t))) ; openssl
+             (file-name "edk2-checkout")
+             (sha256
+              (base32 "0crjx1hg1m5mir2qm96dbcc3glrnww3ni0bc9f370qmm337wzlhi"))))
+       ("libuuid" ,util-linux) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("nasm" ,nasm) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("python" ,python-2) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("acpica" ,acpica) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("file" ,file)
+       ("linuxboot"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/osresearch/linuxboot.git")
+                   (commit "b5376a441e8e85cbf722e943bb8294958e87c784")
+                   (recursive? #t)))
+             (file-name "linuxboot-checkout")
+             (sha256
+              (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
+       ,@(package-native-inputs heads)))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v5 4/8] gnu: Add heads-qemu-linuxboot.
  2020-05-02 17:11       ` [bug#37466] [WIP v5 0/8] Add heads Danny Milosavljevic
                           ` (2 preceding siblings ...)
  2020-05-02 17:11         ` [bug#37466] [WIP v5 3/8] gnu: Add heads-linuxboot Danny Milosavljevic
@ 2020-05-02 17:11         ` Danny Milosavljevic
  2020-05-02 17:11         ` [bug#37466] [WIP v5 5/8] gnu: Add heads-coreboot Danny Milosavljevic
                           ` (4 subsequent siblings)
  8 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-02 17:11 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
 gnu/packages/heads.scm | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 48030f8ed5..78c5aa23f9 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -611,3 +611,12 @@ servers.")
              (sha256
               (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
        ,@(package-native-inputs heads)))))
+
+(define-public heads-qemu-linuxboot
+  (package
+    (inherit heads-linuxboot)
+    (name "heads-qemu-linuxboot")
+    (arguments
+     `(#:make-flags
+       '("BOARD=qemu-linuxboot")
+       ,@(package-arguments heads-linuxboot)))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v5 5/8] gnu: Add heads-coreboot.
  2020-05-02 17:11       ` [bug#37466] [WIP v5 0/8] Add heads Danny Milosavljevic
                           ` (3 preceding siblings ...)
  2020-05-02 17:11         ` [bug#37466] [WIP v5 4/8] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
@ 2020-05-02 17:11         ` Danny Milosavljevic
  2020-05-02 17:11         ` [bug#37466] [WIP v5 6/8] gnu: Add heads-qemu-coreboot Danny Milosavljevic
                           ` (3 subsequent siblings)
  8 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-02 17:11 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-coreboot): New variable.
---
 gnu/packages/heads.scm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 78c5aa23f9..f6482d5f5a 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -620,3 +620,19 @@ servers.")
      `(#:make-flags
        '("BOARD=qemu-linuxboot")
        ,@(package-arguments heads-linuxboot)))))
+
+(define heads-coreboot
+  (package
+    (inherit heads)
+    (name "heads-coreboot")
+    (arguments
+     (substitute-keyword-arguments (package-arguments heads)
+      ((#:phases phases)
+       `(modify-phases ,phases
+          (add-before 'unpack-heads-packages 'unpack-coreboot
+            (lambda* (#:key inputs #:allow-other-keys)
+               (mkdir-p "build")
+               #t))))))
+    (native-inputs
+     `(("file" ,file)
+       ,@(package-native-inputs heads)))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v5 6/8] gnu: Add heads-qemu-coreboot.
  2020-05-02 17:11       ` [bug#37466] [WIP v5 0/8] Add heads Danny Milosavljevic
                           ` (4 preceding siblings ...)
  2020-05-02 17:11         ` [bug#37466] [WIP v5 5/8] gnu: Add heads-coreboot Danny Milosavljevic
@ 2020-05-02 17:11         ` Danny Milosavljevic
  2020-05-02 17:11         ` [bug#37466] [WIP v5 7/8] gnu: Add heads-kgpe-d16 Danny Milosavljevic
                           ` (2 subsequent siblings)
  8 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-02 17:11 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-qemu-coreboot): New variable.
---
 gnu/packages/heads.scm | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index f6482d5f5a..4e3d2ba216 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -636,3 +636,12 @@ servers.")
     (native-inputs
      `(("file" ,file)
        ,@(package-native-inputs heads)))))
+
+(define-public heads-qemu-coreboot
+  (package
+    (inherit heads-coreboot)
+    (name "heads-qemu-coreboot")
+    (arguments
+     `(#:make-flags
+       '("BOARD=qemu-coreboot")
+       ,@(package-arguments heads-coreboot)))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v5 7/8] gnu: Add heads-kgpe-d16.
  2020-05-02 17:11       ` [bug#37466] [WIP v5 0/8] Add heads Danny Milosavljevic
                           ` (5 preceding siblings ...)
  2020-05-02 17:11         ` [bug#37466] [WIP v5 6/8] gnu: Add heads-qemu-coreboot Danny Milosavljevic
@ 2020-05-02 17:11         ` Danny Milosavljevic
  2020-05-02 17:11         ` [bug#37466] [WIP v5 8/8] gnu: Add heads-diesel Danny Milosavljevic
  2020-05-24 22:32         ` [bug#37466] [WIP v6 0/4] Add heads and co Danny Milosavljevic
  8 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-02 17:11 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-kgpe-d16): New variable.
---
 gnu/packages/heads.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 4e3d2ba216..e42dc66c6c 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -645,3 +645,25 @@ servers.")
      `(#:make-flags
        '("BOARD=qemu-coreboot")
        ,@(package-arguments heads-coreboot)))))
+
+(define-public heads-kgpe-d16
+  (package
+    (inherit heads-coreboot)
+    (name "heads-kgpe-d16")
+    (source
+     (origin
+      (inherit (package-source heads-coreboot))
+      (patches (search-patches "heads-make-environment.patch"
+                               "heads-kgpe-d16-nonalignment.patch"))))
+    (native-inputs
+     (alist-replace "gnupg"
+       (list (origin
+         (method url-fetch)
+         (uri "https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-1.4.21.tar.bz2")
+         (sha256
+          (base32 "0xi2mshq8f6zbarb5f61c9w2qzwrdbjm4q8fqsrwlzc51h8a6ivb"))))
+      (package-native-inputs heads-coreboot)))
+    (arguments
+     `(#:make-flags
+       '("BOARD=kgpe-d16")
+       ,@(package-arguments heads-coreboot)))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v5 8/8] gnu: Add heads-diesel.
  2020-05-02 17:11       ` [bug#37466] [WIP v5 0/8] Add heads Danny Milosavljevic
                           ` (6 preceding siblings ...)
  2020-05-02 17:11         ` [bug#37466] [WIP v5 7/8] gnu: Add heads-kgpe-d16 Danny Milosavljevic
@ 2020-05-02 17:11         ` Danny Milosavljevic
  2020-05-24 22:32         ` [bug#37466] [WIP v6 0/4] Add heads and co Danny Milosavljevic
  8 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-02 17:11 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-diesel): New variable.
---
 gnu/packages/heads.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index e42dc66c6c..10932967b5 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -667,3 +667,20 @@ servers.")
      `(#:make-flags
        '("BOARD=kgpe-d16")
        ,@(package-arguments heads-coreboot)))))
+
+(define-public heads-diesel
+  (package
+    (inherit heads-coreboot)
+    (name "heads-diesel")
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-extra-fv
+           (lambda _
+             (substitute* "edk2/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c"
+              (("ProduceFVBProtocolOnBuffer.*")
+               "\n"))
+             #t)))
+       #:make-flags
+       '("BOARD=diesel")
+       ,@(package-arguments heads-coreboot)))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v6 0/4] Add heads and co.
  2020-05-02 17:11       ` [bug#37466] [WIP v5 0/8] Add heads Danny Milosavljevic
                           ` (7 preceding siblings ...)
  2020-05-02 17:11         ` [bug#37466] [WIP v5 8/8] gnu: Add heads-diesel Danny Milosavljevic
@ 2020-05-24 22:32         ` Danny Milosavljevic
  2020-05-24 22:32           ` [bug#37466] [WIP v6 1/4] gnu: Add elfutils@0.174 Danny Milosavljevic
                             ` (3 more replies)
  8 siblings, 4 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-24 22:32 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

Danny Milosavljevic (4):
  gnu: Add elfutils@0.174.
  gnu: Add heads.
  gnu: Add heads-linuxboot.
  gnu: Add heads-qemu-linuxboot.

 gnu/packages/heads.scm | 493 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 493 insertions(+)





^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v6 1/4] gnu: Add elfutils@0.174.
  2020-05-24 22:32         ` [bug#37466] [WIP v6 0/4] Add heads and co Danny Milosavljevic
@ 2020-05-24 22:32           ` Danny Milosavljevic
  2020-05-24 22:32           ` [bug#37466] [WIP v6 2/4] gnu: Add heads Danny Milosavljevic
                             ` (2 subsequent siblings)
  3 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-24 22:32 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (elfutils-0.174): New variable.
---
 gnu/packages/heads.scm | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index b28433431c..86ab487b0f 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -161,3 +161,16 @@ done
     (synopsis "Musl-cross gcc 5 toolchain")
     (description "Musl-cross toolchain: binutils, gcc 5 and musl.")
     (license license:isc))))
+
+(define elfutils-0.174
+  (package
+    (inherit elfutils)
+    (version "0.174")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://sourceware.org/elfutils/ftp/"
+                                  version "/elfutils-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "12nhr8zrw4sjzrvpf38vl55bq5nm05qkd7nq76as443f0xq7xwnd"))
+              (patches (search-patches "elfutils-tests-ptrace.patch"))))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v6 2/4] gnu: Add heads.
  2020-05-24 22:32         ` [bug#37466] [WIP v6 0/4] Add heads and co Danny Milosavljevic
  2020-05-24 22:32           ` [bug#37466] [WIP v6 1/4] gnu: Add elfutils@0.174 Danny Milosavljevic
@ 2020-05-24 22:32           ` Danny Milosavljevic
  2020-05-24 22:32           ` [bug#37466] [WIP v6 3/4] gnu: Add heads-linuxboot Danny Milosavljevic
  2020-05-24 22:32           ` [bug#37466] [WIP v6 4/4] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
  3 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-24 22:32 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads): New variable.
---
 gnu/packages/heads.scm | 425 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 425 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 86ab487b0f..87ac871080 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -174,3 +174,428 @@ 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"))))
+       ;; 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-"))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; 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 "CPATH"
+                         (string-join
+                          (delete (string-append libc "/include")
+                                  (string-split (getenv "CPATH")
+                                                #\:))
+                          ":"))
+                 (format #t
+                         "environment variable `CPATH' changed to ~a~%"
+                           (getenv "CPATH")))
+
+             ;; 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"))
+             (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) && 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);' \"$$$$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 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;^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);' \"$$$$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+))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v6 3/4] gnu: Add heads-linuxboot.
  2020-05-24 22:32         ` [bug#37466] [WIP v6 0/4] Add heads and co Danny Milosavljevic
  2020-05-24 22:32           ` [bug#37466] [WIP v6 1/4] gnu: Add elfutils@0.174 Danny Milosavljevic
  2020-05-24 22:32           ` [bug#37466] [WIP v6 2/4] gnu: Add heads Danny Milosavljevic
@ 2020-05-24 22:32           ` Danny Milosavljevic
  2020-05-24 22:32           ` [bug#37466] [WIP v6 4/4] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
  3 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-24 22:32 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
 gnu/packages/heads.scm | 46 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 87ac871080..083a649783 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -599,3 +599,49 @@ done
 payload to provide a secure, flexible boot environment for laptops and
 servers.")
     (license license:gpl2+))))
+
+(define heads-linuxboot
+  (package
+    (inherit heads)
+    (name "heads-linuxboot")
+    (arguments
+     (substitute-keyword-arguments (package-arguments heads)
+      ((#:phases phases)
+       `(modify-phases ,phases
+          (add-before 'unpack-heads-packages 'unpack-linuxboot
+            (lambda* (#:key inputs #:allow-other-keys)
+               (mkdir-p "build")
+               (copy-recursively (assoc-ref inputs "linuxboot") "build/linuxboot-git")
+               (copy-recursively (assoc-ref inputs "edk2") "build/linuxboot-git/edk2")
+               (invoke "chmod" "-R" "u+w" "build/linuxboot-git")
+               (chmod "build/linuxboot-git/Makefile" #o664)
+               (substitute* "build/linuxboot-git/dxe/Makefile"
+                (("/usr/bin/") ""))
+               #t))))))
+    (native-inputs
+     `(("edk2"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/linuxboot/edk2")
+                   (commit "UDK2018")
+                   (recursive? #t))) ; openssl
+             (file-name "edk2-checkout")
+             (sha256
+              (base32 "0crjx1hg1m5mir2qm96dbcc3glrnww3ni0bc9f370qmm337wzlhi"))))
+       ("libuuid" ,util-linux) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("nasm" ,nasm) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("python" ,python-2) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("acpica" ,acpica) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("file" ,file)
+       ("linuxboot"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/osresearch/linuxboot.git")
+                   (commit "b5376a441e8e85cbf722e943bb8294958e87c784")
+                   (recursive? #t)))
+             (file-name "linuxboot-checkout")
+             (sha256
+              (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
+       ,@(package-native-inputs heads)))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v6 4/4] gnu: Add heads-qemu-linuxboot.
  2020-05-24 22:32         ` [bug#37466] [WIP v6 0/4] Add heads and co Danny Milosavljevic
                             ` (2 preceding siblings ...)
  2020-05-24 22:32           ` [bug#37466] [WIP v6 3/4] gnu: Add heads-linuxboot Danny Milosavljevic
@ 2020-05-24 22:32           ` Danny Milosavljevic
  3 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-05-24 22:32 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
 gnu/packages/heads.scm | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 083a649783..b7e1969947 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -645,3 +645,12 @@ servers.")
              (sha256
               (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
        ,@(package-native-inputs heads)))))
+
+(define-public heads-qemu-linuxboot
+  (package
+    (inherit heads-linuxboot)
+    (name "heads-qemu-linuxboot")
+    (arguments
+     (substitute-keyword-arguments (package-arguments heads-linuxboot)
+      ((#:make-flags make-flags '())
+       `(cons "BOARD=qemu-linuxboot" ,make-flags))))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v7 0/4] Add heads and co.
  2019-09-20  1:02 [bug#37466] [PATCH 0/4] Add heads Danny Milosavljevic
  2019-09-20  7:31 ` [bug#37466] [PATCH 1/4] gnu: Add musl-cross Danny Milosavljevic
  2019-09-24 14:01 ` [bug#37466] [WIP v2 0/7] Add heads Danny Milosavljevic
@ 2020-06-01 10:54 ` Danny Milosavljevic
  2020-06-01 10:54   ` [bug#37466] [WIP v7 1/4] gnu: Add elfutils@0.174 Danny Milosavljevic
                     ` (5 more replies)
  2 siblings, 6 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-06-01 10:54 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

Danny Milosavljevic (4):
  gnu: Add elfutils@0.174.
  gnu: Add heads.
  gnu: Add heads-linuxboot.
  gnu: Add heads-qemu-linuxboot.

 gnu/packages/heads.scm | 507 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 506 insertions(+), 1 deletion(-)





^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v7 1/4] gnu: Add elfutils@0.174.
  2020-06-01 10:54 ` [bug#37466] [WIP v7 0/4] Add heads and co Danny Milosavljevic
@ 2020-06-01 10:54   ` Danny Milosavljevic
  2020-06-01 10:54   ` [bug#37466] [WIP v7 2/4] gnu: Add heads Danny Milosavljevic
                     ` (4 subsequent siblings)
  5 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-06-01 10:54 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (elfutils-0.174): New variable.
---
 gnu/packages/heads.scm | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index b28433431c..86ab487b0f 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -161,3 +161,16 @@ done
     (synopsis "Musl-cross gcc 5 toolchain")
     (description "Musl-cross toolchain: binutils, gcc 5 and musl.")
     (license license:isc))))
+
+(define elfutils-0.174
+  (package
+    (inherit elfutils)
+    (version "0.174")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://sourceware.org/elfutils/ftp/"
+                                  version "/elfutils-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "12nhr8zrw4sjzrvpf38vl55bq5nm05qkd7nq76as443f0xq7xwnd"))
+              (patches (search-patches "elfutils-tests-ptrace.patch"))))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v7 2/4] gnu: Add heads.
  2020-06-01 10:54 ` [bug#37466] [WIP v7 0/4] Add heads and co Danny Milosavljevic
  2020-06-01 10:54   ` [bug#37466] [WIP v7 1/4] gnu: Add elfutils@0.174 Danny Milosavljevic
@ 2020-06-01 10:54   ` Danny Milosavljevic
  2020-06-01 10:54   ` [bug#37466] [WIP v7 3/4] gnu: Add heads-linuxboot Danny Milosavljevic
                     ` (3 subsequent siblings)
  5 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-06-01 10:54 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads): New variable.
---
 gnu/packages/heads.scm | 439 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 438 insertions(+), 1 deletion(-)

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+))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v7 3/4] gnu: Add heads-linuxboot.
  2020-06-01 10:54 ` [bug#37466] [WIP v7 0/4] Add heads and co Danny Milosavljevic
  2020-06-01 10:54   ` [bug#37466] [WIP v7 1/4] gnu: Add elfutils@0.174 Danny Milosavljevic
  2020-06-01 10:54   ` [bug#37466] [WIP v7 2/4] gnu: Add heads Danny Milosavljevic
@ 2020-06-01 10:54   ` Danny Milosavljevic
  2020-06-01 10:54   ` [bug#37466] [WIP v7 4/4] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
                     ` (2 subsequent siblings)
  5 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-06-01 10:54 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
 gnu/packages/heads.scm | 46 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 8182b2ecd4..e0e9708be6 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -611,3 +611,49 @@ done
 payload to provide a secure, flexible boot environment for laptops and
 servers.")
     (license license:gpl2+))))
+
+(define heads-linuxboot
+  (package
+    (inherit heads)
+    (name "heads-linuxboot")
+    (arguments
+     (substitute-keyword-arguments (package-arguments heads)
+      ((#:phases phases)
+       `(modify-phases ,phases
+          (add-before 'unpack-heads-packages 'unpack-linuxboot
+            (lambda* (#:key inputs #:allow-other-keys)
+               (mkdir-p "build")
+               (copy-recursively (assoc-ref inputs "linuxboot") "build/linuxboot-git")
+               (copy-recursively (assoc-ref inputs "edk2") "build/linuxboot-git/edk2")
+               (invoke "chmod" "-R" "u+w" "build/linuxboot-git")
+               (chmod "build/linuxboot-git/Makefile" #o664)
+               (substitute* "build/linuxboot-git/dxe/Makefile"
+                (("/usr/bin/") ""))
+               #t))))))
+    (native-inputs
+     `(("edk2"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/linuxboot/edk2")
+                   (commit "UDK2018")
+                   (recursive? #t))) ; openssl
+             (file-name "edk2-checkout")
+             (sha256
+              (base32 "0crjx1hg1m5mir2qm96dbcc3glrnww3ni0bc9f370qmm337wzlhi"))))
+       ("libuuid" ,util-linux) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("nasm" ,nasm) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("python" ,python-2) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("acpica" ,acpica) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("file" ,file)
+       ("linuxboot"
+        ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/osresearch/linuxboot.git")
+                   (commit "b5376a441e8e85cbf722e943bb8294958e87c784")
+                   (recursive? #t)))
+             (file-name "linuxboot-checkout")
+             (sha256
+              (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
+       ,@(package-native-inputs heads)))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v7 4/4] gnu: Add heads-qemu-linuxboot.
  2020-06-01 10:54 ` [bug#37466] [WIP v7 0/4] Add heads and co Danny Milosavljevic
                     ` (2 preceding siblings ...)
  2020-06-01 10:54   ` [bug#37466] [WIP v7 3/4] gnu: Add heads-linuxboot Danny Milosavljevic
@ 2020-06-01 10:54   ` Danny Milosavljevic
  2020-06-01 11:08   ` [bug#37466] [WIP v7 0/4] Add heads and co Danny Milosavljevic
  2020-06-02  9:14   ` Efraim Flashner
  5 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-06-01 10:54 UTC (permalink / raw)
  To: 37466; +Cc: Danny Milosavljevic

* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
 gnu/packages/heads.scm | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index e0e9708be6..1153c6e24d 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -657,3 +657,12 @@ servers.")
              (sha256
               (base32 "1bdj4m9dvih9fhp5q5c6cp5sphzbpag5gp4bz1p8g9lqi49lb7av"))))
        ,@(package-native-inputs heads)))))
+
+(define-public heads-qemu-linuxboot
+  (package
+    (inherit heads-linuxboot)
+    (name "heads-qemu-linuxboot")
+    (arguments
+     (substitute-keyword-arguments (package-arguments heads-linuxboot)
+      ((#:make-flags make-flags '())
+       `(cons "BOARD=qemu-linuxboot" ,make-flags))))))




^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v7 0/4] Add heads and co.
  2020-06-01 10:54 ` [bug#37466] [WIP v7 0/4] Add heads and co Danny Milosavljevic
                     ` (3 preceding siblings ...)
  2020-06-01 10:54   ` [bug#37466] [WIP v7 4/4] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
@ 2020-06-01 11:08   ` Danny Milosavljevic
  2020-06-02  9:14   ` Efraim Flashner
  5 siblings, 0 replies; 58+ messages in thread
From: Danny Milosavljevic @ 2020-06-01 11:08 UTC (permalink / raw)
  To: 37466

[-- Attachment #1: Type: text/plain, Size: 1434 bytes --]

Extra fixes, will be in WIP v8:

diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm
index 1153c6e24d..25940b8f38 100644
--- a/gnu/packages/heads.scm
+++ b/gnu/packages/heads.scm
@@ -625,6 +625,9 @@ servers.")
                (mkdir-p "build")
                (copy-recursively (assoc-ref inputs "linuxboot") "build/linuxboot-git")
                (copy-recursively (assoc-ref inputs "edk2") "build/linuxboot-git/edk2")
+               ;; File is used by Linuxboot (they do an existence check).
+               (call-with-output-file "build/linuxboot-git/edk2/.git"
+                 (const #t))
                (invoke "chmod" "-R" "u+w" "build/linuxboot-git")
                (chmod "build/linuxboot-git/Makefile" #o664)
                (substitute* "build/linuxboot-git/dxe/Makefile"
@@ -641,7 +644,7 @@ servers.")
              (file-name "edk2-checkout")
              (sha256
               (base32 "0crjx1hg1m5mir2qm96dbcc3glrnww3ni0bc9f370qmm337wzlhi"))))
-       ("libuuid" ,util-linux) ; TODO: Move to heads' internal dependencies (for edk2).
+       ("libuuid" ,util-linux "lib") ; TODO: Move to heads' internal dependencies (for edk2).
        ("nasm" ,nasm) ; TODO: Move to heads' internal dependencies (for edk2).
        ("python" ,python-2) ; TODO: Move to heads' internal dependencies (for edk2).
        ("acpica" ,acpica) ; TODO: Move to heads' internal dependencies (for edk2).


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 58+ messages in thread

* [bug#37466] [WIP v7 0/4] Add heads and co.
  2020-06-01 10:54 ` [bug#37466] [WIP v7 0/4] Add heads and co Danny Milosavljevic
                     ` (4 preceding siblings ...)
  2020-06-01 11:08   ` [bug#37466] [WIP v7 0/4] Add heads and co Danny Milosavljevic
@ 2020-06-02  9:14   ` Efraim Flashner
  5 siblings, 0 replies; 58+ messages in thread
From: Efraim Flashner @ 2020-06-02  9:14 UTC (permalink / raw)
  To: Danny Milosavljevic; +Cc: 37466

[-- Attachment #1: Type: text/plain, Size: 626 bytes --]

On Mon, Jun 01, 2020 at 12:54:37PM +0200, Danny Milosavljevic wrote:
> Danny Milosavljevic (4):
>   gnu: Add elfutils@0.174.
>   gnu: Add heads.
>   gnu: Add heads-linuxboot.
>   gnu: Add heads-qemu-linuxboot.
> 
>  gnu/packages/heads.scm | 507 ++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 506 insertions(+), 1 deletion(-)

Make sure to set the file-name on the source-download inputs.

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 58+ messages in thread

end of thread, back to index

Thread overview: 58+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-20  1:02 [bug#37466] [PATCH 0/4] Add heads Danny Milosavljevic
2019-09-20  7:31 ` [bug#37466] [PATCH 1/4] gnu: Add musl-cross Danny Milosavljevic
2019-09-20  7:31   ` [bug#37466] [PATCH 2/4] gnu: Add heads Danny Milosavljevic
2019-09-20 12:05     ` Björn Höfling
2019-09-20 13:49       ` Danny Milosavljevic
2019-09-20 14:45         ` Julien Lepiller
2019-09-24 14:40         ` Danny Milosavljevic
2019-09-24 14:41           ` Danny Milosavljevic
2019-09-25  0:24             ` Danny Milosavljevic
2019-09-20  7:31   ` [bug#37466] [PATCH 3/4] gnu: Add heads-linuxboot Danny Milosavljevic
2019-09-20  7:31   ` [bug#37466] [PATCH 4/4] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
2019-09-24 14:01 ` [bug#37466] [WIP v2 0/7] Add heads Danny Milosavljevic
2019-09-24 14:01   ` [bug#37466] [WIP v2 1/7] gnu: Add musl-cross Danny Milosavljevic
2019-09-24 14:01   ` [bug#37466] [WIP v2 2/7] gnu: Add heads Danny Milosavljevic
2019-09-24 14:01   ` [bug#37466] [WIP v2 3/7] gnu: Add heads-linuxboot Danny Milosavljevic
2019-09-24 14:01   ` [bug#37466] [WIP v2 4/7] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
2019-09-24 14:01   ` [bug#37466] [WIP v2 5/7] gnu: Add heads-coreboot Danny Milosavljevic
2019-09-24 14:01   ` [bug#37466] [WIP v2 6/7] gnu: Add heads-qemu-coreboot Danny Milosavljevic
2019-09-24 14:01   ` [bug#37466] [WIP v2 7/7] gnu: Add heads-kgpe-d16 Danny Milosavljevic
2019-09-29 11:07   ` [bug#37466] [WIP v3 0/7] Add heads Danny Milosavljevic
2019-09-29 11:07     ` [bug#37466] [WIP v3 1/7] gnu: Add musl-cross Danny Milosavljevic
2019-09-29 11:07     ` [bug#37466] [WIP v3 2/7] gnu: Add heads Danny Milosavljevic
2019-09-29 11:07     ` [bug#37466] [WIP v3 3/7] gnu: Add heads-linuxboot Danny Milosavljevic
2019-09-29 11:07     ` [bug#37466] [WIP v3 4/7] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
2019-09-29 11:07     ` [bug#37466] [WIP v3 5/7] gnu: Add heads-coreboot Danny Milosavljevic
2019-09-29 11:07     ` [bug#37466] [WIP v3 6/7] gnu: Add heads-qemu-coreboot Danny Milosavljevic
2019-09-29 11:07     ` [bug#37466] [WIP v3 7/7] gnu: Add heads-kgpe-d16 Danny Milosavljevic
2019-10-02 21:15     ` [bug#37466] [WIP v4 0/7] Add heads Danny Milosavljevic
2019-10-02 21:15       ` [bug#37466] [WIP v4 1/7] gnu: Add musl-cross Danny Milosavljevic
2019-10-07 13:50         ` Danny Milosavljevic
2020-05-02 15:52           ` Danny Milosavljevic
2019-10-02 21:15       ` [bug#37466] [WIP v4 2/7] gnu: Add heads Danny Milosavljevic
2019-10-02 21:15       ` [bug#37466] [WIP v4 3/7] gnu: Add heads-linuxboot Danny Milosavljevic
2019-10-02 21:15       ` [bug#37466] [WIP v4 4/7] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
2019-10-02 21:16       ` [bug#37466] [WIP v4 5/7] gnu: Add heads-coreboot Danny Milosavljevic
2019-10-02 21:16       ` [bug#37466] [WIP v4 6/7] gnu: Add heads-qemu-coreboot Danny Milosavljevic
2019-10-02 21:16       ` [bug#37466] [WIP v4 7/7] gnu: Add heads-kgpe-d16 Danny Milosavljevic
2020-05-02 17:11       ` [bug#37466] [WIP v5 0/8] Add heads Danny Milosavljevic
2020-05-02 17:11         ` [bug#37466] [WIP v5 1/8] gnu: Add elfutils@0.174 Danny Milosavljevic
2020-05-02 17:11         ` [bug#37466] [WIP v5 2/8] gnu: Add heads Danny Milosavljevic
2020-05-02 17:11         ` [bug#37466] [WIP v5 3/8] gnu: Add heads-linuxboot Danny Milosavljevic
2020-05-02 17:11         ` [bug#37466] [WIP v5 4/8] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
2020-05-02 17:11         ` [bug#37466] [WIP v5 5/8] gnu: Add heads-coreboot Danny Milosavljevic
2020-05-02 17:11         ` [bug#37466] [WIP v5 6/8] gnu: Add heads-qemu-coreboot Danny Milosavljevic
2020-05-02 17:11         ` [bug#37466] [WIP v5 7/8] gnu: Add heads-kgpe-d16 Danny Milosavljevic
2020-05-02 17:11         ` [bug#37466] [WIP v5 8/8] gnu: Add heads-diesel Danny Milosavljevic
2020-05-24 22:32         ` [bug#37466] [WIP v6 0/4] Add heads and co Danny Milosavljevic
2020-05-24 22:32           ` [bug#37466] [WIP v6 1/4] gnu: Add elfutils@0.174 Danny Milosavljevic
2020-05-24 22:32           ` [bug#37466] [WIP v6 2/4] gnu: Add heads Danny Milosavljevic
2020-05-24 22:32           ` [bug#37466] [WIP v6 3/4] gnu: Add heads-linuxboot Danny Milosavljevic
2020-05-24 22:32           ` [bug#37466] [WIP v6 4/4] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
2020-06-01 10:54 ` [bug#37466] [WIP v7 0/4] Add heads and co Danny Milosavljevic
2020-06-01 10:54   ` [bug#37466] [WIP v7 1/4] gnu: Add elfutils@0.174 Danny Milosavljevic
2020-06-01 10:54   ` [bug#37466] [WIP v7 2/4] gnu: Add heads Danny Milosavljevic
2020-06-01 10:54   ` [bug#37466] [WIP v7 3/4] gnu: Add heads-linuxboot Danny Milosavljevic
2020-06-01 10:54   ` [bug#37466] [WIP v7 4/4] gnu: Add heads-qemu-linuxboot Danny Milosavljevic
2020-06-01 11:08   ` [bug#37466] [WIP v7 0/4] Add heads and co Danny Milosavljevic
2020-06-02  9:14   ` Efraim Flashner

unofficial mirror of guix-patches@gnu.org 

Archives are clonable:
	git clone --mirror https://yhetil.org/guix-patches/1 guix-patches/git/1.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 guix-patches guix-patches/ https://yhetil.org/guix-patches \
		guix-patches@gnu.org
	public-inbox-index guix-patches

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://news.yhetil.org/yhetil.gnu.guix.patches


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git