mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-25 13:14:19 +08:00
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:
commit
ba742b839c
420
.azure-pipelines.yml
Normal file
420
.azure-pipelines.yml
Normal 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
2
.gitattributes
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
# Declare files that always have LF line endings on checkout
|
||||
* text eol=lf
|
@ -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"
|
||||
|
24
Makefile
24
Makefile
@ -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'
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
9
doc/build/index.rst
vendored
Normal 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
47
doc/build/tools.rst
vendored
Normal 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
|
@ -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)
|
||||
----------------------------------
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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
1
tools/.gitignore
vendored
@ -31,4 +31,5 @@
|
||||
/spl_size_limit
|
||||
/sunxi-spl-image-builder
|
||||
/ubsha1
|
||||
/version.h
|
||||
/xway-swap-bytes
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
@ -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];
|
||||
|
@ -1 +0,0 @@
|
||||
../include/version.h
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user