diff --git a/gnu/local.mk b/gnu/local.mk index dcdea86..f7e3c0f 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -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 \ diff --git a/gnu/packages/patches/u-boot-device-tree-compiler-01_build_doc.patch b/gnu/packages/patches/u-boot-device-tree-compiler-01_build_doc.patch new file mode 100644 index 0000000..06c3e40 --- /dev/null +++ b/gnu/packages/patches/u-boot-device-tree-compiler-01_build_doc.patch @@ -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 diff --git a/gnu/packages/patches/u-boot-device-tree-compiler-23-libfdt-Add-missing-functions-to-shared-library.patch b/gnu/packages/patches/u-boot-device-tree-compiler-23-libfdt-Add-missing-functions-to-shared-library.patch new file mode 100644 index 0000000..3bfde67 --- /dev/null +++ b/gnu/packages/patches/u-boot-device-tree-compiler-23-libfdt-Add-missing-functions-to-shared-library.patch @@ -0,0 +1,30 @@ +From a4b093f7366fdb429ca1781144d3985fa50d0fbb Mon Sep 17 00:00:00 2001 +From: Julien Grall +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 +--- + 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 + diff --git a/gnu/packages/patches/u-boot-device-tree-compiler-24_libfdt-Add-some-missing-symbols-to-version.lds.patch b/gnu/packages/patches/u-boot-device-tree-compiler-24_libfdt-Add-some-missing-symbols-to-version.lds.patch new file mode 100644 index 0000000..4f825c4 --- /dev/null +++ b/gnu/packages/patches/u-boot-device-tree-compiler-24_libfdt-Add-some-missing-symbols-to-version.lds.patch @@ -0,0 +1,33 @@ +From f58799be130e27cc729cb2d45566daa0bb3b8605 Mon Sep 17 00:00:00 2001 +From: David Gibson +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 +--- + 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 + diff --git a/gnu/packages/u-boot.scm b/gnu/packages/u-boot.scm new file mode 100644 index 0000000..415fbad --- /dev/null +++ b/gnu/packages/u-boot.scm @@ -0,0 +1,114 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 Danny Milosavljevic +;;; +;;; 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 . + +(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 + (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))) + +(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