Merge branch '2019-10-28-azure-ci-support'

- Clean up Travis-CI slightly and then add support for Microsoft Azure
  pipelines, all from Bin Meng.
This commit is contained in:
Tom Rini 2019-10-30 09:05:13 -04:00
commit ba742b839c
20 changed files with 578 additions and 79 deletions

420
.azure-pipelines.yml Normal file
View File

@ -0,0 +1,420 @@
variables:
windows_vm: vs2015-win2012r2
ubuntu_vm: ubuntu-18.04
ci_runner_image: trini/u-boot-gitlab-ci-runner:bionic-20190912.1-03Oct2019
# Add '-u 0' options for Azure pipelines, otherwise we get "permission
# denied" error when it tries to "useradd -m -u 1001 vsts_azpcontainer",
# since our $(ci_runner_image) user is not root.
container_option: -u 0
work_dir: /u
jobs:
- job: tools_only_windows
displayName: 'Ensure host tools build for Windows'
pool:
vmImage: $(windows_vm)
strategy:
matrix:
i686:
MSYS_DIR: msys32
BASE_REPO: msys2-ci-base-i686
x86_64:
MSYS_DIR: msys64
BASE_REPO: msys2-ci-base
steps:
- script: |
git clone https://github.com/msys2/$(BASE_REPO).git %CD:~0,2%\$(MSYS_DIR)
displayName: 'Install MSYS2'
- script: |
set PATH=%CD:~0,2%\$(MSYS_DIR)\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
%CD:~0,2%\$(MSYS_DIR)\usr\bin\pacman --noconfirm -Syyuu
displayName: 'Update MSYS2'
- script: |
set PATH=%CD:~0,2%\$(MSYS_DIR)\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
%CD:~0,2%\$(MSYS_DIR)\usr\bin\pacman --noconfirm --needed -S make gcc bison diffutils openssl-devel
displayName: 'Install Toolchain'
- script: |
set PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
echo make tools-only_defconfig tools-only NO_SDL=1 > build-tools.sh
%CD:~0,2%\$(MSYS_DIR)\usr\bin\bash -lc "bash build-tools.sh"
displayName: 'Build Host Tools'
env:
# Tell MSYS2 we need a POSIX emulation layer
MSYSTEM: MSYS
# Tell MSYS2 not to cd our startup directory to HOME
CHERE_INVOKING: yes
- job: cppcheck
displayName: 'Static code analysis with cppcheck'
pool:
vmImage: $(ubuntu_vm)
container:
image: $(ci_runner_image)
options: $(container_option)
steps:
- script: cppcheck --force --quiet --inline-suppr .
- job: todo
displayName: 'Search for TODO within source tree'
pool:
vmImage: $(ubuntu_vm)
container:
image: $(ci_runner_image)
options: $(container_option)
steps:
- script: grep -r TODO .
- script: grep -r FIXME .
- script: grep -r HACK . | grep -v HACKKIT
- job: sloccount
displayName: 'Some statistics about the code base'
pool:
vmImage: $(ubuntu_vm)
container:
image: $(ci_runner_image)
options: $(container_option)
steps:
- script: sloccount .
- job: maintainers
displayName: 'Ensure all configs have MAINTAINERS entries'
pool:
vmImage: $(ubuntu_vm)
container:
image: $(ci_runner_image)
options: $(container_option)
steps:
- script: |
if [ `./tools/genboardscfg.py -f 2>&1 | wc -l` -ne 0 ]; then exit 1; fi
- job: tools_only
displayName: 'Ensure host tools build'
pool:
vmImage: $(ubuntu_vm)
container:
image: $(ci_runner_image)
options: $(container_option)
steps:
- script: |
make tools-only_config tools-only -j$(nproc)
- job: envtools
displayName: 'Ensure env tools build'
pool:
vmImage: $(ubuntu_vm)
container:
image: $(ci_runner_image)
options: $(container_option)
steps:
- script: |
make tools-only_config envtools -j$(nproc)
- job: utils
displayName: 'Run binman, buildman, dtoc and patman testsuites'
pool:
vmImage: $(ubuntu_vm)
steps:
- script: |
cat << EOF > build.sh
set -ex
cd ${WORK_DIR}
EOF
cat << "EOF" >> build.sh
git config --global user.name "Azure Pipelines"
git config --global user.email bmeng.cn@gmail.com
export USER=azure
virtualenv /tmp/venv
. /tmp/venv/bin/activate
pip install pyelftools
export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/sandbox_spl
export PYTHONPATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt
export PATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}
./tools/buildman/buildman -o /tmp -P sandbox_spl
./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test
./tools/buildman/buildman -t
./tools/dtoc/dtoc -t
./tools/patman/patman --test
EOF
cat build.sh
# We cannot use "container" like other jobs above, as buildman
# seems to hang forever with pre-configured "container" environment
docker run -v $PWD:$(work_dir) $(ci_runner_image) /bin/bash $(work_dir)/build.sh
- job: test_py
displayName: 'test.py'
pool:
vmImage: $(ubuntu_vm)
strategy:
matrix:
sandbox:
TEST_PY_BD: "sandbox"
BUILDMAN: "^sandbox$"
sandbox_spl:
TEST_PY_BD: "sandbox_spl"
TEST_PY_TEST_SPEC: "test_ofplatdata"
BUILDMAN: "^sandbox_spl$"
sandbox_flattree:
TEST_PY_BD: "sandbox_flattree"
BUILDMAN: "^sandbox_flattree$"
evb_ast2500:
TEST_PY_BD: "evb-ast2500"
TEST_PY_ID: "--id qemu"
BUILDMAN: "^evb-ast2500$"
vexpress_ca15_tc2:
TEST_PY_BD: "vexpress_ca15_tc2"
TEST_PY_ID: "--id qemu"
BUILDMAN: "^vexpress_ca15_tc2$"
vexpress_ca9x4:
TEST_PY_BD: "vexpress_ca9x4"
TEST_PY_ID: "--id qemu"
BUILDMAN: "^vexpress_ca9x4$"
integratorcp_cm926ejs:
TEST_PY_BD: "integratorcp_cm926ejs"
TEST_PY_ID: "--id qemu"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^integratorcp_cm926ejs$"
qemu_arm:
TEST_PY_BD: "qemu_arm"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_arm$"
qemu_arm64:
TEST_PY_BD: "qemu_arm64"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_arm64$"
qemu_mips:
TEST_PY_BD: "qemu_mips"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mips$"
qemu_mipsel:
TEST_PY_BD: "qemu_mipsel"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mipsel$"
qemu_mips64:
TEST_PY_BD: "qemu_mips64"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mips64$"
qemu_mips64el:
TEST_PY_BD: "qemu_mips64el"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu_mips64el$"
qemu_ppce500:
TEST_PY_BD: "qemu-ppce500"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-ppce500$"
qemu_riscv64:
TEST_PY_BD: "qemu-riscv64"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-riscv64$"
qemu_x86:
TEST_PY_BD: "qemu-x86"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-x86$"
qemu_x86_64:
TEST_PY_BD: "qemu-x86_64"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^qemu-x86_64$"
zynq_zc702:
TEST_PY_BD: "zynq_zc702"
TEST_PY_ID: "--id qemu"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^zynq_zc702$"
xilinx_versal_virt:
TEST_PY_BD: "xilinx_versal_virt"
TEST_PY_ID: "--id qemu"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^xilinx_versal_virt$"
xtfpga:
TEST_PY_BD: "xtfpga"
TEST_PY_ID: "--id qemu"
TEST_PY_TEST_SPEC: "not sleep"
BUILDMAN: "^xtfpga$"
steps:
- script: |
cat << EOF > test.sh
set -ex
# make environment variables available as tests are running inside a container
export WORK_DIR="${WORK_DIR}"
export TEST_PY_BD="${TEST_PY_BD}"
export TEST_PY_ID="${TEST_PY_ID}"
export TEST_PY_TEST_SPEC="${TEST_PY_TEST_SPEC}"
export BUILDMAN="${BUILDMAN}"
EOF
cat << "EOF" >> test.sh
# the below corresponds to .gitlab-ci.yml "before_script"
cd ${WORK_DIR}
git clone --depth=1 git://github.com/swarren/uboot-test-hooks.git /tmp/uboot-test-hooks
ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname`
ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname`
virtualenv /tmp/venv
. /tmp/venv/bin/activate
pip install pytest==2.8.7
pip install python-subunit
pip install coverage
grub-mkimage --prefix=\"\" -o ~/grub_x86.efi -O i386-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
grub-mkimage --prefix=\"\" -o ~/grub_x64.efi -O x86_64-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
mkdir ~/grub2-arm
cd ~/grub2-arm; wget -O - http://download.opensuse.org/ports/armv7hl/distribution/leap/42.2/repo/oss/suse/armv7hl/grub2-arm-efi-2.02~beta2-87.1.armv7hl.rpm | rpm2cpio | cpio -di
mkdir ~/grub2-arm64
cd ~/grub2-arm64; wget -O - http://download.opensuse.org/ports/aarch64/distribution/leap/42.2/repo/oss/suse/aarch64/grub2-arm64-efi-2.02~beta2-87.1.aarch64.rpm | rpm2cpio | cpio -di
# the below corresponds to .gitlab-ci.yml "script"
cd ${WORK_DIR}
if [[ "${BUILDMAN}" != "" ]]; then
ret=0;
tools/buildman/buildman -o /tmp -P -E ${BUILDMAN} ${OVERRIDE} || ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
tools/buildman/buildman -o /tmp -sdeP ${BUILDMAN};
exit $ret;
fi;
fi
export UBOOT_TRAVIS_BUILD_DIR=/tmp/.bm-work/${TEST_PY_BD};
export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:/usr/bin:/bin;
export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci;
if [[ "${TEST_PY_BD}" != "" ]]; then
./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" --build-dir "$UBOOT_TRAVIS_BUILD_DIR";
ret=$?;
if [[ $ret -ne 0 ]]; then
exit $ret;
fi;
fi
# the below corresponds to .gitlab-ci.yml "after_script"
rm -rf ~/grub2* /tmp/uboot-test-hooks /tmp/venv
EOF
cat test.sh
# make current directory writeable to uboot user inside the container
# as sandbox testing need create files like spi flash images, etc.
# (TODO: clean up this in the future)
chmod 777 .
docker run -v $PWD:$(work_dir) $(ci_runner_image) /bin/bash $(work_dir)/test.sh
- job: build_the_world
displayName: 'Build the World'
pool:
vmImage: $(ubuntu_vm)
strategy:
# Use almost the same target division in .travis.yml, only merged
# 4 small build jobs (arc/microblaze/nds32/xtensa) into one.
matrix:
arc_microblaze_nds32_xtensa:
BUILDMAN: "arc microblaze nds32 xtensa"
arm11_arm7_arm920t_arm946es:
BUILDMAN: "arm11 arm7 arm920t arm946es"
arm926ejs:
BUILDMAN: "arm926ejs -x freescale,siemens,at91,kirkwood,spear,omap"
at91_non_armv7:
BUILDMAN: "at91 -x armv7"
at91_non_arm926ejs:
BUILDMAN: "at91 -x arm926ejs"
boundary_engicam_toradex:
BUILDMAN: "boundary engicam toradex"
arm_bcm:
BUILDMAN: "bcm -x mips"
nxp_arm32:
BUILDMAN: "freescale -x powerpc,m68k,aarch64"
nxp_aarch64_ls101x:
BUILDMAN: "freescale&aarch64&ls101"
nxp_aarch64_ls102x:
BUILDMAN: "freescale&aarch64&ls102"
nxp_aarch64_ls104x:
BUILDMAN: "freescale&aarch64&ls104"
nxp_aarch64_ls108x:
BUILDMAN: "freescale&aarch64&ls108"
nxp_aarch64_ls20xx:
BUILDMAN: "freescale&aarch64&ls20"
nxp_aarch64_lx216x:
BUILDMAN: "freescale&aarch64&lx216"
imx6:
BUILDMAN: "mx6 -x boundary,engicam,freescale,technexion,toradex"
imx:
BUILDMAN: "mx -x mx6,freescale,technexion,toradex"
keystone2_keystone3:
BUILDMAN: "k2 k3"
samsung_socfpga:
BUILDMAN: "samsung socfpga"
spear:
BUILDMAN: "spear"
sun4i:
BUILDMAN: "sun4i"
sun5i:
BUILDMAN: "sun5i"
sun6i:
BUILDMAN: "sun6i"
sun7i:
BUILDMAN: "sun7i"
sun8i_32bit:
BUILDMAN: "sun8i&armv7"
sun8i_64bit:
BUILDMAN: "sun8i&aarch64"
sun9i:
BUILDMAN: "sun9i"
sun50i:
BUILDMAN: "sun50i"
arm_catch_all:
BUILDMAN: "arm -x arm11,arm7,arm9,aarch64,at91,bcm,freescale,kirkwood,mvebu,siemens,tegra,uniphier,mx,samsung,sunxi,am33xx,omap,rockchip,toradex,socfpga,k2,k3,zynq"
sandbox_x86:
BUILDMAN: "sandbox x86"
technexion:
BUILDMAN: "technexion"
kirkwood:
BUILDMAN: "kirkwood"
mvebu:
BUILDMAN: "mvebu"
m68k:
BUILDMAN: "m68k"
mips:
BUILDMAN: "mips"
non_fsl_ppc:
BUILDMAN: "powerpc -x freescale"
mpc85xx_freescale:
BUILDMAN: "mpc85xx&freescale -x t208xrdb -x t4qds -x t102* -x p1_p2_rdb_pc -x p1010rdb -x corenet_ds -x b4860qds -x bsc91*"
t208xrdb_corenet_ds:
BUILDMAN: "t208xrdb corenet_ds"
fsl_ppc:
BUILDMAN: "t4qds b4860qds mpc83xx&freescale mpc86xx&freescale"
t102x:
BUILDMAN: "t102*"
p1_p2_rdb_pc:
BUILDMAN: "p1_p2_rdb_pc"
p1010rdb_bsc91:
BUILDMAN: "p1010rdb bsc91"
siemens:
BUILDMAN: "siemens"
tegra:
BUILDMAN: "tegra -x toradex"
am33xx_no_siemens:
BUILDMAN: "am33xx -x siemens"
omap:
BUILDMAN: "omap"
uniphier:
BUILDMAN: "uniphier"
aarch64_catch_all:
BUILDMAN: "aarch64 -x bcm,k3,tegra,ls1,ls2,mvebu,uniphier,sunxi,samsung,rockchip,versal,zynq"
rockchip:
BUILDMAN: "rockchip"
sh:
BUILDMAN: "sh -x arm"
zynq:
BUILDMAN: "zynq&armv7"
zynqmp_versal:
BUILDMAN: "versal|zynqmp&aarch64"
riscv:
BUILDMAN: "riscv"
steps:
- script: |
cat << EOF > build.sh
set -ex
cd ${WORK_DIR}
# make environment variables available as tests are running inside a container
export BUILDMAN="${BUILDMAN}"
EOF
cat << "EOF" >> build.sh
if [[ "${BUILDMAN}" != "" ]]; then
ret=0;
tools/buildman/buildman -o /tmp -P -E ${BUILDMAN} ${OVERRIDE} || ret=$?;
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
tools/buildman/buildman -o /tmp -sdeP ${BUILDMAN};
exit $ret;
fi;
fi
EOF
cat build.sh
docker run -v $PWD:$(work_dir) $(ci_runner_image) /bin/bash $(work_dir)/build.sh

2
.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
# Declare files that always have LF line endings on checkout
* text eol=lf

View File

@ -200,7 +200,7 @@ matrix:
- BUILDMAN="freescale&aarch64&ls108"
- name: "buildman NXP AArch64 LS20xx"
env:
- BUILDMAN="freescale&aarch64&&ls20"
- BUILDMAN="freescale&aarch64&ls20"
- name: "buildman NXP AArch64 LX216x"
env:
- BUILDMAN="freescale&aarch64&lx216"

View File

@ -1276,10 +1276,21 @@ endif
MKIMAGEFLAGS_u-boot-dtb.img = $(MKIMAGEFLAGS_u-boot.img)
MKIMAGEFLAGS_u-boot.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \
# Some boards have the kwbimage.cfg file written in advance, while some
# other boards generate it on the fly during the build in the build tree.
# Let's check if the file exists in the build tree first, otherwise we
# fall back to use the one in the source tree.
KWD_CONFIG_FILE = $(shell \
if [ -f $(objtree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) ]; then \
echo -n $(objtree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%); \
else \
echo -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%); \
fi)
MKIMAGEFLAGS_u-boot.kwb = -n $(KWD_CONFIG_FILE) \
-T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE)
MKIMAGEFLAGS_u-boot-spl.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \
MKIMAGEFLAGS_u-boot-spl.kwb = -n $(KWD_CONFIG_FILE) \
-T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) \
$(if $(KEYDIR),-k $(KEYDIR))
@ -1837,11 +1848,14 @@ checkarmreloc: u-boot
false; \
fi
envtools: scripts_basic $(version_h) $(timestamp_h)
tools/version.h: include/version.h
$(call if_changed,copy)
envtools: scripts_basic $(version_h) $(timestamp_h) tools/version.h
$(Q)$(MAKE) $(build)=tools/env
tools-only: export TOOLS_ONLY=y
tools-only: scripts_basic $(version_h) $(timestamp_h)
tools-only: scripts_basic $(version_h) $(timestamp_h) tools/version.h
$(Q)$(MAKE) $(build)=tools
tools-all: export HOST_TOOLS_ALL=y
@ -1869,7 +1883,7 @@ CLEAN_DIRS += $(MODVERDIR) \
$(foreach d, spl tpl, $(patsubst %,$d/%, \
$(filter-out include, $(shell ls -1 $d 2>/dev/null))))
CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \
CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h tools/version.h \
boot* u-boot* MLO* SPL System.map fit-dtb.blob*
# Directories & files removed with 'make mrproper'

View File

@ -58,10 +58,10 @@ KWB_REPLACE += SEC_FUSE_DUMP
KWB_CFG_SEC_FUSE_DUMP = a38x
endif
$(src)/kwbimage.cfg: $(src)/kwbimage.cfg.in include/autoconf.mk \
$(obj)/kwbimage.cfg: $(src)/kwbimage.cfg.in include/autoconf.mk \
include/config/auto.conf
$(Q)sed -ne '$(foreach V,$(KWB_REPLACE),s/^#@$(V)/$(V) $(KWB_CFG_$(V))/;)p' \
<$< >$(dir $<)$(@F)
<$< >$(dir $@)$(@F)
endif # CONFIG_SPL_BUILD
obj-y += gpio.o

View File

@ -4,9 +4,9 @@ obj-y := db-88f6281-bp.o
extra-y := kwbimage.cfg
quiet_cmd_sed = SED $@
cmd_sed = sed $(SEDFLAGS_$(@F)) $< >$(dir $<)$(@F)
cmd_sed = sed $(SEDFLAGS_$(@F)) $< >$(dir $@)$(@F)
SEDFLAGS_kwbimage.cfg = -e "s/^\#@BOOT_FROM.*/BOOT_FROM $(if $(CONFIG_CMD_NAND),nand,spi)/"
$(src)/kwbimage.cfg: $(src)/kwbimage.cfg.in include/autoconf.mk \
$(obj)/kwbimage.cfg: $(src)/kwbimage.cfg.in include/autoconf.mk \
include/config/auto.conf
$(call if_changed,sed)

View File

@ -6,9 +6,9 @@ obj-y := db-xc3-24g4xg.o
extra-y := kwbimage.cfg
quiet_cmd_sed = SED $@
cmd_sed = sed $(SEDFLAGS_$(@F)) $< >$(dir $<)$(@F)
cmd_sed = sed $(SEDFLAGS_$(@F)) $< >$(dir $@)$(@F)
SEDFLAGS_kwbimage.cfg =-e "s|^BINARY.*|BINARY $(srctree)/$(@D)/binary.0 0000005b 00000068|"
$(src)/kwbimage.cfg: $(src)/kwbimage.cfg.in include/autoconf.mk \
$(obj)/kwbimage.cfg: $(src)/kwbimage.cfg.in include/autoconf.mk \
include/config/auto.conf
$(call if_changed,sed)

View File

@ -6,9 +6,9 @@ obj-y := crs305-1g-4s.o
extra-y := kwbimage.cfg
quiet_cmd_sed = SED $@
cmd_sed = sed $(SEDFLAGS_$(@F)) $< >$(dir $<)$(@F)
cmd_sed = sed $(SEDFLAGS_$(@F)) $< >$(dir $@)$(@F)
SEDFLAGS_kwbimage.cfg =-e "s|^BINARY.*|BINARY $(srctree)/$(@D)/binary.0 0000005b 00000068|"
$(src)/kwbimage.cfg: $(src)/kwbimage.cfg.in include/autoconf.mk \
$(obj)/kwbimage.cfg: $(src)/kwbimage.cfg.in include/autoconf.mk \
include/config/auto.conf
$(call if_changed,sed)

9
doc/build/index.rst vendored Normal file
View File

@ -0,0 +1,9 @@
.. SPDX-License-Identifier: GPL-2.0+
Build U-Boot
============
.. toctree::
:maxdepth: 2
tools

47
doc/build/tools.rst vendored Normal file
View File

@ -0,0 +1,47 @@
.. SPDX-License-Identifier: GPL-2.0+
.. sectionauthor:: Bin Meng <bmeng.cn@gmail.com>
Host tools
==========
Building tools for Linux
------------------------
To allow distributions to distribute all possible tools in a generic way,
avoiding the need of specific tools building for each machine, a tools only
defconfig file is provided.
Using this, we can build the tools by doing::
$ make tools-only_defconfig
$ make tools-only
Building tools for Windows
--------------------------
If you wish to generate Windows versions of the utilities in the tools directory
you can use MSYS2, a software distro and building platform for Windows.
Download the MSYS2 installer from https://www.msys2.org. Make sure you have
installed all required packages below in order to build these host tools::
* gcc (9.1.0)
* make (4.2.1)
* bison (3.4.2)
* diffutils (3.7)
* openssl-devel (1.1.1.d)
Note the version numbers in these parentheses above are the package versions
at the time being when writing this document. The MSYS2 installer tested is
http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20190524.exe.
There are 3 MSYS subsystems installed: MSYS2, MinGW32 and MinGW64. Each
subsystem provides an environment to build Windows applications. The MSYS2
environment is for building POSIX compliant software on Windows using an
emulation layer. The MinGW32/64 subsystems are for building native Windows
applications using a linux toolchain (gcc, bash, etc), targeting respectively
32 and 64 bit Windows.
Launch the MSYS2 shell of the MSYS2 environment, and do the following::
$ make tools-only_defconfig
$ make tools-only NO_SDL=1

View File

@ -15,6 +15,17 @@ if you want to help out.
.. toctree::
:maxdepth: 2
User-oriented documentation
---------------------------
The following manuals are written for *users* of the U-Boot - those who are
trying to get it to work optimally on a given system.
.. toctree::
:maxdepth: 2
build/index
Unified Extensible Firmware (UEFI)
----------------------------------

View File

@ -319,13 +319,13 @@ enum {
* all data in network byte order (aka natural aka bigendian).
*/
typedef struct image_header {
__be32 ih_magic; /* Image Header Magic Number */
__be32 ih_hcrc; /* Image Header CRC Checksum */
__be32 ih_time; /* Image Creation Timestamp */
__be32 ih_size; /* Image Data Size */
__be32 ih_load; /* Data Load Address */
__be32 ih_ep; /* Entry Point Address */
__be32 ih_dcrc; /* Image Data CRC Checksum */
uint32_t ih_magic; /* Image Header Magic Number */
uint32_t ih_hcrc; /* Image Header CRC Checksum */
uint32_t ih_time; /* Image Creation Timestamp */
uint32_t ih_size; /* Image Data Size */
uint32_t ih_load; /* Data Load Address */
uint32_t ih_ep; /* Entry Point Address */
uint32_t ih_dcrc; /* Image Data CRC Checksum */
uint8_t ih_os; /* Operating System */
uint8_t ih_arch; /* CPU architecture */
uint8_t ih_type; /* Image Type */

View File

@ -151,12 +151,14 @@ typedef __u32 __bitwise __wsum;
typedef unsigned __bitwise__ gfp_t;
#ifdef __linux__
struct ustat {
__kernel_daddr_t f_tfree;
__kernel_ino_t f_tinode;
char f_fname[6];
char f_fpack[6];
};
#endif
#define DECLARE_BITMAP(name, bits) \
unsigned long name[BITS_TO_LONGS(bits)]

1
tools/.gitignore vendored
View File

@ -31,4 +31,5 @@
/spl_size_limit
/sunxi-spl-image-builder
/ubsha1
/version.h
/xway-swap-bytes

View File

@ -201,14 +201,14 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None,
# Work out what subset of the boards we are building
if not boards:
board_file = os.path.join(options.git, 'boards.cfg')
status = subprocess.call([os.path.join(options.git,
'tools/genboardscfg.py')])
board_file = os.path.join(options.output_dir, 'boards.cfg')
genboardscfg = os.path.join(options.git, 'tools/genboardscfg.py')
status = subprocess.call([genboardscfg, '-o', board_file])
if status != 0:
sys.exit("Failed to generate boards.cfg")
sys.exit("Failed to generate boards.cfg")
boards = board.Boards()
boards.ReadBoards(os.path.join(options.git, 'boards.cfg'))
boards.ReadBoards(board_file)
exclude = []
if options.exclude:

View File

@ -156,14 +156,6 @@ class TestBuild(unittest.TestCase):
result.return_code = commit.return_code
result.stderr = (''.join(commit.error_list)
% {'basedir' : base_dir + '/.bm-work/00/'})
if stage == 'build':
target_dir = None
for arg in args:
if arg.startswith('O='):
target_dir = arg[2:]
if not os.path.isdir(target_dir):
os.mkdir(target_dir)
result.combined = result.stdout + result.stderr
return result

View File

@ -10,7 +10,9 @@
#include <getopt.h>
#include "os_support.h"
#ifndef __packed
#define __packed __attribute__((packed))
#endif
#define KiB 1024
#define ALIGN(x, a) __ALIGN_MASK((x), (typeof(x))(a) - 1)
#define __ALIGN_MASK(x, mask) (((x) + (mask)) & ~(mask))

View File

@ -9,14 +9,14 @@
#ifndef _MTK_IMAGE_H
#define _MTK_IMAGE_H
/* Device header definitions */
/* Device header definitions, all fields are little-endian */
/* Header for NOR/SD/eMMC */
union gen_boot_header {
struct {
char name[12];
__le32 version;
__le32 size;
uint32_t version;
uint32_t size;
};
uint8_t pad[0x200];
@ -32,14 +32,14 @@ union nand_boot_header {
char name[12];
char version[4];
char id[8];
__le16 ioif;
__le16 pagesize;
__le16 addrcycles;
__le16 oobsize;
__le16 pages_of_block;
__le16 numblocks;
__le16 writesize_shift;
__le16 erasesize_shift;
uint16_t ioif;
uint16_t pagesize;
uint16_t addrcycles;
uint16_t oobsize;
uint16_t pages_of_block;
uint16_t numblocks;
uint16_t writesize_shift;
uint16_t erasesize_shift;
uint8_t dummy[60];
uint8_t ecc_parity[28];
};
@ -54,14 +54,14 @@ union nand_boot_header {
/* BootROM layout header */
struct brom_layout_header {
char name[8];
__le32 version;
__le32 header_size;
__le32 total_size;
__le32 magic;
__le32 type;
__le32 header_size_2;
__le32 total_size_2;
__le32 unused;
uint32_t version;
uint32_t header_size;
uint32_t total_size;
uint32_t magic;
uint32_t type;
uint32_t header_size_2;
uint32_t total_size_2;
uint32_t unused;
};
#define BRLYT_NAME "BRLYT"
@ -90,8 +90,8 @@ struct gen_device_header {
struct gfh_common_header {
uint8_t magic[3];
uint8_t version;
__le16 size;
__le16 type;
uint16_t size;
uint16_t type;
};
#define GFH_HEADER_MAGIC "MMM"
@ -106,17 +106,17 @@ struct gfh_common_header {
struct gfh_file_info {
struct gfh_common_header gfh;
char name[12];
__le32 unused;
__le16 file_type;
uint32_t unused;
uint16_t file_type;
uint8_t flash_type;
uint8_t sig_type;
__le32 load_addr;
__le32 total_size;
__le32 max_size;
__le32 hdr_size;
__le32 sig_size;
__le32 jump_offset;
__le32 processed;
uint32_t load_addr;
uint32_t total_size;
uint32_t max_size;
uint32_t hdr_size;
uint32_t sig_size;
uint32_t jump_offset;
uint32_t processed;
};
#define GFH_FILE_INFO_NAME "FILE_INFO"
@ -129,16 +129,16 @@ struct gfh_file_info {
struct gfh_bl_info {
struct gfh_common_header gfh;
__le32 attr;
uint32_t attr;
};
struct gfh_brom_cfg {
struct gfh_common_header gfh;
__le32 cfg_bits;
__le32 usbdl_by_auto_detect_timeout_ms;
uint32_t cfg_bits;
uint32_t usbdl_by_auto_detect_timeout_ms;
uint8_t unused[0x48];
__le32 usbdl_by_kcol0_timeout_ms;
__le32 usbdl_by_flag_timeout_ms;
uint32_t usbdl_by_kcol0_timeout_ms;
uint32_t usbdl_by_flag_timeout_ms;
uint32_t pad;
};
@ -157,15 +157,15 @@ struct gfh_anti_clone {
uint8_t ac_b2k;
uint8_t ac_b2c;
uint16_t pad;
__le32 ac_offset;
__le32 ac_len;
uint32_t ac_offset;
uint32_t ac_len;
};
struct gfh_brom_sec_cfg {
struct gfh_common_header gfh;
__le32 cfg_bits;
uint32_t cfg_bits;
char customer_name[0x20];
__le32 pad;
uint32_t pad;
};
#define BROM_SEC_CFG_JTAG_EN 1
@ -184,11 +184,11 @@ struct gfh_header {
union lk_hdr {
struct {
__le32 magic;
__le32 size;
uint32_t magic;
uint32_t size;
char name[32];
__le32 loadaddr;
__le32 mode;
uint32_t loadaddr;
uint32_t mode;
};
uint8_t data[512];

View File

@ -1 +0,0 @@
../include/version.h

View File

@ -517,7 +517,7 @@ static int bif_add_bit(struct bif_entry *bf)
debug("Bitstream Length: 0x%x\n", bitlen);
for (i = 0; i < bitlen; i += sizeof(uint32_t)) {
uint32_t *bitbin32 = (uint32_t *)&bitbin[i];
*bitbin32 = __swab32(*bitbin32);
*bitbin32 = __builtin_bswap32(*bitbin32);
}
if (!bf->dest_dev)