PKGBUILD 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  1. # U-Boot: sunXi
  2. # Contributor: Isaac David <isacdaavid@at@isacdaavid@dot@info>
  3. # Contributor: André Silva <emulatorman@hyperbola.info>
  4. # Contributor: Timothy Redaelli <timothy.redaelli@gmail.com>
  5. # Contributor: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
  6. # Maintainer: Parabola Hackers <dev@lists.parabola.nu>
  7. # Contributor: Jacob 'KREYREN' Hrbek <kreyren+parabola@fsfe.org>
  8. # NOTE: This PKGBUILD can build bootloaders for both aarch64 and armv7h systems.
  9. # Currently there is no armv7h->aarch64 cross-compiler (#3334);
  10. # and there is no aarch64 system.
  11. # Consequently, only x86_64 builders will package all bootloaders.
  12. # armv7h and aarch64 builders will package only their native bootloaders.
  13. # The x86_64 build uses a metedata hack, to package for multiple arches at once.
  14. # NOTE: The x86_64 build is fastest and most convenient; but remember to rename the
  15. # source package manually before running librerelease, if publishing to Parabola:
  16. # $ src_pkg=$(ls *.src.tar.gz) ; mv ${src_pkg} ${src_pkg%-*}-any.src.tar.gz ;
  17. # To add a new board (that uses an Allwinner System On a Chip) you need:
  18. # - The package name. Example: uboot4extlinux-a20-olinuxino_micro
  19. # - The u-boot configuration. Example: A20-OLinuXino_MICRO_defconfig
  20. # - The name of the board(s). Example: A20 OLinuXino Micro
  21. # A single package / u-boot configuration sometimes support multiple
  22. # boards and the configuration name doesn't always have the boards names
  23. # in it. Example: uboot4extlinux-am335x_bone supports various BeagleBones,
  24. # the AM335x GP EVM and the EVM SK all in one u-boot binary and package.
  25. # - If relevant, the packages it replaces, if there are older u-boot packages
  26. # also supporting that board. Example:uboot-a20-olinuxino-micro
  27. #
  28. # Ideally we'd like to enable people to only add these 4 variables in this
  29. # package to add a new board. These 4 variables could go in something like
  30. # a CVS file that is parsed, but that would require to be able to dynamically
  31. # define packages, but even if eval package_{$_pkgname}() { [...] } works,
  32. # it doesn't make that package function visible to makepkg.
  33. #
  34. # Because of that, contributors wanting to add new boards will have to search
  35. # for example of the information mentioned above and add it in the PKGBUILD
  36. # for their boards.
  37. #
  38. # After adding a new board in this PKGBUILD, to get the board officially
  39. # supported by Parabola.you also need to create a page for it in the
  40. # Parabola wiki for that board and update the ARM installation guide to
  41. # point to it when relevant. Examples of that are available for other
  42. # boards in the ARM installation guide.
  43. # We have a ${pkgver}-${pkgrel} like: '2021.07-r1.parabola3'.
  44. # All of the individual components are needed:
  45. # - '2021.07' corresponds to the upstream u-boot version. It is needed
  46. # to know which u-boot version source code is used.
  47. # - 'r1' corresponds to the u-boot-libre revision. Without that, it would
  48. # be impossible to fix bugs inside the u-boot-libre deblob script.
  49. # - .parabola3 is the Parabola package revision. Without that, it would
  50. # be impossible to fix bugs inside this PKGBUILD.
  51. # As for the '-r1', it cannot go inside pkgver, becasue pkgver is not
  52. # allowed to contain hyphens. So it is in pkgrel instead.
  53. _uboot_ver=2021.07 # version of the upstream u-boot source code
  54. _uboot_ver=2023.01 # FIXME: non-FSDG - The current libreboot uboot depends on 'python2'
  55. _ubootlibre_rev=r1 # revision of the u-boot-libre deblob script
  56. _upstream_name=u-boot-libre
  57. _upstream_name=${_upstream_name/-libre/} # FIXME: non-FSDG - The current libreboot uboot depends on 'python2'
  58. pkgbase=uboot4extlinux-sunxi
  59. pkgname=(${pkgbase})
  60. pkgver=${_uboot_ver}
  61. pkgrel=${_ubootlibre_rev}.parabola1
  62. arch=(aarch64 armv7h x86_64)
  63. url=https://libreboot.org/docs/maintain/#resourcesscriptsbuildreleaseu-boot-libre
  64. url=http://www.denx.de/wiki/U-Boot/WebHome # FIXME: non-FSDG - The current libreboot uboot depends on 'python2'
  65. license=(GPL)
  66. makedepends=(bc dtc python python-setuptools swig)
  67. makedepends_aarch64+=(or1k-elf-gcc)
  68. makedepends_x86_64+=(aarch64-linux-gnu-gcc arm-none-eabi-gcc or1k-elf-gcc)
  69. _tfa_ver=2.8
  70. _crust_ver=0.5
  71. _mirror=https://mirrors.mit.edu/libreboot # use a mirror per libreboot's request
  72. source=(${_mirror}/${_upstream_name}/${_uboot_ver}-${_ubootlibre_rev}/${_upstream_name}-${_uboot_ver}-${_ubootlibre_rev}.tar)
  73. source=(ftp://ftp.denx.de/pub/u-boot/u-boot-${pkgver}.tar.bz2{,.sig} # FIXME: non-FSDG - The current libreboot uboot depends on 'python2'
  74. https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/snapshot/trusted-firmware-a-${_tfa_ver}.tar.gz
  75. crust-${_crust_ver}.tar.gz::https://github.com/crust-firmware/crust/archive/refs/tags/v${_crust_ver}.tar.gz)
  76. source+=(extlinux.conf
  77. ${pkgbase}.hook.in
  78. install-uboot4extlinux.sh.in
  79. generate-${pkgbase}-install-text.sh)
  80. # TODO: the libreboot uboot source-ball checksum doesn't correspond to the one in
  81. # tests/u-boot-libre.sha512. This means that the tarball is not
  82. # reproducible yet. According to diffoscope, the only changes so
  83. # far seems to be some permissions changes:
  84. # │ -drwxr-xr-x [...] 0 1969-12-31 23:00:00.000000 u-boot-libre-2021.07-r1/
  85. # │ +drwxrwxr-x [...] 0 1969-12-31 23:00:00.000000 u-boot-libre-2021.07-r1/
  86. # │ --rw-r--r-- [...] 16576 1969-12-31 23:00:00.000000 u-boot-libre-2021.07-r1/.azure-pipelines.yml
  87. # │ +-rw-rw-r-- [...] 16576 1969-12-31 23:00:00.000000 u-boot-libre-2021.07-r1/.azure-pipelines.yml
  88. # I've not checked if some files were added or not but at least it shows
  89. # only diffs like the one above, and it doesn't show any file content diff.
  90. # TODO: Check the signatures of the released files, not just the content
  91. # TODO: We also need to look into drivers/dma/MCD_tasks.c. The debian
  92. # version of u-boot removes it. It's some data that looks like
  93. # code, so while there is a valid license, we might lack
  94. # corresponding source code if it's really some code. The debian
  95. # commits might have more information about it.
  96. sha256sums=('69423bad380f89a0916636e89e6dcbd2e4512d584308d922d1039d1e4331950f'
  97. 'SKIP'
  98. 'df4e0f3803479df0ea4cbf3330b59731bc2efc2112c951f9adb3685229163af9'
  99. '8b23b2649bbd19dfb84ae00b2419539b8236c6ae9a380beff7dffafd3f41f31b')
  100. sha256sums+=('490d231b23ed369f1515a5da07fca54d8626c97c5883c9748711078b2c518705'
  101. '8442c9b3f4203a867a0682527d166635b48990fd24f333cf1a5ba16243cbd3fc'
  102. '664b85d31da6c181f8b65800936ec48acb4176e0c475fb1767bdb628b2b7fc63'
  103. 'e930fd3c819740364ec173bf477b26ae710f4f2186915e9a1099af69b751d328')
  104. sha256sums+=('736a2c43df14e630a531f82b151ef8bdf70af81c84eb97247a11a411748038be')
  105. validpgpkeys=('1A3C7F70E08FAB1707809BBF147C39FF9634B72C') # Thomas Rini
  106. # armv7h boards
  107. _32bit_pkgnames=(uboot4extlinux-a10-olinuxino-lime
  108. uboot4extlinux-a10s-olinuxino-m
  109. uboot4extlinux-a13-olinuxino
  110. uboot4extlinux-a13-olinuxinom
  111. uboot4extlinux-a20-olinuxino-lime
  112. uboot4extlinux-a20-olinuxino-lime2
  113. uboot4extlinux-a20-olinuxino-lime2-emmc
  114. uboot4extlinux-a20-olinuxino_micro
  115. uboot4extlinux-bananapi
  116. uboot4extlinux-bananapro
  117. uboot4extlinux-chip
  118. uboot4extlinux-cubieboard
  119. uboot4extlinux-cubieboard2
  120. uboot4extlinux-cubietruck
  121. uboot4extlinux-linksprite_pcduino
  122. uboot4extlinux-linksprite_pcduino3
  123. uboot4extlinux-linksprite_pcduino3_nano
  124. uboot4extlinux-orangepi_2
  125. uboot4extlinux-orangepi_one
  126. uboot4extlinux-orangepi_pc
  127. uboot4extlinux-orangepi_plus)
  128. _32bit_defconfigs=(A10-OLinuXino-Lime_defconfig
  129. A10s-OLinuXino-M_defconfig
  130. A13-OLinuXino_defconfig
  131. A13-OLinuXinoM_defconfig
  132. A20-OLinuXino-Lime_defconfig
  133. A20-OLinuXino-Lime2_defconfig
  134. A20-OLinuXino-Lime2-eMMC_defconfig
  135. A20-OLinuXino_MICRO_defconfig
  136. Bananapi_defconfig
  137. Bananapro_defconfig
  138. CHIP_defconfig
  139. Cubieboard_defconfig
  140. Cubieboard2_defconfig
  141. Cubietruck_defconfig
  142. Linksprite_pcDuino_defconfig
  143. Linksprite_pcDuino3_defconfig
  144. Linksprite_pcDuino3_Nano_defconfig
  145. orangepi_2_defconfig
  146. orangepi_one_defconfig
  147. orangepi_pc_defconfig
  148. orangepi_plus_defconfig)
  149. # aarch64 boards
  150. _64bit_pkgnames=(uboot4extlinux-teres_i)
  151. _64bit_defconfigs=(teres_i_defconfig)
  152. # DEBUG: build only one package per-arch
  153. # _pkg=orangepi_plus ; _32bit_defconfigs=(${_pkg}_defconfig) ; _32bit_pkgnames=(uboot4extlinux-${_pkg}) ;
  154. # _32bit_defconfigs=() ; _32bit_pkgnames=() ; # DEBUG: build only aarch64 bootloaders
  155. # allow native compiling and cross-compiling from x86_64
  156. case "$CARCH" in
  157. aarch64) pkgname+=( ${_64bit_pkgnames[*]} ) _32bit_defconfigs=() ;; # package only aarch64 bootloaders
  158. armv7h ) pkgname+=( ${_32bit_pkgnames[*]} ) _64bit_defconfigs=() ;; # package only armv7h bootloaders
  159. x86_64 ) pkgname+=( ${_32bit_pkgnames[*]} )
  160. pkgname+=( ${_64bit_pkgnames[*]} ) ;; # package all bootloaders
  161. esac
  162. # Byte-offset at which to install the bootloader
  163. BOOTLOADER_BYTE_OFFSET=8192
  164. ## helpers ##
  165. _get_target_name() # (defconfig)
  166. {
  167. local defconfig=${1/_defconfig/} ; printf ${defconfig,,} ;
  168. }
  169. _get_target_destdir() # (defconfig)
  170. {
  171. local defconfig=$1
  172. local target_name=$(_get_target_name ${defconfig})
  173. # NOTE: this path is relative to "${srcdir}"/${_upstream_name}-${_uboot_ver}/
  174. printf "build/uboot4extlinux-${target_name}"
  175. }
  176. _for_each_defconfig() # (fn_name action_msg defconfigs*)
  177. {
  178. local fn_name=$1
  179. local action_msg=$2
  180. local defconfigs=( ${*:3} )
  181. local defconfig
  182. local target_n=0
  183. local target_name
  184. for defconfig in ${defconfigs[*]}
  185. do target_n=$(( _target_n + 1 ))
  186. target_name="$(_get_target_name ${defconfig})"
  187. echo " -> ${action_msg} target (${target_n} of ${#defconfigs[*]}): ${target_name}"
  188. ${fn_name} ${defconfig}
  189. done
  190. }
  191. _build_A64_firmware()
  192. {
  193. ## compile trusted-firmware-a ##
  194. local tfa_srcdir="${srcdir}"/trusted-firmware-a-${_tfa_ver}
  195. local tfa_outdir="${tfa_srcdir}"/build/sun50i_a64/release/
  196. cd "${tfa_srcdir}"
  197. echo " -> Building trusted-firmware-a"
  198. make PLAT=sun50i_a64
  199. cp "${tfa_outdir}"/bl31/bl31.elf "${srcdir}"/${_upstream_name}-${_uboot_ver}
  200. export BL31="${tfa_outdir}"/bl31.bin
  201. ## compile crust ##
  202. local crust_srcdir="${srcdir}"/crust-${_crust_ver}
  203. local crust_outdir="${crust_srcdir}"/build/scp
  204. export ARCH=or1k
  205. export CROSS_COMPILE=or1k-elf-
  206. cd "${crust_srcdir}"
  207. echo " -> Building crust"
  208. make pine64_plus_defconfig # yes, this is for generic A64
  209. make scp
  210. export SCP="${crust_outdir}"/scp.bin
  211. # export SCP=/dev/null # disable crust (if necessary)
  212. export ARCH=arm
  213. export CROSS_COMPILE=aarch64-linux-gnu-
  214. }
  215. _build_uboot_target() # (defconfig)
  216. {
  217. local defconfig=$1
  218. local destdir="$( _get_target_destdir ${defconfig})"
  219. local target_name=$(_get_target_name ${defconfig})
  220. ## compile uboot ##
  221. cd "${srcdir}"/${_upstream_name}-${_uboot_ver}
  222. echo " -> Building ${_upstream_name}"
  223. make distclean
  224. make "${defconfig}"
  225. echo 'CONFIG_IDENT_STRING=" Parabola GNU/Linux-libre"' >> .config
  226. make EXTRAVERSION="-${_ubootlibre_rev/r/}"
  227. echo " -> Installing ${target_name} to ${destdir}"
  228. install -d ${destdir}
  229. mv -f u-boot-sunxi-with-spl.bin "${destdir}"
  230. }
  231. _check_uboot_target() # (defconfig)
  232. {
  233. cd "${srcdir}"/${_upstream_name}-${_uboot_ver}
  234. local defconfig=$1
  235. local image=$(_get_target_destdir ${defconfig})/u-boot-sunxi-with-spl.bin
  236. local image_size=$(du --bytes --apparent-size ${image} | cut -d ' ' -f 1)
  237. local offset=${BOOTLOADER_BYTE_OFFSET}
  238. local image_end=$(( image_size + offset ))
  239. # NOTE: This check corresponds to a check in install-uboot4extlinux.sh.in
  240. if (( ! image_size || image_end >= 1024 * 1024 )) ; then
  241. echo "Error: ${image} is too large:"
  242. echo " offset: ${offset}"
  243. echo " size: ${image_size}"
  244. echo " Typically, partitioning tools begin partitioning at 1MiB."
  245. echo " Installing ${image} may overwrite an existing partition."
  246. false # Fail the check
  247. fi
  248. }
  249. # metedata hack, to package for multiple arches at once
  250. _package_aarch64() { CARCH=armv7h ; _package "${@}" ; } # TODO: CARCH=aarch64 eventually
  251. _package_armv7h() { CARCH=armv7h ; _package "${@}" ; }
  252. _package() # (pkg_name "board_name")
  253. {
  254. local pkg_name=$1
  255. local board_name="$2"
  256. local lib_dir=/usr/lib/u-boot/${pkg_name}
  257. local hooks_dir="${pkgdir}"/usr/share/libalpm/hooks
  258. local docs_dir="${pkgdir}"/usr/share/doc/u-boot/${pkg_name}
  259. local install_dir="${pkgdir}"${lib_dir}
  260. local bin_name=u-boot-sunxi-with-spl.bin
  261. local install_script=install-uboot4extlinux.sh
  262. local install_text=install-uboot4extlinux.txt
  263. pkgdesc="U-Boot with Extlinux support for ${board_name}"
  264. depends=("${pkgbase}=${pkgver}-${pkgrel}")
  265. depends+=(util-linux) # $install_script needs 'util-linux' for `blkid`
  266. cd "${srcdir}"/${_upstream_name}-${_uboot_ver}
  267. # Install the u-boot binary
  268. install -d "${install_dir}"/
  269. install -Dm644 build/${pkg_name}/${bin_name} "${install_dir}"
  270. # Install the u-boot installation script
  271. sed < "${srcdir}"/${install_script}.in \
  272. > "${install_dir}"/${install_script} \
  273. -e "s|@u_boot_with_spl[@]|${lib_dir}/${bin_name}|g" \
  274. -e "s|@u_boot_with_spl_offset[@]|${BOOTLOADER_BYTE_OFFSET}|g"
  275. chmod +x "${install_dir}"/${install_script}
  276. # Install what is required for the pacman hook
  277. install -d "${hooks_dir}"/
  278. sed < "${srcdir}/"${pkgbase}.hook.in \
  279. > "${hooks_dir}"/${pkg_name}.hook \
  280. -e "s|@pkgname[@]|${pkg_name}|g"
  281. # If we install several uboot4extlinux, we need a way to clearly
  282. # separate each postinstall message. To do that we wrapped the
  283. # text in an ASCII art square, but doing that is complicated when
  284. # using sed as the package name as well as the installation script
  285. # path both have variable length.
  286. install -d "${docs_dir}"/
  287. sh "${srcdir}"/generate-${pkgbase}-install-text.sh \
  288. ${pkg_name} ${pkgbase} ${lib_dir}/${install_script} \
  289. > "${docs_dir}"/${install_text}
  290. }
  291. ## business ##
  292. prepare()
  293. {
  294. cd "${srcdir}"/${_upstream_name}-${_uboot_ver}
  295. # TODO: We need to fix the timestamps upstream to a valid date
  296. # (like the first January 1970at 01:00:00 CET) or something derived
  297. # from the release version somehow. Else we have the build log spammed
  298. # with errors like that:
  299. # make: scripts/Makefile.extrawarn: Timestamp out of range;
  300. # substituting 1970-01-01 00:59:59.999999999
  301. # TODO: While we're at it we could export SOURCE_DATE_SPOCH to try to
  302. # make the u-boot package reporducible.
  303. find -print0 | xargs -0r touch --no-dereference --date="@${SOURCE_DATE_EPOCH}"
  304. }
  305. build()
  306. {
  307. ## build 32-bit targets ##
  308. # Prepare the 32-bit cross-compilation environment, if needed
  309. export ARCH=arm ; [[ "${CARCH}" != x86_64 ]] || export CROSS_COMPILE=arm-none-eabi- ;
  310. unset CFLAGS CXXFLAGS LDFLAGS
  311. _for_each_defconfig _build_uboot_target "Building 32-bit" ${_32bit_defconfigs[*]}
  312. ## build 64-bit targets ##
  313. # Prepare the 64-bit cross-compilation environment, if needed
  314. export ARCH=arm ; [[ "${CARCH}" != x86_64 ]] || export CROSS_COMPILE=aarch64-linux-gnu- ;
  315. # both uboot and the 64-bit firmwares FTBS with the default CFLAGS and LDFLAGS
  316. # * Assembler messages: Error: unrecognized option -march=x86-64
  317. # * cc1: error: unknown value 'x86-64' for '-march'
  318. # * cc1: error: '-fcf-protection=full' is not supported for this target
  319. export CFLAGS='-march=armv8-a -mtune=cortex-a53 -fcf-protection=check'
  320. # * aarch64-linux-gnu-ld.bfd: unrecognized option '-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
  321. unset LDFLAGS
  322. # * aarch64-linux-gnu-ld.bfd: warning: bl31.elf has a LOAD segment with RWX permissions
  323. # * aarch64-linux-gnu-ld.bfd: warning: u-boot-spl has a LOAD segment with RWX permissions
  324. export LDFLAGS='--no-warn-rwx-segments'
  325. (( ! ${#_64bit_defconfigs[*]} )) || _build_A64_firmware
  326. _for_each_defconfig _build_uboot_target "Building 64-bit" ${_64bit_defconfigs[*]}
  327. }
  328. check()
  329. {
  330. _for_each_defconfig _check_uboot_target "Testing 32-bit" ${_32bit_defconfigs[*]}
  331. _for_each_defconfig _check_uboot_target "Testing 64-bit" ${_64bit_defconfigs[*]}
  332. }
  333. package_uboot4extlinux-sunxi()
  334. {
  335. CARCH=any
  336. pkgdesc="Scripts for managing U-Boot installations for computers with Allwinner System On a Chip"
  337. depends=(${_upstream_name/u-boot/uboot/}-tools=${_uboot_ver})
  338. local dest_dir="${pkgdir}"/usr/lib/u-boot/${pkgname}
  339. # Users are expected to use this as an example for /boot/extlinux/extlinux.conf
  340. install -d "${dest_dir}"/
  341. install -Dm644 "${srcdir}"/extlinux.conf "${dest_dir}"/extlinux.conf
  342. }
  343. package_uboot4extlinux-a10-olinuxino-lime() { _package_armv7h ${pkgname} "A10 OLinuXino Lime" ; }
  344. package_uboot4extlinux-a10s-olinuxino-m()
  345. {
  346. replaces=('uboot4extlinux-a10s-olinuxino-micro')
  347. _package_armv7h ${pkgname} "A10s OLinuXino Micro"
  348. }
  349. package_uboot4extlinux-a13-olinuxino() { _package_armv7h ${pkgname} "A13 OLinuXino" ; }
  350. package_uboot4extlinux-a13-olinuxinom()
  351. {
  352. replaces=('uboot4extlinux-a13-olinuxino-micro')
  353. _package_armv7h ${pkgname} "A13 OLinuXino Micro"
  354. }
  355. package_uboot4extlinux-a20-olinuxino-lime() { _package_armv7h ${pkgname} "A20 OLinuXino Lime" ; }
  356. package_uboot4extlinux-a20-olinuxino-lime2() { _package_armv7h ${pkgname} "A20 OLinuXino Lime2" ; }
  357. package_uboot4extlinux-a20-olinuxino-lime2-emmc() { _package_armv7h ${pkgname} "A20 OLinuXino Lime2 with eMMC" ; }
  358. package_uboot4extlinux-a20-olinuxino_micro()
  359. {
  360. replaces=('uboot-a20-olinuxino-micro')
  361. _package_armv7h ${pkgname} "A20 OLinuXino Micro"
  362. }
  363. package_uboot4extlinux-bananapi() { _package_armv7h ${pkgname} "Banana Pi" ; }
  364. package_uboot4extlinux-bananapro() { _package_armv7h ${pkgname} "Banana Pro" ; }
  365. package_uboot4extlinux-chip() { _package_armv7h ${pkgname} "C.H.I.P" ; }
  366. package_uboot4extlinux-cubieboard() { _package_armv7h ${pkgname} "Cubieboard" ; }
  367. package_uboot4extlinux-cubieboard2() { _package_armv7h ${pkgname} "Cubieboard 2" ; }
  368. package_uboot4extlinux-cubietruck() { _package_armv7h ${pkgname} "Cubietruck" ; }
  369. package_uboot4extlinux-linksprite_pcduino()
  370. {
  371. replaces=('uboot4extlinux-pcduino')
  372. _package_armv7h ${pkgname} "pcduino"
  373. }
  374. package_uboot4extlinux-linksprite_pcduino3()
  375. {
  376. replaces=('uboot4extlinux-pcduino3')
  377. _package_armv7h ${pkgname} "pcduino3"
  378. }
  379. package_uboot4extlinux-linksprite_pcduino3_nano()
  380. {
  381. replaces=('uboot4extlinux-pcduino3-nano')
  382. _package_armv7h ${pkgname} "pcduino3-nano"
  383. }
  384. package_uboot4extlinux-orangepi_2() { _package_armv7h ${pkgname} "Orange Pi 2" ; }
  385. package_uboot4extlinux-orangepi_one() { _package_armv7h ${pkgname} "Orange Pi One" ; }
  386. package_uboot4extlinux-orangepi_pc() { _package_armv7h ${pkgname} "Orange Pi PC" ; }
  387. package_uboot4extlinux-orangepi_plus() { _package_armv7h ${pkgname} "Orange Pi Plus" ; }
  388. package_uboot4extlinux-teres_i() { _package_aarch64 ${pkgname} "A64 OLIMEX Teres" ; }