added bootloader packages for rg35xx
This commit is contained in:
parent
079b29cb21
commit
4351e1e25f
3 changed files with 2407 additions and 0 deletions
554
skg/packages/bootloaders.scm
Normal file
554
skg/packages/bootloaders.scm
Normal file
|
@ -0,0 +1,554 @@
|
|||
(define-module (skg packages bootloaders)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages assembly)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages disk)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages cdrom)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages cross-base)
|
||||
#:use-module (gnu packages disk)
|
||||
#:use-module (skg packages firmware)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages efi)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages llvm)
|
||||
#:use-module (gnu packages man)
|
||||
#:use-module (gnu packages mtools)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages ninja)
|
||||
#:use-module (gnu packages package-management)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-build)
|
||||
#:use-module (gnu packages python-crypto)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages sdl)
|
||||
#:use-module (gnu packages sphinx)
|
||||
#:use-module (gnu packages serialization)
|
||||
#:use-module (gnu packages swig)
|
||||
#:use-module (gnu packages valgrind)
|
||||
#:use-module (gnu packages version-control)
|
||||
#:use-module (gnu packages virtualization)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages python-build)
|
||||
#:use-module (gnu packages python-web)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system meson)
|
||||
#:use-module (guix build-system pyproject)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 optargs)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 regex))
|
||||
|
||||
(define-public dtc
|
||||
(package
|
||||
(name "dtc")
|
||||
(version "1.7.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"mirror://kernel.org/software/utils/dtc/"
|
||||
"dtc-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0cij9399snpn672pdbda8qbxljdkfg068kvv3g5811rz6yslx124"))
|
||||
(patches
|
||||
(search-patches "dtc-meson-cell-overflow.patch"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:modules '((guix build meson-build-system)
|
||||
(guix build utils)
|
||||
(srfi srfi-26))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'preparations
|
||||
(lambda _
|
||||
;; The version string is usually derived via setuptools-scm, but
|
||||
;; without the git metadata available this fails.
|
||||
(setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)
|
||||
|
||||
;; Needed by setup.py.
|
||||
(setenv "DESTDIR" "/")
|
||||
|
||||
;; Native gcc needed by run_test.sh.
|
||||
(setenv "CC" "gcc")
|
||||
|
||||
;; /bin/fdt{get,overlay,put} need help finding libfdt.so.1.
|
||||
(setenv "LDFLAGS"
|
||||
(string-append "-Wl,-rpath=" #$output "/lib"))))
|
||||
(add-after 'unpack 'install-doc
|
||||
(lambda _
|
||||
(with-directory-excursion "Documentation"
|
||||
(for-each (cut install-file <> (string-append
|
||||
#$output "/share/doc/dtc/"))
|
||||
'("dts-format.txt"
|
||||
"dt-object-internal.txt"
|
||||
"manual.txt")))))
|
||||
(add-after 'unpack 'patch-pkg-config
|
||||
(lambda _
|
||||
(substitute* '("tests/run_tests.sh")
|
||||
(("pkg-config")
|
||||
#$(pkg-config-for-target))))))))
|
||||
(native-inputs
|
||||
(append
|
||||
(list bison
|
||||
flex
|
||||
libyaml
|
||||
ninja
|
||||
pkg-config
|
||||
python
|
||||
python-setuptools-scm
|
||||
swig
|
||||
which)
|
||||
(if (member (%current-system) (package-supported-systems valgrind))
|
||||
(list valgrind)
|
||||
'())))
|
||||
(inputs
|
||||
(list python))
|
||||
(home-page "https://www.devicetree.org")
|
||||
(synopsis "Compiles device tree source files")
|
||||
(description "@command{dtc} compiles
|
||||
@uref{http://elinux.org/Device_Tree_Usage, device tree source files} to device
|
||||
tree binary files. These are board description files used by Linux and BSD.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define u-boot
|
||||
(package
|
||||
(name "u-boot")
|
||||
(version "2025.01")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://source.denx.de/u-boot/u-boot.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1i1v86bnixh8hyqbwwr5iwdnnadmg2fqxw9g526fvclsbvl8lz0v"))
|
||||
(patches (search-patches "u-boot-allow-disabling-openssl.patch"
|
||||
"u-boot-rockchip-inno-usb.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
(list bison
|
||||
dtc
|
||||
gnutls
|
||||
flex
|
||||
lz4
|
||||
ncurses/tinfo
|
||||
perl
|
||||
pkg-config ;for 'make menuconfig'
|
||||
python
|
||||
python-pyelftools
|
||||
python-setuptools
|
||||
python-wheel
|
||||
swig
|
||||
(list util-linux "lib")))
|
||||
(home-page "https://www.denx.de/wiki/U-Boot/")
|
||||
(synopsis "ARM bootloader")
|
||||
(description "U-Boot is a bootloader used mostly for ARM boards. It
|
||||
also initializes the boards (RAM etc).")
|
||||
(license license:gpl2+)))
|
||||
|
||||
;;; This is very similar to the linux-libre-documentation package, since it
|
||||
;;; reuses the same Makefile-based build system.
|
||||
(define-public u-boot-documentation
|
||||
(package
|
||||
(inherit u-boot)
|
||||
(name "u-boot-documentation")
|
||||
(arguments
|
||||
(list
|
||||
#:make-flags #~(list "HOSTCC=gcc"
|
||||
;; Avoid treating Sphinx warnings as errors.
|
||||
"SPHINXOPTS=")
|
||||
#:tests? #f
|
||||
#:phases #~(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(replace 'build
|
||||
(lambda* (#:key make-flags #:allow-other-keys)
|
||||
(apply invoke "make" "infodocs" make-flags)))
|
||||
(replace 'install
|
||||
(lambda* (#:key make-flags #:allow-other-keys)
|
||||
(let* ((info-dir (string-append #$output "/share/info"))
|
||||
(info (string-append info-dir
|
||||
"/DasUBoot.info.gz")))
|
||||
(with-directory-excursion "doc/output"
|
||||
(apply invoke "make" "-C" "texinfo" "install-info"
|
||||
(string-append "infodir=" info-dir)
|
||||
make-flags))))))))
|
||||
(native-inputs
|
||||
(modify-inputs (package-native-inputs u-boot)
|
||||
(append fontconfig
|
||||
python-sphinx
|
||||
python-sphinx-prompt
|
||||
texinfo
|
||||
which)))
|
||||
(synopsis "U-Boot documentation")
|
||||
(description "This package provides the documentation for U-Boot, as an
|
||||
Info manual.")))
|
||||
|
||||
(define-public u-boot-tools
|
||||
(package
|
||||
(inherit u-boot)
|
||||
(name "u-boot-tools")
|
||||
(native-inputs
|
||||
(modify-inputs (package-native-inputs u-boot)
|
||||
(prepend python-coverage
|
||||
python-filelock
|
||||
python-pycryptodomex
|
||||
python-pytest
|
||||
python-pytest-xdist)))
|
||||
(arguments
|
||||
`(#:make-flags '("HOSTCC=gcc")
|
||||
#:test-target "tcheck"
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "Makefile"
|
||||
(("/bin/pwd") (which "pwd"))
|
||||
(("/bin/false") (which "false")))
|
||||
(substitute* "tools/dtoc/fdt_util.py"
|
||||
(("'cc'") "'gcc'"))
|
||||
(substitute* "tools/u_boot_pylib/test_util.py"
|
||||
;; python3-coverage is simply called coverage in guix.
|
||||
(("python3-coverage") "coverage")
|
||||
|
||||
;; Don't require 100% coverage since it's brittle and can
|
||||
;; fail with newer versions of coverage or dependencies.
|
||||
(("raise ValueError\\('Test coverage failure'\\)")
|
||||
"print('Continuing anyway since Guix does not care :O')"))
|
||||
(substitute* "test/run"
|
||||
;; Make it easier to find test failures.
|
||||
(("#!/bin/bash") "#!/bin/bash -x")
|
||||
;; This test would require git.
|
||||
(("\\./tools/patman/patman") (which "true"))
|
||||
;; FIXME: test fails, needs further investiation
|
||||
(("run_test \"binman\"") "# run_test \"binman\"")
|
||||
;; FIXME: tests fail without kwbimage, i.e. openssl.
|
||||
(("run_test \"sandbox_noinst\"")
|
||||
"# run_test \"sandbox_noinst\"")
|
||||
(("run_test \"sandbox_vpl\"")
|
||||
"# run_test \"sandbox_vpl\"")
|
||||
;; FIXME: code coverage not working
|
||||
(("run_test \"binman code coverage\"")
|
||||
"# run_test \"binman code coverage\"")
|
||||
;; This test would require internet access.
|
||||
(("\\./tools/buildman/buildman") (which "true")))
|
||||
(substitute* "test/py/tests/test_sandbox_exit.py"
|
||||
(("def test_ctrl_c")
|
||||
"@pytest.mark.skip(reason='Guix has problems with SIGINT')
|
||||
def test_ctrl_c"))
|
||||
;; Test against the tools being installed rather than tools built
|
||||
;; for "sandbox" target.
|
||||
(substitute* "test/image/test-imagetools.sh"
|
||||
(("BASEDIR=sandbox") "BASEDIR=."))
|
||||
(for-each (lambda (file)
|
||||
(substitute* file
|
||||
;; Disable features that require OpenSSL due
|
||||
;; to GPL/Openssl license incompatibilities.
|
||||
;; See https://bugs.gnu.org/34717 for
|
||||
;; details.
|
||||
(("CONFIG_FIT_SIGNATURE=y")
|
||||
"CONFIG_FIT_SIGNATURE=n
|
||||
CONFIG_UT_LIB_ASN1=n
|
||||
CONFIG_TOOLS_LIBCRYPTO=n
|
||||
CONFIG_TOOLS_KWBIMAGE=n")
|
||||
;; Catch instances of implied CONFIG_FIG_SIGNATURE
|
||||
;; with VPL targets
|
||||
(("CONFIG_SANDBOX_VPL=y")
|
||||
"CONFIG_SANDBOX_VPL=y
|
||||
CONFIG_FIT_SIGNATURE=n
|
||||
CONFIG_VPL_FIT_SIGNATURE=n
|
||||
CONFIG_TOOLS_LIBCRYPTO=n
|
||||
CONFIG_TOOLS_KWBIMAGE=n")
|
||||
;; This test requires a sound system, which is un-used
|
||||
;; in u-boot-tools.
|
||||
(("CONFIG_SOUND=y") "CONFIG_SOUND=n")))
|
||||
(find-files "configs" "sandbox_.*defconfig$|tools-only_defconfig"))))
|
||||
(replace 'configure
|
||||
(lambda* (#:key make-flags #:allow-other-keys)
|
||||
(apply invoke "make" "tools-only_defconfig" make-flags)))
|
||||
(replace 'build
|
||||
(lambda* (#:key inputs make-flags #:allow-other-keys)
|
||||
(apply invoke "make" "tools-all" make-flags)))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin")))
|
||||
(for-each (lambda (name)
|
||||
(install-file name bin))
|
||||
'("tools/netconsole"
|
||||
"tools/jtagconsole"
|
||||
"tools/gen_eth_addr"
|
||||
"tools/gen_ethaddr_crc"
|
||||
"tools/img2srec"
|
||||
"tools/mkenvimage"
|
||||
"tools/dumpimage"
|
||||
"tools/mkimage"
|
||||
"tools/kwboot"
|
||||
"tools/proftool"
|
||||
"tools/fdtgrep"
|
||||
"tools/env/fw_printenv"
|
||||
"tools/sunxi-spl-image-builder")))))
|
||||
(delete 'check)
|
||||
(add-after 'install 'check
|
||||
(lambda* (#:key make-flags test-target tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(invoke "test/image/test-imagetools.sh"))))
|
||||
;; Only run full test suite on x86_64 systems, as many tests
|
||||
;; assume x86_64.
|
||||
,@(if (string-match "^x86_64-linux"
|
||||
(or (%current-target-system)
|
||||
(%current-system)))
|
||||
'((add-after 'check 'check-x86
|
||||
(lambda* (#:key make-flags test-target tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(begin
|
||||
(apply invoke "make" "mrproper" make-flags)
|
||||
(setenv "SDL_VIDEODRIVER" "dummy")
|
||||
(setenv "PAGER" "cat")
|
||||
(apply invoke "make" test-target make-flags))))))
|
||||
'()))))
|
||||
(description (string-append
|
||||
(package-description u-boot)
|
||||
" This package provides board-independent tools "
|
||||
"of U-Boot."))))
|
||||
|
||||
(define-public python-u-boot-pylib
|
||||
(package
|
||||
(inherit u-boot)
|
||||
(name "python-u-boot-pylib")
|
||||
(build-system pyproject-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'chdir
|
||||
(lambda _
|
||||
(chdir "tools/u_boot_pylib")))
|
||||
(add-after 'chdir 'list-package
|
||||
(lambda _
|
||||
(let ((port (open-file "pyproject.toml" "a")))
|
||||
(display "[tool.setuptools.packages.find]\n" port)
|
||||
(display "where = [\"..\"]\n" port)
|
||||
(display "include = [\"u_boot_pylib*\"]" port)
|
||||
(close-port port))))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(invoke "./u_boot_pylib")))))))
|
||||
(synopsis "U-Boot Python library")
|
||||
(description "This package provides common Python code used by some of the
|
||||
commands part of the U-Boot project, such as Patman.")))
|
||||
|
||||
;;; This is packaged separately, as it can be used in other contexts than for
|
||||
;;; U-Boot development.
|
||||
(define-public patman
|
||||
(package
|
||||
(inherit u-boot)
|
||||
(name "patman")
|
||||
(build-system pyproject-build-system)
|
||||
(arguments
|
||||
;; The test suite strongly relies on the git metadata being available (23
|
||||
;; failed, 14 passed).
|
||||
(list
|
||||
#:tests? #f
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
;; Patman fails to run during 'sanity-check phase, as it needs to be
|
||||
;; run within a git directory.
|
||||
(delete 'sanity-check)
|
||||
(add-after 'unpack 'chdir
|
||||
(lambda _
|
||||
(chdir "tools/patman")))
|
||||
(add-after 'install 'wrap-script
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(wrap-script (string-append #$output "/bin/patman")
|
||||
`("PATH" ":" prefix
|
||||
(,(string-append #$(this-package-input "git") "/bin")))
|
||||
`("GIT_EXEC_PATH" ":" prefix
|
||||
(,(dirname (search-input-file
|
||||
inputs "libexec/git-core/git-commit"))
|
||||
,(dirname (search-input-file
|
||||
inputs
|
||||
"libexec/git-core/git-send-email"))))))))))
|
||||
(inputs
|
||||
(list git
|
||||
`(,git "send-email")
|
||||
guile-3.0/pinned ;for wrap-script
|
||||
python-pygit2
|
||||
python-requests
|
||||
python-u-boot-pylib))
|
||||
(synopsis "Patch automation tool")
|
||||
(description "Patman is a patch automation script which:
|
||||
@itemize
|
||||
@item Creates patches directly from your branch
|
||||
@item Cleans them up by removing unwanted tags
|
||||
@item Inserts a cover letter with change lists
|
||||
@item Runs the patches through automated checks
|
||||
@item Optionally emails them out to selected people.
|
||||
@end itemize")))
|
||||
|
||||
(define*-public (make-u-boot-package board triplet
|
||||
#:key
|
||||
defconfig
|
||||
configs
|
||||
name-suffix
|
||||
append-description
|
||||
(u-boot u-boot))
|
||||
"Return a U-Boot package for BOARD cross-compiled for TRIPLET with the
|
||||
optional DEFCONFIG file and optional configuration changes from CONFIGS.
|
||||
TRIPLET may also be set to #f to disable cross-compilation. NAME-SUFFIX is
|
||||
appended to the package name, while APPEND-DESCRIPTION is appended to the
|
||||
package description. U-BOOT can be used when a fork or a different version of
|
||||
U-Boot must be used."
|
||||
(let ((native-build? (lambda ()
|
||||
(or (not triplet) ;disable cross-compilation
|
||||
(string=? (%current-system)
|
||||
(gnu-triplet->nix-system triplet))))))
|
||||
(package
|
||||
(inherit u-boot)
|
||||
(name (string-append (downstream-package-name "u-boot-" board)
|
||||
(or name-suffix "")))
|
||||
(description (if append-description
|
||||
(string-append (package-description u-boot)
|
||||
"\n\n" append-description)
|
||||
(package-description u-boot)))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments u-boot)
|
||||
((#:target _ #f)
|
||||
(and (not (native-build?)) triplet))
|
||||
((#:modules modules '())
|
||||
`((ice-9 ftw)
|
||||
(srfi srfi-1)
|
||||
(guix build gnu-build-system)
|
||||
(guix build kconfig)
|
||||
(guix build utils)
|
||||
,@modules))
|
||||
((#:imported-modules imported-modules '())
|
||||
`((guix build kconfig)
|
||||
,@%default-gnu-imported-modules
|
||||
,@imported-modules))
|
||||
((#:test-target _ "test")
|
||||
"test")
|
||||
((#:make-flags make-flags '())
|
||||
#~(list "HOSTCC=gcc"
|
||||
"KBUILD_VERBOSE=1"
|
||||
#$@(if (not (native-build?))
|
||||
(list (string-append "CROSS_COMPILE=" triplet "-"))
|
||||
'())
|
||||
#$@make-flags))
|
||||
((#:phases phases '%standard-phases)
|
||||
#~(modify-phases #$phases
|
||||
(replace 'configure
|
||||
(lambda* (#:key make-flags #:allow-other-keys)
|
||||
(let* ((config-name (string-append #$board "_defconfig"))
|
||||
(config-file (string-append "configs/" config-name))
|
||||
(defconfig #$defconfig)
|
||||
(configs '#$configs))
|
||||
(when defconfig
|
||||
;; Replace the board-specific defconfig with the given
|
||||
;; one.
|
||||
(copy-file defconfig config-file))
|
||||
(if (file-exists? config-file)
|
||||
(begin
|
||||
(when configs
|
||||
(modify-defconfig config-file configs))
|
||||
(apply invoke "make" `(,@make-flags ,config-name))
|
||||
(verify-config ".config" config-file))
|
||||
(begin
|
||||
(display "invalid board name; valid board names are:"
|
||||
(current-error-port))
|
||||
(let ((suffix-len (string-length "_defconfig"))
|
||||
(entries (scandir "configs")))
|
||||
(for-each (lambda (file-name)
|
||||
(when (string-suffix? "_defconfig"
|
||||
file-name)
|
||||
(format (current-error-port)
|
||||
"- ~A\n"
|
||||
(string-drop-right
|
||||
file-name suffix-len))))
|
||||
(sort entries string-ci<)))
|
||||
(error "invalid boardname ~s" #$board))))))
|
||||
(add-after 'configure 'disable-tools-libcrypto
|
||||
;; Disable libcrypto due to GPL and OpenSSL license
|
||||
;; incompatibilities
|
||||
(lambda _
|
||||
(substitute* ".config"
|
||||
(("CONFIG_TOOLS_LIBCRYPTO=.*$")
|
||||
"CONFIG_TOOLS_LIBCRYPTO=n
|
||||
CONFIG_TOOLS_KWBIMAGE=n"))))
|
||||
(replace 'install
|
||||
(lambda _
|
||||
(let ((libexec (string-append #$output "/libexec"))
|
||||
(uboot-files
|
||||
(append
|
||||
(remove
|
||||
;; Those would not be reproducible
|
||||
;; because of the randomness used to
|
||||
;; produce them. It's expected that the
|
||||
;; user will use u-boot-tools to generate
|
||||
;; them instead.
|
||||
(lambda (name)
|
||||
(string-suffix?
|
||||
"sunxi-spl-with-ecc.bin"
|
||||
name))
|
||||
(find-files "."
|
||||
".*\\.(bin|efi|img|imx|spl|itb|dtb|rksd)$"))
|
||||
(find-files "." "^(MLO|SPL)$"))))
|
||||
(mkdir-p libexec)
|
||||
(install-file ".config" libexec)
|
||||
;; Useful for "qemu -kernel".
|
||||
(install-file "u-boot" libexec)
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(let ((target-file (string-append libexec "/" file)))
|
||||
(mkdir-p (dirname target-file))
|
||||
(copy-file file target-file)))
|
||||
uboot-files)))))))))))
|
||||
|
||||
(define*-public (make-u-boot-sunxi64-package board triplet ;;scp-firmware
|
||||
#:key defconfig configs)
|
||||
(let ((base (make-u-boot-package
|
||||
board triplet #:defconfig defconfig #:configs configs)))
|
||||
(package
|
||||
(inherit base)
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments base)
|
||||
((#:phases phases)
|
||||
#~(modify-phases #$phases
|
||||
(add-after 'unpack 'set-environment
|
||||
(lambda* (#:key native-inputs inputs #:allow-other-keys)
|
||||
;;(setenv "SCP" (search-input-file
|
||||
;; (or native-inputs inputs) "libexec/scp.bin"))
|
||||
(setenv "BL31" (search-input-file inputs "bl31.bin"))))))))
|
||||
;;(native-inputs
|
||||
;; (modify-inputs (package-native-inputs base)
|
||||
;; (append (force scp-firmware))))
|
||||
(inputs
|
||||
(modify-inputs (package-inputs base)
|
||||
(append arm-trusted-firmware-sun50i-h616))))))
|
||||
|
||||
(define-public u-boot-rg35xx
|
||||
(make-u-boot-sunxi64-package "anbernic_rg35xx_h700" "aarch64-linux-gnu"
|
||||
))
|
||||
|
1788
skg/packages/firmware.scm
Normal file
1788
skg/packages/firmware.scm
Normal file
File diff suppressed because it is too large
Load diff
65
skg/packages/u-boot.scm
Normal file
65
skg/packages/u-boot.scm
Normal file
|
@ -0,0 +1,65 @@
|
|||
(define-module (skg packages u-boot)
|
||||
#:use-module (gnu bootloader extlinux)
|
||||
#:use-module (gnu bootloader)
|
||||
#:use-module (skg packages bootloaders)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (u-boot-bootloader
|
||||
u-boot-rg35xx-bootloader))
|
||||
|
||||
(define (make-u-boot-installer file)
|
||||
(let ((file
|
||||
(match file
|
||||
((? string?)
|
||||
(list #~(install-file (string-append bootloader #$file)
|
||||
install-dir)))
|
||||
((? file-like?) (list #~(install-file #$file install-dir)))
|
||||
(#f '()))))
|
||||
#~(lambda (bootloader device mount-point)
|
||||
(let ((install-dir (string-append mount-point "/boot")))
|
||||
#$@file))))
|
||||
|
||||
(define install-u-boot
|
||||
#~(lambda (bootloader root-index image)
|
||||
(if bootloader
|
||||
(error "Failed to install U-Boot"))))
|
||||
|
||||
(define install-allwinner-u-boot
|
||||
#~(lambda (bootloader root-index image)
|
||||
(let ((u-boot (string-append bootloader
|
||||
"/libexec/u-boot-sunxi-with-spl.bin")))
|
||||
(write-file-on-device u-boot (stat:size (stat u-boot))
|
||||
image (* 8 1024)))))
|
||||
|
||||
(define install-allwinner64-u-boot
|
||||
#~(lambda (bootloader root-index image)
|
||||
(let ((spl (string-append bootloader "/libexec/u-boot-sunxi-with-spl.bin"))
|
||||
(u-boot (string-append bootloader "/libexec/u-boot-sunxi-with-spl.fit.itb")))
|
||||
(write-file-on-device spl (stat:size (stat spl))
|
||||
image (* 8 1024))
|
||||
(write-file-on-device u-boot (stat:size (stat u-boot))
|
||||
image (* 40 1024)))))
|
||||
|
||||
|
||||
(define u-boot-bootloader
|
||||
(bootloader
|
||||
(inherit extlinux-bootloader)
|
||||
(name 'u-boot)
|
||||
(package #f)
|
||||
(installer #f)
|
||||
(disk-image-installer install-u-boot)))
|
||||
|
||||
(define u-boot-allwinner-bootloader
|
||||
(bootloader
|
||||
(inherit u-boot-bootloader)
|
||||
(disk-image-installer install-allwinner-u-boot)))
|
||||
|
||||
(define u-boot-allwinner64-bootloader
|
||||
(bootloader
|
||||
(inherit u-boot-bootloader)
|
||||
(disk-image-installer install-allwinner64-u-boot)))
|
||||
|
||||
(define u-boot-rg35xx-bootloader
|
||||
(bootloader
|
||||
(inherit u-boot-allwinner64-bootloader)
|
||||
(package u-boot-rg35xx)))
|
Loading…
Add table
Reference in a new issue