summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/uboot4extlinux-sunxi/PKGBUILD271
1 files changed, 66 insertions, 205 deletions
diff --git a/libre/uboot4extlinux-sunxi/PKGBUILD b/libre/uboot4extlinux-sunxi/PKGBUILD
index 22cd02aa2..a33df8fdd 100644
--- a/libre/uboot4extlinux-sunxi/PKGBUILD
+++ b/libre/uboot4extlinux-sunxi/PKGBUILD
@@ -31,6 +31,7 @@
# point to it when relevant. Examples of that are available for other
# boards in the ARM installation guide.
+_pkgbase=u-boot-libre
pkgbase=uboot4extlinux-sunxi
pkgname=("${pkgbase}"
'uboot4extlinux-a10-olinuxino-lime'
@@ -55,27 +56,67 @@ pkgname=("${pkgbase}"
'uboot4extlinux-orangepi_pc'
'uboot4extlinux-orangepi_plus')
-pkgver=2021.07
-pkgrel=3
+# We have a ${pkgver}-${pkgrel} that looks like that:
+# '2021.07-r1.parabola3' and all the individual components are needed:
+# - '2021.07' corresponds to the upstream u-boot version. It is needed
+# to know which u-boot version source code is used.
+# - 'r1' corresponds to the u-boot-libre revision. Without it it would
+# be impossible to fix bugs inside the u-boot-libre deblob script.
+# - .parabola3 is the Parabola package revision. Without it it would be
+# impossible to fix bugs inside this PKGBUILD.
+# As for the '-r1', it cannot go inside pkgver, else we end up with an
+# error like that when running makepkg:
+# ==> ERROR: pkgver is not allowed to contain colons, forward slashes,
+# hyphens or whitespace.
+# so it was moved in pkgrel.
+_pkgver=2021.07
+_pkgrel=r1
+
+pkgver="${_pkgver}"
+pkgrel="${_pkgrel}.parabola3"
+
arch=('armv7h' 'i686' 'x86_64')
-url="http://git.denx.de/u-boot.git/"
+url="https://libreboot.org/docs/maintain/#resourcesscriptsbuildreleaseu-boot-libre"
license=('GPL')
makedepends=('bc' 'dtc' 'python' 'python-setuptools' 'python2' 'swig')
makedepends_i686+=('arm-none-eabi-gcc')
makedepends_ppc64le+=('arm-none-eabi-gcc')
makedepends_x86_64+=('arm-none-eabi-gcc')
-mksource=("ftp://ftp.denx.de/pub/u-boot/u-boot-${pkgver}.tar.bz2")
-noextract=("u-boot-${pkgver}.tar.bz2")
-mksha256sums=('312b7eeae44581d1362c3a3f02c28d806647756c82ba8c72241c7cdbe68ba77e')
-source=('extlinux.conf'
+# According to the Libreboot maintainer, we are supposed to use
+# any of the mirrors in https://libreboot.org/download.html#https
+# and not use the rsync server. The rsync server is only supposed
+# to be used by mirrors as it has limited bandwith.
+_mirror="https://mirrors.mit.edu/libreboot/"
+source=("${_mirror}/${_pkgbase}/${_pkgver}-${_pkgrel}/${_pkgbase}-${_pkgver}-${_pkgrel}.tar")
+
+# TODO: this checksum doesn't correspond to the one in
+# tests/u-boot-libre.sha512. This means that the tarball is not
+# reproducible yet. According to diffoscope, the only changes so
+# far seems to be some permissions changes:
+# │ -drwxr-xr-x [...] 0 1969-12-31 23:00:00.000000 u-boot-libre-2021.07-r1/
+# │ +drwxrwxr-x [...] 0 1969-12-31 23:00:00.000000 u-boot-libre-2021.07-r1/
+# │ --rw-r--r-- [...] 16576 1969-12-31 23:00:00.000000 u-boot-libre-2021.07-r1/.azure-pipelines.yml
+# │ +-rw-rw-r-- [...] 16576 1969-12-31 23:00:00.000000 u-boot-libre-2021.07-r1/.azure-pipelines.yml
+# I've not checked if some files were added or not but at least it
+# shows only diffs like the one above, and it doesn't show any file
+# content diff.
+# TODO: Check the signatures of the released files, not just the content
+# TODO: We also need to look into drivers/dma/MCD_tasks.c. The debian
+# version of u-boot removes it. It's some data that looks like
+# code, so while there is a valid license, we might lack
+# corresponding source code if it's really some code. The debian
+# commits might have more information about it.
+sha512sums=('4fd4cb762efd6b3e1eede883ee44cbf16f787de7f9bd8d6f9a98d69a22fd75519cce4b9ff713b205d34854597d2f9d6053dabc6097e55cb5be7c7ce71dae2ef6')
+
+source+=('extlinux.conf'
"${pkgbase}.hook.in"
'install-uboot4extlinux.sh.in'
"generate-${pkgbase}-install-text.sh")
-sha256sums=('SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP')
+sha512sums+=('SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP')
_defconfigs=('A10-OLinuXino-Lime_defconfig'
'A10s-OLinuXino-M_defconfig'
@@ -157,203 +198,23 @@ _build_uboot_target()
}
-mksource()
+# TODO: We need to fix the timestamps upstream to a valid date
+# (like the first January 1970at 01:00:00 CET) or something derived
+# from the release version somehow. Else we have the build log spammed
+# with errors like that:
+# make: scripts/Makefile.extrawarn: Timestamp out of range;
+# substituting 1970-01-01 00:59:59.999999999
+# TODO: While we're at it we could export SOURCE_DATE_SPOCH to try to
+# make the u-boot package reporducible.
+prepare()
{
- cd u-boot-${pkgver}
-
- # The licenses of some microcodes are nonfree because the header contains the
- # following: ".No reverse engineering, decompilation, or disassembly of this
- # software is permitted."
- rm -rf arch/x86/dts/microcode/
-
- # The license is nonfree because it contains the following: "Reverse
- # engineering, decompilation, or disassembly of this software is not
- # permitted."
- rm -f Licenses/r8a779x_usb3.txt
- rm -f drivers/usb/host/xhci-rcar-r8a779x_usb3_v3.h
-
- # The documentation contains instructions to download and install nonfree
- # software. Note that if a board doesn't have such instructions it doesn't
- # necessarily means that it can boot with only free software and viceversa.
-
- ###########
- # Amlogic #
- ###########
- # Amlogic SOCs Usually have various nonfree components, like the first stages
- # of the bootloaders and code that runs in TrustZone. They are most likely
- # not signed.
- # ---------
- # TODO: List the nonfree software of specific documentation
- rm -f doc/board/amlogic/beelink-gtkingpro.rst
- rm -f doc/board/amlogic/beelink-gtking.rst
- rm -f doc/board/amlogic/index.rst
- rm -f doc/board/amlogic/khadas-vim2.rst
- rm -f doc/board/amlogic/khadas-vim3l.rst
- rm -f doc/board/amlogic/khadas-vim3.rst
- rm -f doc/board/amlogic/khadas-vim.rst
- rm -f doc/board/amlogic/libretech-ac.rst
- rm -f doc/board/amlogic/libretech-cc.rst
- rm -f doc/board/amlogic/nanopi-k2.rst
- rm -f doc/board/amlogic/odroid-c2.rst
- rm -f doc/board/amlogic/odroid-c4.rst
- rm -f doc/board/amlogic/odroid-n2.rst
- rm -f doc/board/amlogic/p200.rst
- rm -f doc/board/amlogic/p201.rst
- rm -f doc/board/amlogic/p212.rst
- rm -f doc/board/amlogic/q200.rst
- rm -f doc/board/amlogic/s400.rst
- rm -f doc/board/amlogic/sei510.rst
- rm -f doc/board/amlogic/sei610.rst
- rm -f doc/board/amlogic/u200.rst
- rm -f doc/board/amlogic/w400.rst
- rm -f doc/board/amlogic/wetek-core2.rst
-
- #########
- # Linux #
- #########
- # Has intructions to build Linux which is not FSDG compliant.
- # TODO: Use linux-libre instead, especially because documentation about vboot
- # could be interesting to have. Vboot is a chain of trust that can work with
- # only free software. The hardware root of trust can be created by booting on
- # a flash chip whose security registers are configured to set the first
- # bootloader component read-only.
- rm -f doc/uImage.FIT/beaglebone_vboot.txt
- # Steers very strongly users into using Linux as it shows that the only tested
- # kernels are Broadcom forks of Linux. We would need to have linux-libre
- # versions of these or test it with stock linux-libre instead.
- rm -f doc/README.bcm7xxx
-
- ############
- # Mediatek #
- ############
- # The instructions uses binaries that lack any corresponding source code.
- rm -f doc/README.mediatek
-
- #############
- # NXP I.MX8 #
- #############
- # I.MX8 SOCs require a nonfree firmware for the DDR4 controller. In some
- # documentation, I didn't find that requirement mentioned, but instead
- # there are still nonfree files mentioned. So I assume that they might
- # somehow contain code for that nonfree DDR4 controller, but it might be
- # worth checking if it's the case or not. The DDR4 controller firmware is not
- # signed. In addition the I.MX8 HDMI controller requires a signed firmware.
- # -----------
- # nonfree DDR4 controller firmware
- rm -f doc/board/freescale/imx8mp_evk.rst
- # nonfree DDR4 controller and HDMI firmwares
- rm -f doc/board/freescale/imx8mq_evk.rst
- # nonfree DDR4 controller firmware
- rm -f doc/board/freescale/imx8mn_evk.rst
- # nonfree imx-sc-firmware-1.2.7.1.bin and imx-seco-2.3.1.bin firmwares
- rm -f doc/board/freescale/imx8qxp_mek.rst
- # nonfree DDR4 controller firmware
- rm -f doc/board/freescale/imx8mm_evk.rst
- # nonfree imx-sc-firmware-1.1.bin and firmware-imx-8.0.bin firmwares
- rm -f doc/board/advantech/imx8qm-rom7720-a1.rst
- # TODO
- rm -f doc/board/verdin-imx8mm.rst
- rm -f doc/board/toradex/colibri-imx8x.rst
- rm -f doc/board/toradex/apalix-imx8x.rst
- rm -f doc/board/toradex/apalix-imx8.rst
-
- #######################
- # NXP nonfree srktool #
- #######################
- # The SRK tool is a tool that is involved in one way or another with
- # authenticated or encrypted boot. I'm unsure if free software replacements
- # exists or if could easily be replaced with a free software implementation.
- # In any case the I.MX6 and I.MX5 can proabably be setup for encrypted or
- # authenticated boot with free software tools. The first and second versions
- # of the USB Armory has documentation on how to do that.
- # ---------------------
- rm -f doc/imx/board/toradex/colibri_imx7.rst
- rm -f doc/imx/habv4/introduction_habv4.txt
-
- ##################
- # Samsung Exynos #
- ##################
- # The instructions makes users nonfree components like a nonfree first stage
- # bootloaders, and nonfree code that runs in TrustZone.
- rm -f doc/README.odroid
- # The instructions makes its users download an image and update u-boot in that
- # image. Because of that, it's extremely likely that the images contains
- # nonfree components that cannot even be redistributed in another form, and
- # that the instructions uses that images because of that.
- rm -f doc/README.s5p4418
-
- #####################
- # Texas Instruments #
- #####################
- # Users are expected to use nonfree tools and even sign an NDA to get access
- # to them.
- rm -f doc/README.ti-secure
-
- ###########
- # Unknown #
- ###########
- # Everything looks free software, but the code still needs to be reviewed.
- rm -f doc/board/microchip/mpfs_icicle.rst
- # OP-TEE is under a free software license but its code needs to be reviewed.
- rm -f doc/README.tee
- # The tutorial has instructions to download a downstream u-boot, so it might
- # have the same issues than u-boot itself if the u-boot is recent enough.
- rm -f doc/chromium/run_vboot.rst
-
- #######
- # x86 #
- #######
- # Unless the computer is supported by Libreboot, or that u-boot runs after
- # some other nonfree boot software like a BIOS or UEFI, it's unlikely to be
- # able to run with only free software. Though I'm pretty sure that some
- # exceptions do exists, but they are probably not supported by u-boot.
- # -----
- # nonfree Management Engine firmware, RAM intialization code, and video BIOS
- rm -f doc/board/google/chromebook_link.rst
- # nonfree SDRAM and hardware intialization code
- rm -f doc/board/google/chromebook_coral.rst
-
- # nonfree FSP, video BIOS, Management Engine firmware
- rm -f doc/board/intel/minnowmax.rst
- # nonfree FSP, Chipset Micro Code (CMC), microcode
- rm -f doc/board/intel/crownbay.rst
-
- # TODO: check
- # board/intel/edison.rst
- # Steers userstoward using nonfree FSP
- rm -f board/intel/slimbootloader.rst
-
- # Steers users and developers toward using nonfree FSP
- rm -f doc/device-tree-bindings/fsp/fsp2/apollolake/fsp-m.txt
-
- # Steers users and developers toward using nonfree FSP
- rm -f doc/device-tree-bindings/fsp/fsp2/apollolake/fsp-s.txt
-
- ############
- # Rockchip #
- ############
- # rkbin binaries without license nor source code
- rm -f doc/board/rockchip/rockchip.rst
-
- # TODO: check the following files
- # imx/common/mxs.txt
- # README.armada-secureboot
- # README.fdt-control
- # README.fsl-ddr
- # README.m54418twr
- # README.marvell
- # README.mpc85xxcds
- # README.mpc85xx-sd-spi-boot
- # README.OFT
- # README.rmobile
- # README.rockchip
- # README.rockusb
- # README.socfpga
+ cd "${_pkgbase}-${_pkgver}-${_pkgrel}"
+ find -print0 | xargs -0r touch --no-dereference --date="@${SOURCE_DATE_EPOCH}"
}
build()
{
- cd u-boot-${pkgver}
+ cd "${_pkgbase}-${_pkgver}-${_pkgrel}"
_target_nr=0
for _defconfig in ${_defconfigs[@]}; do
@@ -393,7 +254,7 @@ _check_uboot_target()
check()
{
- cd u-boot-${pkgver}
+ cd "${_pkgbase}-${_pkgver}-${_pkgrel}"
_target_nr=0
for _defconfig in ${_defconfigs[@]}; do
@@ -412,7 +273,7 @@ _make_uboot_package()
_pkgname="$1"
if [ -n "${pkgdir}" ] ; then
- cd "u-boot-${pkgver}"
+ cd "${_pkgbase}-${_pkgver}-${_pkgrel}"
# Install the u-boot binary
install -d "${pkgdir}/usr/lib/u-boot/${_pkgname}/"