On Thu, Jul 14, 2016 at 12:22:13AM +0200, Danny Milosavljevic wrote: > Work-in-progress gnu/packages/u-boot.scm : > > ;;; GNU Guix --- Functional package management for GNU > ;;; Copyright © 2016 Danny Milosavljevic <danny...@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) ; for DTC > #:use-module (gnu packages flex) ; for DTC > #:use-module (srfi srfi-1) > #:use-module ((srfi srfi-1) #:select (last))) >
I forget why I cloned the repo, but I have one with a similar name hanging around my computer git.kernel.org/pub/scm/linux/kernel/git/devicetree/devicetree-rebasing.git Also I think the same file as u-boot is the right place for it. > ;; FIXME move somewhere more fitting > ;; FIXME add > https://launchpad.net/ubuntu/+archive/primary/+files/device-tree-compiler_1.4.0+dfsg-2ubuntu1.diff.gz > (massive amount of patches) > (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")) > (modules '((guix build utils))) as long as you're deleting 'configure you could replace configure with the substitute. > (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)))))) > I think this is the right approach, with a general u-boot that each board can inherit and make work for them. > (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")))) we could probably add a snippet here and remove most of the architectures, but at 11MB its probably not worth it. > (home-page "http://www.denx.de/wiki/U-Boot/") > (synopsis "ARM Universal Bootloader") > (description "FIXME") > (license gpl2) > (native-inputs > `(("python" ,python) ; FIXME required version? > ("device-tree-compiler" ,device-tree-compiler))) > (build-system gnu-build-system) > (arguments ; FIXME #:tests? #f > `(#:make-flags '("HOSTCC=gcc") ; ignored? > #:phases (modify-phases %standard-phases > (replace > 'configure > (lambda* (#:key outputs #:allow-other-keys) > (let* ((out (assoc-ref outputs "out")) > (parts (string-split (basename out) #\-)) > (nameparts (cdddr parts)) > (name (string-join nameparts "-")) > (configprefix (string-take name > (string-index-right name #\-))) > (configname (string-append configprefix > "_defconfig")) #| example: A20-OLinuXino-Lime2_defconfig |#) > (system* "echo" configname) > (zero? (system* "make" "HOSTCC=gcc" configname)) > )))))))) > > (define-public u-boot-A20-OLinuXino-Lime2 > (package (inherit u-boot) > (name "u-boot-A20-OLinuXino-Lime2"))) > > ; something should: > ; - create boot.cmd > ; - run mkimage -C none -A arm -T script -d boot.cmd boot.scr > ; - put boot.scr on the first partition > ; - dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8 > ; ^^^ better make sure no partition is there (or just a dummy partition) > with dd being so potentially destructive I think we should have the users run the dd command themselves, or it could be included as part of a `guix system init --target=arm-board=/dev/sdX arm-config.scm' -- Efraim Flashner <efr...@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
signature.asc
Description: PGP signature