[PATCH 0/4] Add heads.

  • Open
  • quality assurance status badge
Details
4 participants
  • Björn Höfling
  • Danny Milosavljevic
  • Efraim Flashner
  • Julien Lepiller
Owner
unassigned
Submitted by
Danny Milosavljevic
Severity
normal
D
D
Danny Milosavljevic wrote on 20 Sep 2019 03:02
(address . guix-patches@gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190920010248.28082-1-dannym@scratchpost.org
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
D
D
Danny Milosavljevic wrote on 20 Sep 2019 09:31
[PATCH 1/4] gnu: Add musl-cross.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190920073149.2933-1-dannym@scratchpost.org
* 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

Toggle diff (142 lines)
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))))
D
D
Danny Milosavljevic wrote on 20 Sep 2019 09:31
[PATCH 2/4] gnu: Add heads.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190920073149.2933-2-dannym@scratchpost.org
* gnu/packages/heads.scm (heads): New variable.
---
gnu/packages/heads.scm | 378 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 378 insertions(+)

Toggle diff (404 lines)
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 l
This message was truncated. Download the full message here.
D
D
Danny Milosavljevic wrote on 20 Sep 2019 09:31
[PATCH 3/4] gnu: Add heads-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190920073149.2933-3-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
gnu/packages/heads.scm | 48 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 47 insertions(+), 1 deletion(-)

Toggle diff (63 lines)
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)))))
D
D
Danny Milosavljevic wrote on 20 Sep 2019 09:31
[PATCH 4/4] gnu: Add heads-qemu-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190920073149.2933-4-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
gnu/packages/heads.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (17 lines)
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)))))
B
B
Björn Höfling wrote on 20 Sep 2019 14:05
Re: [bug#37466] [PATCH 2/4] gnu: Add heads.
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)(address . 37466@debbugs.gnu.org)
20190920140529.234c55ad@alma-ubu
Hi Danny,

no full review, just one remark:

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

Toggle quote (2 lines)
> * gnu/packages/heads.scm (heads): New variable.

[..]

Toggle quote (3 lines)
> + (native-inputs
> + `(("bash" ,bash)

[..]
Toggle quote (9 lines)
> + ("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
-----BEGIN PGP SIGNATURE-----

iF0EARECAB0WIQQiGUP0np8nb5SZM4K/KGy2WT5f/QUCXYTAiQAKCRC/KGy2WT5f
/Q9zAJ9yohTt3/KBrnSmw3y7mB9kSlZqIgCgs0HqbtaWyb1axffFifsqbcbtq5U=
=t6F7
-----END PGP SIGNATURE-----


D
D
Danny Milosavljevic wrote on 20 Sep 2019 15:49
(name . Björn Höfling)(address . bjoern.hoefling@bjoernhoefling.de)(address . 37466@debbugs.gnu.org)
20190920154954.35713605@scratchpost.org
Hi Björn,

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

Toggle quote (2 lines)
> That's the non-free kernel, right?

Right.

Toggle quote (2 lines)
> 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).

Toggle quote (8 lines)
> 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.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl2E2QIACgkQ5xo1VCww
uqVHzAf/RqxETW1BnnaY0oqKiqDlOsU8lMhebn4DblVj0wWQc/Frk8V4X8ysD5g9
BPN7SORWfm5DSY9Bp0lEuj5pY93yCHNaIWSduGLLZ7ypQYz/9jAgM4agDY5B2AW+
V00Byfas5tRpvosxEMjOTDaM4hh0Lr8+llKnJCI6vJjdI3DXClpwfRQ7xmNzAadU
w8QEBj2iZC2NWkf56dv4sm23M8weHZMjhXOBIKfmG/P72Tr4libp8nhCe62En6if
02h9jEkdMlVcTQziQ6oxhEqoRDLQLxDGkUh+zdd+KcLPhHULrE230hRE1DZhpAqh
75lahkQNWeiEHz8upkVXgQvQcBnN0Q==
=VP1E
-----END PGP SIGNATURE-----


J
J
Julien Lepiller wrote on 20 Sep 2019 16:45
(address . 37466@debbugs.gnu.org)
A5384874-68C4-4127-9EB1-BA83BED549A7@lepiller.eu
Le 20 septembre 2019 15:49:54 GMT+02:00, Danny Milosavljevic <dannym@scratchpost.org> a écrit :
Toggle quote (41 lines)
>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?
D
D
Danny Milosavljevic wrote on 24 Sep 2019 16:40
20190924164018.082a3733@scratchpost.org
Toggle quote (3 lines)
> 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...).
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl2KKtIACgkQ5xo1VCww
uqVgeQf7BJ3k27yENkpApuhPJXw6EM1fx+PZHwkmz6FW5EawyrChsbnnCJ+uZfVg
RuBWIImNNVdS1y0d8Sq9Bv/QiaJjJQZySl8fXIoQqFl0XhmZ6fK3G94qaDIEG4/9
AzhnQrOxEzPifOToS8JrB8qQfHcqrjUuSwizWbRHmdB0A4YAn/rktnsAtbFZVKpe
cMh5/RdkXfJuQ/IO5FvpAy5nuRi/uRnfMzA/j0VSvUgHgDsc6k6Ll+WgaTTdZJ6m
LKEvlVrWYPMDo/RX1eA3qGboqFEqQirYv1CN0CEvIOUEaaFtISrz8aXNVu6Yn4IN
LkITGls72ZNDcbyxhTji+6h6FRhyyA==
=hw/n
-----END PGP SIGNATURE-----


D
D
Danny Milosavljevic wrote on 24 Sep 2019 16:01
[WIP v2 0/7] Add heads.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190924140157.23564-1-dannym@scratchpost.org
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
D
D
Danny Milosavljevic wrote on 24 Sep 2019 16:01
[WIP v2 1/7] gnu: Add musl-cross.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190924140157.23564-2-dannym@scratchpost.org
* 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

Toggle diff (142 lines)
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))))
D
D
Danny Milosavljevic wrote on 24 Sep 2019 16:01
[WIP v2 3/7] gnu: Add heads-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190924140157.23564-4-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
gnu/packages/heads.scm | 46 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)

Toggle diff (54 lines)
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)))))
D
D
Danny Milosavljevic wrote on 24 Sep 2019 16:01
[WIP v2 2/7] gnu: Add heads.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190924140157.23564-3-dannym@scratchpost.org
* 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

Toggle diff (382 lines)
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 inpu
This message was truncated. Download the full message here.
D
D
Danny Milosavljevic wrote on 24 Sep 2019 16:01
[WIP v2 4/7] gnu: Add heads-qemu-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190924140157.23564-5-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
gnu/packages/heads.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (17 lines)
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)))))
D
D
Danny Milosavljevic wrote on 24 Sep 2019 16:01
[WIP v2 6/7] gnu: Add heads-qemu-coreboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190924140157.23564-7-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-qemu-coreboot): New variable.
---
gnu/packages/heads.scm | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

Toggle diff (27 lines)
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)))))
D
D
Danny Milosavljevic wrote on 24 Sep 2019 16:01
[WIP v2 5/7] gnu: Add heads-coreboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190924140157.23564-6-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-coreboot): New variable.
---
gnu/packages/heads.scm | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

Toggle diff (24 lines)
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)))))
D
D
Danny Milosavljevic wrote on 24 Sep 2019 16:01
[WIP v2 7/7] gnu: Add heads-kgpe-d16.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190924140157.23564-8-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-kgpe-d16): New variable.
---
gnu/packages/heads.scm | 17 +++++++++++++++++
1 file changed, 17 insertions(+)

Toggle diff (25 lines)
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)))))
D
D
Danny Milosavljevic wrote on 24 Sep 2019 16:41
Re: [bug#37466] [PATCH 2/4] gnu: Add heads.
20190924164139.1d827100@scratchpost.org
To use our linux-libre (with the mentioned problems):

Toggle diff (52 lines)
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 "
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl2KKyMACgkQ5xo1VCww
uqV4wQgAouQa5UpEq1aFDYw+R7xvcErVqcss/BSwi0AJKEYXNsOvGxBE1rzfR2Zt
mWxHvaxf7oIp3eigZSAcBBaCNBZkcAENi+CTITTlv8y2OPFVLN7ztwOr4XOcTMTM
sAcv3wsdnjptKnm4R+50w+PudA4WEFuXj0XlOYlKtQqHDfs+ZsImqNd15elaLgRH
H0SC5ub7fGs5IDbfw4PyMnDzBjrZZLi7yEmV06j8J8JAB1/NpknrVDljVaaxoLtb
fNxKjMp5aL9Zt9f5objk7y32Ng8znv1stB+0DvmIZsXXeG8LJAVajOuZblvw8gpI
GPhN8opnhYXwWaPJNR6EZpiAZMFutg==
=9stl
-----END PGP SIGNATURE-----


D
D
Danny Milosavljevic wrote on 25 Sep 2019 02:24
20190925022439.3c989874@scratchpost.org
Better version:

Toggle diff (94 lines)
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)))
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl2Ks8cACgkQ5xo1VCww
uqVYtQgAl3LkYQumV3//kaKRpVS309m4k/vZBV1EcB/4+/XRqP9991CDR07YTi9x
/LbKNB15/xuwy/XOuAppl8VAHabvTMZafl7F1SzCFHcQka7QF7jF0/MuSkW5bVd0
ihyeppT3TOv79KgRXJNZtlhqbuWNodxDIkbvrZThkBVqFLSmict2wSwsHuIAGCpY
HAb/3PIUHh5tZVeI5oWX/cIAvK/DFRJV+R1kdpCA4+7TxgezZ5W9XHRZSArmZIgc
60vw4mmgU5T64pt8H0YQhAlCG9zRmgEhLgk18gyd/N+5NysOQdcs7F4x/I2yHxIE
aYuFTQhK5kzFm6S0lHiuJpnj8ZPwqg==
=sl6l
-----END PGP SIGNATURE-----


D
D
Danny Milosavljevic wrote on 29 Sep 2019 13:07
[WIP v3 0/7] Add heads.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190929110750.21214-1-dannym@scratchpost.org
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
D
D
Danny Milosavljevic wrote on 29 Sep 2019 13:07
[WIP v3 1/7] gnu: Add musl-cross.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190929110750.21214-2-dannym@scratchpost.org
* 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

Toggle diff (142 lines)
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))))
D
D
Danny Milosavljevic wrote on 29 Sep 2019 13:07
[WIP v3 4/7] gnu: Add heads-qemu-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190929110750.21214-5-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
gnu/packages/heads.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (17 lines)
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)))))
D
D
Danny Milosavljevic wrote on 29 Sep 2019 13:07
[WIP v3 5/7] gnu: Add heads-coreboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190929110750.21214-6-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-coreboot): New variable.
---
gnu/packages/heads.scm | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

Toggle diff (24 lines)
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)))))
D
D
Danny Milosavljevic wrote on 29 Sep 2019 13:07
[WIP v3 6/7] gnu: Add heads-qemu-coreboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190929110750.21214-7-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-qemu-coreboot): New variable.
---
gnu/packages/heads.scm | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

Toggle diff (27 lines)
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)))))
D
D
Danny Milosavljevic wrote on 29 Sep 2019 13:07
[WIP v3 3/7] gnu: Add heads-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190929110750.21214-4-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
gnu/packages/heads.scm | 46 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)

Toggle diff (54 lines)
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)))))
D
D
Danny Milosavljevic wrote on 29 Sep 2019 13:07
[WIP v3 7/7] gnu: Add heads-kgpe-d16.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190929110750.21214-8-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-kgpe-d16): New variable.
---
gnu/packages/heads.scm | 17 +++++++++++++++++
1 file changed, 17 insertions(+)

Toggle diff (25 lines)
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)))))
D
D
Danny Milosavljevic wrote on 29 Sep 2019 13:07
[WIP v3 2/7] gnu: Add heads.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20190929110750.21214-3-dannym@scratchpost.org
* 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

Toggle diff (384 lines)
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 ba
This message was truncated. Download the full message here.
D
D
Danny Milosavljevic wrote on 2 Oct 2019 23:15
[WIP v4 0/7] Add heads.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191002211602.16635-1-dannym@scratchpost.org
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
D
D
Danny Milosavljevic wrote on 2 Oct 2019 23:15
[WIP v4 1/7] gnu: Add musl-cross.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191002211602.16635-2-dannym@scratchpost.org
* 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

Toggle diff (142 lines)
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))))
D
D
Danny Milosavljevic wrote on 2 Oct 2019 23:15
[WIP v4 3/7] gnu: Add heads-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191002211602.16635-4-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
gnu/packages/heads.scm | 46 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)

Toggle diff (54 lines)
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)))))
D
D
Danny Milosavljevic wrote on 2 Oct 2019 23:15
[WIP v4 4/7] gnu: Add heads-qemu-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191002211602.16635-5-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
gnu/packages/heads.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (17 lines)
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)))))
D
D
Danny Milosavljevic wrote on 2 Oct 2019 23:16
[WIP v4 6/7] gnu: Add heads-qemu-coreboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191002211602.16635-7-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-qemu-coreboot): New variable.
---
gnu/packages/heads.scm | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

Toggle diff (27 lines)
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)))))
D
D
Danny Milosavljevic wrote on 2 Oct 2019 23:16
[WIP v4 5/7] gnu: Add heads-coreboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191002211602.16635-6-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-coreboot): New variable.
---
gnu/packages/heads.scm | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

Toggle diff (24 lines)
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)))))
D
D
Danny Milosavljevic wrote on 2 Oct 2019 23:16
[WIP v4 7/7] gnu: Add heads-kgpe-d16.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191002211602.16635-8-dannym@scratchpost.org
* 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

Toggle diff (71 lines)
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)" \
D
D
Danny Milosavljevic wrote on 2 Oct 2019 23:15
[WIP v4 2/7] gnu: Add heads.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191002211602.16635-3-dannym@scratchpost.org
* 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

Toggle diff (384 lines)
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;
This message was truncated. Download the full message here.
D
D
Danny Milosavljevic wrote on 7 Oct 2019 15:50
Re: [WIP v4 1/7] gnu: Add musl-cross.
(address . 37466@debbugs.gnu.org)
20191007154955.4a338a13@scratchpost.org
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.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl2bQowACgkQ5xo1VCww
uqVY7wf/axArj1qs8iKPofT0lkaNoSOWH+ysrUJI4wlQUgnZJfuNR54pwcPYMwMI
baH+7zPi8d7YUxGV6f1sfsRYAIvPpkNYdyJp6QltTcz4cviObAQ9LUqA49FIY53T
3pVatsYWfU7uwUbPtUZkVXHNfGCxkjWjY662LAh3niy5JCgJdP86DovAQE6hr8fp
Y8ohtHnqD+7n+TAwf7+1emd6wptjr18eSNby7v5bzOEjK86/VNcYeipLwx8yKG8t
WMI/3Dvj4oJwHgQ+2d+rRfay1P/0l4T8iu6F6M2d4vWkop8EAALwdcfSH715ybZU
SoaySJo6Mpg5l4+AasRZYEEMbjAxKA==
=D+Ey
-----END PGP SIGNATURE-----


D
D
Danny Milosavljevic wrote on 2 May 2020 17:52
Re: [bug#37466] [WIP v4 1/7] gnu: Add musl-cross.
(address . 37466@debbugs.gnu.org)
20200502175218.0cbed37a@scratchpost.org
Pushed musl-cross to guix master as commit f7228e317703808a8a193f6db8a3cb6ba5380f2f.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl6tlzIACgkQ5xo1VCww
uqXonAf/SRdaDNkfuCXL5q65ocY1qe8Iazr9niskQ2IEBsR/AqZ4ASnxrvVh5T3h
Qy9IE8PifxiPcFkrIKqzuVp9taQZN9OrNLU0+SioLaPPQVI6hb+nDiaHJ5WEZHGJ
Flt5/e943e66Yi/GFjzGGCraHZW+AMsj7C3t35HDneyS9QoXy7pClE8JNYoFKObU
aWpW1Di3jV9mBPfAtuwwgO6ujhqjYibZKuZfBJBLvHgc8vwb0VMgRi0c0HQS1qW/
rrrbeLQy5DtIsfF/z30nwqs6mICiZxLWGwvCddWyKIqw431ePYlLKNEdgR//i8zV
PdYGV1sM4iS2eWqtwBYP5tubcxP6dw==
=wJWa
-----END PGP SIGNATURE-----


D
D
Danny Milosavljevic wrote on 2 May 2020 19:11
[WIP v5 1/8] gnu: Add elfutils@0.174.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200502171118.19989-2-dannym@scratchpost.org
* gnu/packages/heads.scm (elfutils-0.174): New variable.
---
gnu/packages/heads.scm | 13 +++++++++++++
1 file changed, 13 insertions(+)

Toggle diff (21 lines)
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"))))))
D
D
Danny Milosavljevic wrote on 2 May 2020 19:11
[WIP v5 0/8] Add heads.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200502171118.19989-1-dannym@scratchpost.org
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(+)
D
D
Danny Milosavljevic wrote on 2 May 2020 19:11
[WIP v5 3/8] gnu: Add heads-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200502171118.19989-4-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
gnu/packages/heads.scm | 46 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)

Toggle diff (54 lines)
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)))))
D
D
Danny Milosavljevic wrote on 2 May 2020 19:11
[WIP v5 4/8] gnu: Add heads-qemu-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200502171118.19989-5-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
gnu/packages/heads.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (17 lines)
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)))))
D
D
Danny Milosavljevic wrote on 2 May 2020 19:11
[WIP v5 5/8] gnu: Add heads-coreboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200502171118.19989-6-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-coreboot): New variable.
---
gnu/packages/heads.scm | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

Toggle diff (24 lines)
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)))))
D
D
Danny Milosavljevic wrote on 2 May 2020 19:11
[WIP v5 8/8] gnu: Add heads-diesel.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200502171118.19989-9-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-diesel): New variable.
---
gnu/packages/heads.scm | 17 +++++++++++++++++
1 file changed, 17 insertions(+)

Toggle diff (25 lines)
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)))))
D
D
Danny Milosavljevic wrote on 2 May 2020 19:11
[WIP v5 7/8] gnu: Add heads-kgpe-d16.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200502171118.19989-8-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-kgpe-d16): New variable.
---
gnu/packages/heads.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (30 lines)
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)))))
D
D
Danny Milosavljevic wrote on 2 May 2020 19:11
[WIP v5 2/8] gnu: Add heads.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200502171118.19989-3-dannym@scratchpost.org
* gnu/packages/heads.scm (heads): New variable.
---
gnu/packages/heads.scm | 391 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 391 insertions(+)

Toggle diff (369 lines)
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}/mov
This message was truncated. Download the full message here.
D
D
Danny Milosavljevic wrote on 2 May 2020 19:11
[WIP v5 6/8] gnu: Add heads-qemu-coreboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200502171118.19989-7-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-qemu-coreboot): New variable.
---
gnu/packages/heads.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (17 lines)
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)))))
D
D
Danny Milosavljevic wrote on 25 May 2020 00:32
[WIP v6 0/4] Add heads and co.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200524223210.10965-1-dannym@scratchpost.org
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(+)
D
D
Danny Milosavljevic wrote on 25 May 2020 00:32
[WIP v6 1/4] gnu: Add elfutils@0.174.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200524223210.10965-2-dannym@scratchpost.org
* gnu/packages/heads.scm (elfutils-0.174): New variable.
---
gnu/packages/heads.scm | 13 +++++++++++++
1 file changed, 13 insertions(+)

Toggle diff (21 lines)
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"))))))
D
D
Danny Milosavljevic wrote on 25 May 2020 00:32
[WIP v6 3/4] gnu: Add heads-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200524223210.10965-4-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
gnu/packages/heads.scm | 46 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)

Toggle diff (54 lines)
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)))))
D
D
Danny Milosavljevic wrote on 25 May 2020 00:32
[WIP v6 4/4] gnu: Add heads-qemu-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200524223210.10965-5-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
gnu/packages/heads.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (17 lines)
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))))))
D
D
Danny Milosavljevic wrote on 25 May 2020 00:32
[WIP v6 2/4] gnu: Add heads.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200524223210.10965-3-dannym@scratchpost.org
* gnu/packages/heads.scm (heads): New variable.
---
gnu/packages/heads.scm | 425 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 425 insertions(+)

Toggle diff (391 lines)
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 m
This message was truncated. Download the full message here.
D
D
Danny Milosavljevic wrote on 1 Jun 2020 12:54
[WIP v7 1/4] gnu: Add elfutils@0.174.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200601105441.13726-2-dannym@scratchpost.org
* gnu/packages/heads.scm (elfutils-0.174): New variable.
---
gnu/packages/heads.scm | 13 +++++++++++++
1 file changed, 13 insertions(+)

Toggle diff (21 lines)
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"))))))
D
D
Danny Milosavljevic wrote on 1 Jun 2020 12:54
[WIP v7 0/4] Add heads and co.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200601105441.13726-1-dannym@scratchpost.org
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(-)
D
D
Danny Milosavljevic wrote on 1 Jun 2020 12:54
[WIP v7 3/4] gnu: Add heads-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200601105441.13726-4-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-linuxboot): New variable.
---
gnu/packages/heads.scm | 46 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)

Toggle diff (54 lines)
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)))))
D
D
Danny Milosavljevic wrote on 1 Jun 2020 12:54
[WIP v7 4/4] gnu: Add heads-qemu-linuxboot.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200601105441.13726-5-dannym@scratchpost.org
* gnu/packages/heads.scm (heads-qemu-linuxboot): New variable.
---
gnu/packages/heads.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (17 lines)
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))))))
D
D
Danny Milosavljevic wrote on 1 Jun 2020 12:54
[WIP v7 2/4] gnu: Add heads.
(address . 37466@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200601105441.13726-3-dannym@scratchpost.org
* gnu/packages/heads.scm (heads): New variable.
---
gnu/packages/heads.scm | 439 ++++++++++++++++++++++++++++++++++++++++-
1 file changed, 438 insertions(+), 1 deletion(-)

Toggle diff (406 lines)
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=;'
This message was truncated. Download the full message here.
D
D
Danny Milosavljevic wrote on 1 Jun 2020 13:08
Re: [WIP v7 0/4] Add heads and co.
(address . 37466@debbugs.gnu.org)
20200601130826.5021913a@scratchpost.org
Extra fixes, will be in WIP v8:

Toggle diff (23 lines)
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).
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl7U4aoACgkQ5xo1VCww
uqU48Af/WjNNP2K/KZjYJrlALFxbKWKAbnDezZHonZUec/oXXaiSTZeAclbv9IWn
TW0n66ZTpbZ8849KiqPH+O4IAqvcp3JJc0O4hrOleJCgGIW9hI1/RnIkryMq8Y/j
UBXxuyNdwaExlrwFNjQoIsNNxq7nawcTM7Kwg2V5z5ezKcEqsoAeD/lGNkJoeUFz
mY8e6eKp4Kd3w5QGneHyXKzmOa/XSG8U/d6NQ4D7ED5DP4dU8lnE0eMWfzWEccxs
d2rd5hF6AodPfK8VWlka4XWa8QNFu1EOWoc5PgxKwmNhnQR5GNfQ01mX59K2q0Gq
jZFKmQYZ61Y6Jr718qSLie3nXFc2gw==
=YzDE
-----END PGP SIGNATURE-----


E
E
Efraim Flashner wrote on 2 Jun 2020 11:14
Re: [bug#37466] [WIP v7 0/4] Add heads and co.
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)(address . 37466@debbugs.gnu.org)
20200602091422.GI7397@E5400
On Mon, Jun 01, 2020 at 12:54:37PM +0200, Danny Milosavljevic wrote:
Toggle quote (9 lines)
> 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
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl7WGGsACgkQQarn3Mo9
g1HUww//RgwdBzl2OIeYCjoxXwvpoJ0E7cBa9Z7e+aLkpIfmb1Hrpc9YIeJxTqxb
8Vd/fUKG+bs42f6p69KVUOFi2ADiSV+uRiSzd/aOL+tLZTwo8/eKxOdOi5hWX/Yp
o8lquVSEkUHZjtxooOk3iR+7JJQDcFoQIKT13wv0oKTNmLYXKCdLQawf8ukcG8sk
2ZaptEaDWnVDUIKw4KXxrrf0RtQMBb+0WPZyymTWv7cl+tH2XWaYA6l8DFHyq+Xk
18ttRpageTTU7Iioq9B5N08JimtjTQKllCKTUACUHygdToH/fU1cR6HpCpvPYNn/
IiQe7N9al1MAWX0vAf77Z9dpa+Ugzg1qMnkzr1bAM8e5BeJphrULdF7NQZyCB6gQ
Zb6kU/8OVAEwzT6z9LuG5uL0QkNXMi23FEKyoy0gK+YKcPQVHeZbmwAgTRso1jOr
oW2U+PpzjSv1SyJ1e3c06Vn7EAYkcV+bAsRuFQS5rxRzKbG9b6RWzRbRB8XDGLzN
rnjB9RV/MKk2bzJMIERV5rMh72IChZi/QAz0NJma5M0ibKI7R+NYM4EBY/bvpMyL
9TWMcQyvzQg2SJsxFOvzamIzEc4bOgjuonWGbF3gNaMCogeFd92VjwG90U3EYp8e
uFEgPJmufVYsO1izXeUT25n8tZ8MKjhrV+trGYFMKRbVE6X9Who=
=NXk9
-----END PGP SIGNATURE-----


?