* [PATCH v2 1/2] gnu: Add dtc.
2016-08-31 21:34 [PATCH v2 0/2] Add u-boot package and its dependent packages Danny Milosavljevic
@ 2016-08-31 21:34 ` Danny Milosavljevic
2016-09-01 15:16 ` David Craven
2016-08-31 21:34 ` [PATCH v2 2/2] gnu: Add u-boot Danny Milosavljevic
1 sibling, 1 reply; 9+ messages in thread
From: Danny Milosavljevic @ 2016-08-31 21:34 UTC (permalink / raw)
To: guix-devel
[-- Attachment #1: Type: text/plain, Size: 821 bytes --]
gnu: Add dtc.
* gnu/packages/u-boot.scm (dtc): New variable.
Co-authored-by: David Craven <david@craven.ch>
---
gnu/local.mk | 4 ++
gnu/packages/patches/dtc-01_build_doc.patch | 22 ++++++++
...t-Add-missing-functions-to-shared-library.patch | 30 ++++++++++
...t-Add-some-missing-symbols-to-version.lds.patch | 33 +++++++++++
gnu/packages/u-boot.scm | 65 ++++++++++++++++++++++
5 files changed, 154 insertions(+)
create mode 100644 gnu/packages/patches/dtc-01_build_doc.patch
create mode 100644 gnu/packages/patches/dtc-23-libfdt-Add-missing-functions-to-shared-library.patch
create mode 100644 gnu/packages/patches/dtc-24_libfdt-Add-some-missing-symbols-to-version.lds.patch
create mode 100644 gnu/packages/u-boot.scm
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-dtc.patch --]
[-- Type: text/x-patch; name="0001-gnu-Add-dtc.patch", Size: 7511 bytes --]
diff --git a/gnu/local.mk b/gnu/local.mk
index 66ef07b..799b6f0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -345,6 +345,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/tor.scm \
%D%/packages/tre.scm \
%D%/packages/tv.scm \
+ %D%/packages/u-boot.scm \
%D%/packages/unrtf.scm \
%D%/packages/upnp.scm \
%D%/packages/uucp.scm \
@@ -809,6 +810,9 @@ dist_patch_DATA = \
%D%/packages/patches/torsocks-dns-test.patch \
%D%/packages/patches/totem-debug-format-fix.patch \
%D%/packages/patches/tuxpaint-stamps-path.patch \
+ %D%/packages/patches/u-boot-dtc-01_build_doc.patch \
+ %D%/packages/patches/u-boot-dtc-23-libfdt-Add-missing-functions-to-shared-library.patch \
+ %D%/packages/patches/u-boot-dtc-24_libfdt-Add-some-missing-symbols-to-version.lds.patch \
%D%/packages/patches/unzip-CVE-2014-8139.patch \
%D%/packages/patches/unzip-CVE-2014-8140.patch \
%D%/packages/patches/unzip-CVE-2014-8141.patch \
diff --git a/gnu/packages/patches/dtc-01_build_doc.patch b/gnu/packages/patches/dtc-01_build_doc.patch
new file mode 100644
index 0000000..0ecafa3
--- /dev/null
+++ b/gnu/packages/patches/dtc-01_build_doc.patch
@@ -0,0 +1,22 @@
+Note: the patch is from <https://launchpad.net/ubuntu/+archive/primary/+files/device-tree-compiler_1.4.0+dfsg-2ubuntu1.diff.gz>
+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/dtc-23-libfdt-Add-missing-functions-to-shared-library.patch b/gnu/packages/patches/dtc-23-libfdt-Add-missing-functions-to-shared-library.patch
new file mode 100644
index 0000000..3bfde67
--- /dev/null
+++ b/gnu/packages/patches/dtc-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 <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
+
diff --git a/gnu/packages/patches/dtc-24_libfdt-Add-some-missing-symbols-to-version.lds.patch b/gnu/packages/patches/dtc-24_libfdt-Add-some-missing-symbols-to-version.lds.patch
new file mode 100644
index 0000000..4f825c4
--- /dev/null
+++ b/gnu/packages/patches/dtc-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 <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
+
diff --git a/gnu/packages/u-boot.scm b/gnu/packages/u-boot.scm
new file mode 100644
index 0000000..5f3fd49
--- /dev/null
+++ b/gnu/packages/u-boot.scm
@@ -0,0 +1,65 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
+;;; Copyright © 2016 David Craven <david@craven.ch>
+;;;
+;;; 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 build-system gnu)
+ #:use-module (guix download)
+ #:use-module (guix packages)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages bison)
+ #:use-module (gnu packages flex))
+
+(define-public dtc
+ (package
+ (name "dtc")
+ (version "1.4.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://www.kernel.org/pub/software/utils/dtc/"
+ "dtc-" version ".tar.xz"))
+ (sha256
+ (base32
+ "155v52palf5fwfcnq696s41whjk0a5dqx98b7maqzdn7xbc2m6bp"))
+ (patches (search-patches "u-boot-dtc-01_build_doc.patch"
+ "u-boot-dtc-23-libfdt-Add-missing-functions-to-shared-library.patch"
+ "u-boot-dtc-24_libfdt-Add-some-missing-symbols-to-version.lds.patch"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("bison" ,bison)
+ ("flex" ,flex)))
+ (arguments
+ `(#:make-flags
+ (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-paths
+ (lambda _
+ (substitute* "Makefile"
+ (("/usr/bin/install") "install"))
+ (substitute* "Makefile"
+ (("PREFIX = \\$\\(HOME\\)") ""))))
+ (delete 'configure))))
+ (home-page "https://www.devicetree.org")
+ (synopsis "Compiles device tree source files")
+ (description "@command{dtc} compiles device tree source (.dts) Files to
+device tree binary (.dtb) files.
+These are hardware (board) description files (used by Linux and BSD).")
+ (license license:gpl2+)))
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 2/2] gnu: Add u-boot.
2016-08-31 21:34 [PATCH v2 0/2] Add u-boot package and its dependent packages Danny Milosavljevic
2016-08-31 21:34 ` [PATCH v2 1/2] gnu: Add dtc Danny Milosavljevic
@ 2016-08-31 21:34 ` Danny Milosavljevic
1 sibling, 0 replies; 9+ messages in thread
From: Danny Milosavljevic @ 2016-08-31 21:34 UTC (permalink / raw)
To: guix-devel
[-- Attachment #1: Type: text/plain, Size: 326 bytes --]
gnu: Add u-boot.
* gnu/packages/u-boot.scm (u-boot, make-u-boot-package,
armhf-linux-uboot, mips64el-linux-uboot): New variables.
Co-authored-by: David Craven <david@craven.ch>
---
gnu/packages/u-boot.scm | 90 ++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 86 insertions(+), 4 deletions(-)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0002-gnu-Add-u-boot.patch --]
[-- Type: text/x-patch; name="0002-gnu-Add-u-boot.patch", Size: 4879 bytes --]
diff --git a/gnu/packages/u-boot.scm b/gnu/packages/u-boot.scm
index 5f3fd49..4a10782 100644
--- a/gnu/packages/u-boot.scm
+++ b/gnu/packages/u-boot.scm
@@ -23,8 +23,11 @@
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
+ #:use-module ((gnu packages algebra) #:select (bc))
#:use-module (gnu packages bison)
- #:use-module (gnu packages flex))
+ #:use-module (gnu packages cross-base)
+ #:use-module (gnu packages flex)
+ #:use-module (gnu packages python))
(define-public dtc
(package
@@ -38,9 +41,9 @@
(sha256
(base32
"155v52palf5fwfcnq696s41whjk0a5dqx98b7maqzdn7xbc2m6bp"))
- (patches (search-patches "u-boot-dtc-01_build_doc.patch"
- "u-boot-dtc-23-libfdt-Add-missing-functions-to-shared-library.patch"
- "u-boot-dtc-24_libfdt-Add-some-missing-symbols-to-version.lds.patch"))))
+ (patches (search-patches "dtc-01_build_doc.patch"
+ "dtc-23-libfdt-Add-missing-functions-to-shared-library.patch"
+ "dtc-24_libfdt-Add-some-missing-symbols-to-version.lds.patch"))))
(build-system gnu-build-system)
(native-inputs
`(("bison" ,bison)
@@ -63,3 +66,82 @@
device tree binary (.dtb) files.
These are hardware (board) description files (used by Linux and BSD).")
(license license:gpl2+)))
+
+(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"))))
+ (native-inputs
+ `(("bc" ,bc)
+ ("dtc" ,dtc)
+ ("python-2" ,python-2)))
+ (build-system gnu-build-system)
+ (home-page "http://www.denx.de/wiki/U-Boot/")
+ (synopsis "ARM Bootloader")
+ (description "U-Boot is a bootloader mostly used for ARM boards.
+It also initializes the boards (RAM etc).")
+ (license license:gpl2+)))
+
+(define (make-u-boot-package board triplet)
+ (let ((xgcc (cross-gcc triplet)))
+ (package
+ (inherit u-boot)
+ (name (string-append "u-boot-" (string-downcase board)))
+ (native-inputs
+ `(("cross-gcc" ,xgcc)
+ ("cross-binutils" ,(cross-binutils triplet))
+ ,@(package-native-inputs u-boot)))
+ (arguments
+ `(#:test-target "test"
+ #:make-flags
+ (list "HOSTCC=gcc" (string-append "CROSS_COMPILE=" ,triplet "-"))
+ #:phases
+ (modify-phases %standard-phases
+ (replace
+ 'configure
+ (lambda* (#:key outputs make-flags #:allow-other-keys)
+ (let ((config-name (string-append ,board "_defconfig")))
+ (if (zero? (system* "ls" (string-append "configs/" config-name)))
+ (zero? (apply system* "make" `(,@make-flags ,config-name)))
+ (begin
+ (use-modules (ice-9 match) (ice-9 format))
+ (display "Invalid board name. Valid board names would have been:")
+ (newline)
+ (let ((dir (opendir "configs")))
+ (do ((file-name (readdir dir) (readdir dir)))
+ ((eof-object? file-name))
+ (if (string-suffix? "_defconfig" file-name)
+ (format #t
+ "- ~A\n"
+ (string-drop-right file-name
+ (string-length "_defconfig")))))
+ (closedir dir))
+ #f)))))
+ (replace 'install
+ (lambda* (#:key outputs make-flags #:allow-other-keys)
+ (let ((out (string-append (assoc-ref outputs "out") "/libexec")))
+ (mkdir-p out)
+ (for-each (lambda (name)
+ (let ((outname (string-append out "/" name)))
+ (mkdir-p (dirname outname))
+ (copy-file name outname)))
+ (find-files "." ".*\\.(bin|efi|spl)$")))))))))))
+
+(define-public armhf-linux-uboot
+ (make-u-boot-package "vexpress_ca9x4" "arm-linux-gnueabihf"))
+
+(define-public mips64el-linux-uboot
+ (make-u-boot-package "malta" "mips64el-linux-gnuabi64"))
+
+;;; Something should:
+;;; - create extlinux.conf and put it on the first bootable partition
+;;; (the one with the Active flag)
+;;; - install the u-boot bootloader
^ permalink raw reply related [flat|nested] 9+ messages in thread