@@ -343,6 +343,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/unrtf.scm \
%D%/packages/upnp.scm \
%D%/packages/uucp.scm \
+ %D%/packages/u-boot.scm \
%D%/packages/valgrind.scm \
%D%/packages/version-control.scm \
%D%/packages/video.scm \
@@ -813,6 +814,9 @@ dist_patch_DATA = \
%D%/packages/patches/unzip-initialize-symlink-flag.patch \
%D%/packages/patches/unzip-overflow-long-fsize.patch \
%D%/packages/patches/unzip-remove-build-date.patch \
+ %D%/packages/patches/u-boot-device-tree-compiler-01_build_doc.patch \
+ %D%/packages/patches/u-boot-device-tree-compiler-23-libfdt-Add-missing-functions-to-shared-library.patch \
+ %D%/packages/patches/u-boot-device-tree-compiler-24_libfdt-Add-some-missing-symbols-to-version.lds.patch \
%D%/packages/patches/util-linux-tests.patch \
%D%/packages/patches/upower-builddir.patch \
%D%/packages/patches/valgrind-enable-arm.patch \
new file mode 100644
@@ -0,0 +1,21 @@
+Index: device-tree-compiler-1.0.0/Documentation/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ device-tree-compiler-1.0.0/Documentation/Makefile 2007-08-23 18:26:22.000000000 +0200
+@@ -0,0 +1,16 @@
++all: dtc-paper.ps dtc-paper.pdf dtc-manual.txt
++
++dtc-manual.txt: manual.txt
++ cp -f $< $@
++
++dtc-paper.dvi: dtc-paper.tex
++ latex $<
++
++dtc-paper.ps: dtc-paper.dvi
++ dvips $<
++
++dtc-paper.pdf: dtc-paper.tex
++ pdflatex $<
++
++clean:
++ rm -f *.aux *.log *.dvi *.ps *.pdf dtc-manual.txt
new file mode 100644
@@ -0,0 +1,30 @@
+From a4b093f7366fdb429ca1781144d3985fa50d0fbb Mon Sep 17 00:00:00 2001
+From: Julien Grall <julien.grall@linaro.org>
+Date: Tue, 17 Mar 2015 16:00:34 +0000
+Subject: [PATCH] libfdt: Add missing functions to shared library
+
+The commit 4e76ec7 "libfdt: Add fdt_next_subnode() to permit easy
+subnode iteration" adds new functions (fdt_{first,next}_subnode) but
+forgot to mark them as 'global' in the shared library.
+
+Signed-off-by: Julien Grall <julien.grall@linaro.org>
+---
+ libfdt/version.lds | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/libfdt/version.lds b/libfdt/version.lds
+index 80b322b..941208e 100644
+--- a/libfdt/version.lds
++++ b/libfdt/version.lds
+@@ -54,6 +54,8 @@ LIBFDT_1.2 {
+ fdt_get_property_by_offset;
+ fdt_getprop_by_offset;
+ fdt_next_property_offset;
++ fdt_first_subnode;
++ fdt_next_subnode;
+
+ local:
+ *;
+--
+2.8.1
+
new file mode 100644
@@ -0,0 +1,33 @@
+From f58799be130e27cc729cb2d45566daa0bb3b8605 Mon Sep 17 00:00:00 2001
+From: David Gibson <david@gibson.dropbear.id.au>
+Date: Tue, 1 Dec 2015 12:55:21 +1100
+Subject: [PATCH] libfdt: Add some missing symbols to version.lds
+
+Several functions in the header file were missing from the version.lds
+script, meaning that they couldn't be used from a libfdt shared library.
+
+Reported by Ken Aaker, via github issue tracker.
+
+Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
+---
+ libfdt/version.lds | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/libfdt/version.lds b/libfdt/version.lds
+index f19f157..1f4e1ea 100644
+--- a/libfdt/version.lds
++++ b/libfdt/version.lds
+@@ -57,6 +57,10 @@ LIBFDT_1.2 {
+ fdt_next_property_offset;
+ fdt_first_subnode;
+ fdt_next_subnode;
++ fdt_address_cells;
++ fdt_size_cells;
++ fdt_stringlist_contains;
++ fdt_resize;
+
+ local:
+ *;
+--
+2.8.1
+
new file mode 100644
@@ -0,0 +1,116 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages u-boot)
+ #:use-module (guix download)
+ #:use-module (guix packages)
+ #:use-module ((guix licenses) #:select (gpl2))
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system trivial)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages bison) ; dtc
+ #:use-module (gnu packages flex) ; dtc
+ #:use-module (srfi srfi-1)
+ #:use-module ((srfi srfi-1) #:select (last)))
+
+(define-public device-tree-compiler
+ (package
+ (name "device-tree-compiler")
+ (version "1.4.0")
+ (source (origin
+ (method url-fetch)
+ ;; or <https://git.kernel.org/cgit/utils/dtc/dtc.git>
+ (uri (string-append "https://launchpad.net/ubuntu/+archive/primary/+files/"
+ "device-tree-compiler_" version "+dfsg.orig.tar.gz"))
+ (sha256
+ (base32
+ "0hzsqkpbgl73fblpnaiczirgwn0hapa7z478xjy6vvkqljpa3ygm"))
+ (patches (search-patches "u-boot-device-tree-compiler-01_build_doc.patch"
+ "u-boot-device-tree-compiler-23-libfdt-Add-missing-functions-to-shared-library.patch"
+ "u-boot-device-tree-compiler-24_libfdt-Add-some-missing-symbols-to-version.lds.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ '(substitute* "Makefile"
+ (("/usr/bin/install")
+ "install")))))
+ (home-page "https://git.kernel.org/cgit/utils/dtc/dtc.git")
+ (synopsis "Compiles Device Tree Source Files (.dts)")
+ (description "dtc compiles Device Tree Source Files to Device Tree Binary Files.
+These are hardware (board) description files (used by Linux and BSD).")
+ (license gpl2)
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("bison" ,bison)
+ ("flex" ,flex)))
+ (arguments
+ `(#:make-flags `("CC=gcc" ,(string-append "HOME=" (assoc-ref %outputs "out"))) ; Note: or patch out PREFIX
+ #:phases (modify-phases %standard-phases
+ (delete 'configure))))))
+
+(define u-boot
+ (package
+ (name "u-boot")
+ (version "2016.07")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "ftp://ftp.denx.de/pub/u-boot/u-boot-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0lqj4ckmfqiap8mc6z2d5albs3g2h5mzccbn60hsgxhabhibfkwp"))))
+ (home-page "http://www.denx.de/wiki/U-Boot/")
+ (synopsis "ARM Universal Bootloader")
+ (description "U-Boot is an universal bootloader mostly used for ARM boards.
+It also initializes the boards (RAM etc).")
+ (license gpl2)
+ (native-inputs
+ `(("python-2" ,python-2)
+ ("device-tree-compiler" ,device-tree-compiler)))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags '("HOSTCC=gcc") #| ignored? |#))))
+
+(define (make-u-boot-package board)
+ (package
+ (inherit u-boot)
+ (name (string-append "u-boot-" (string-downcase board)))
+ (arguments
+ `(#:make-flags '("HOSTCC=gcc")
+ #:phases
+ (modify-phases %standard-phases
+ (replace
+ 'configure
+ (lambda* (#:key outputs make-flags #:allow-other-keys)
+ (let ((configname (string-append ,board "_defconfig")))
+ (if (zero? (system* "ls" (string-append "configs/" configname)))
+ (zero? (apply system* "make" `(,@make-flags ,configname)))
+ (begin
+ (display "Invalid board. Valid boards would have been:")
+ (newline)
+ (system* "ls" "-1" "configs")
+ #f))))))))))
+
+;(define-public u-boot-a20-olinuxino-lime2
+; (make-u-boot-package "A20-OLinuXino-Lime2"))
+
+;(define-public u-boot-efi-x86
+; (make-u-boot-package "efi-x86"))
+
+; Something should:
+; - create extlinux.conf and put it on the first bootable partition (the one with the Active flag)
+; - install the u-boot bootloader