Tested to build E2000 yocto project in OBS machine
This commit is contained in:
commit
4c33f38b79
42
Dockerfile
Normal file
42
Dockerfile
Normal file
|
@ -0,0 +1,42 @@
|
|||
FROM ubuntu:20.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
#Install depends PKGS & Add user AcoSailBuilder for non-root require.
|
||||
#Set AcoSailBuilder passwd as "acosail"
|
||||
#Sudo is needed for mounting host volume!
|
||||
RUN apt-get update && \
|
||||
apt-get install -y curl git gawk wget git-core diffstat unzip texinfo gcc-multilib \
|
||||
build-essential chrpath socat cpio python3 python3-pip python3-pexpect \
|
||||
xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa \
|
||||
libsdl1.2-dev pylint3 xterm libncursesw5-dev openssl libssl-dev zstd \
|
||||
python2.7 locales sudo && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
ln -s /usr/bin/python3 /usr/bin/python && \
|
||||
useradd -ms /bin/bash AcoSailBuilder && \
|
||||
usermod -aG sudo AcoSailBuilder && \
|
||||
echo 'AcoSailBuilder:acosail' | chpasswd
|
||||
|
||||
USER AcoSailBuilder
|
||||
|
||||
RUN mkdir -p /home/AcoSailBuilder/bin && \
|
||||
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo && \
|
||||
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo' && \
|
||||
chmod a+x ~/bin/repo
|
||||
|
||||
ENV PATH="/home/AcoSailBuilder/bin:${PATH}"
|
||||
|
||||
#Get project
|
||||
#add host volume into docker
|
||||
#Fix ssh unkonwn error
|
||||
RUN mkdir ~/workspace && \
|
||||
cd ~/workspace && \
|
||||
repo init -u https://gitee.com/phytium_embedded/phytium-linux-yocto.git -m default.xml && \
|
||||
repo sync --force-sync && \
|
||||
mkdir ~/build_dir && \
|
||||
mkdir ~/.ssh && \
|
||||
ssh-keyscan gitee.com >> ~/.ssh/known_hosts
|
||||
|
||||
#Fix yocto fetch kernel error, but may not be the dest solution
|
||||
COPY linux-phytium.inc ~/workspace/sources/meta-phytium/meta-bsp/recipes-kernel/linux/linux-phytium.inc
|
||||
|
53
README.md
Normal file
53
README.md
Normal file
|
@ -0,0 +1,53 @@
|
|||
# E2000 builder Dockerfile
|
||||
|
||||
Useing FT Offical E2000 build system BASED on Ubuntu 20.04 and yocto project.
|
||||
Make Sure your host volume has lager than 50GB free space.
|
||||
|
||||
# How to build Docker
|
||||
~~~bash
|
||||
sudo docker build -t ft-e2000-builder:1.1 .
|
||||
~~~
|
||||
|
||||
# How to Init this docker for use
|
||||
~~~bash
|
||||
export BUILD_DIR=/data/build_dir
|
||||
sudo docker run -it --rm -u 1000:1000 -v ${BUILD_DIR}:/home/AcoSailBuilder/build_dir ft-e2000-builder:1.1 /bin/bash
|
||||
~~~
|
||||
|
||||
In the docker, then, for the first time, do as following.
|
||||
~~~bash
|
||||
cd ~
|
||||
sudo chown AcoSailBuilder:AcoSailBuilder build_dir
|
||||
#passed is "acosail".
|
||||
cp -rdp workspace build_dir/
|
||||
cd build_dir/workspace
|
||||
source setup-env -m e2000
|
||||
#Say "y" when dialog shows up.
|
||||
#Then project is ready to go.
|
||||
~~~
|
||||
|
||||
|
||||
Or, do as following for other times.
|
||||
~~~bash
|
||||
cd ~/build_dir/workspace
|
||||
source setup-env -m e2000
|
||||
#This is for have build env
|
||||
~~~
|
||||
|
||||
# How to build core-image-minimal
|
||||
~~~bash
|
||||
#After Init project,
|
||||
#you should in dir /home/AcoSailBuilder/build_dir/workspace/build_e2000/
|
||||
bitbake core-image-minimal
|
||||
~~~
|
||||
|
||||
# Where to get builled files
|
||||
Everything is placed in "${BUILD_DIR}/workspace/build_e2000/tmp/deploy/"
|
||||
Kernel image is in "${BUILD_DIR}/workspace/build_e2000/tmp/deploy/images/e2000"
|
||||
|
||||
# FAQ
|
||||
## bitbake error
|
||||
If error is about kernel, you may need to change "linux-phytium.inc", to fix download error.
|
||||
Like changing ssh to https for git clone.
|
||||
|
||||
If error is about other downloads, you may need to rerun "bitbake core-image-minimal".
|
65
linux-phytium.inc
Normal file
65
linux-phytium.inc
Normal file
|
@ -0,0 +1,65 @@
|
|||
SRC_URI = "git://git@gitee.com/phytium_embedded/phytium-linux-kernel.git;protocol=ssh;branch=${KERNEL_BRANCH} "
|
||||
|
||||
inherit kernel siteinfo
|
||||
inherit phy-kernel-localversion
|
||||
|
||||
SUMMARY = "Linux Kernel for Phytium platforms"
|
||||
SECTION = "kernel"
|
||||
LICENSE = "GPLv2"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
DEPENDS_append = " libgcc u-boot-tools-native"
|
||||
# not put Images into /boot of rootfs, install kernel-image if needed
|
||||
RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""
|
||||
|
||||
KERNEL_CC_append = " ${TOOLCHAIN_OPTIONS}"
|
||||
KERNEL_LD_append = " ${TOOLCHAIN_OPTIONS}"
|
||||
KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}"
|
||||
|
||||
FILES_${KERNEL_PACKAGE_NAME}-base += " ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.builtin.modinfo "
|
||||
|
||||
KERNEL_CONFIG_COMMAND = "oe_runmake_call -C ${S} CC="${KERNEL_CC}" O=${B} olddefconfig || oe_runmake -C ${S} O=${B} CC="${KERNEL_CC}" oldnoconfig"
|
||||
|
||||
ZIMAGE_BASE_NAME = "zImage-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
|
||||
ZIMAGE_BASE_NAME[vardepsexclude] = "DATETIME"
|
||||
|
||||
SCMVERSION ?= "y"
|
||||
LOCALVERSION = ""
|
||||
DELTA_KERNEL_DEFCONFIG ?= ""
|
||||
DELTA_KERNEL_DEFCONFIG_prepend = "e2000_defconfig"
|
||||
|
||||
do_merge_delta_config[dirs] = "${B}"
|
||||
|
||||
do_merge_delta_config() {
|
||||
# create config with make config
|
||||
oe_runmake -C ${S} O=${B} ${KERNEL_DEFCONFIG}
|
||||
|
||||
# check if bigendian is enabled
|
||||
if [ "${SITEINFO_ENDIANNESS}" = "be" ]; then
|
||||
echo "CONFIG_CPU_BIG_ENDIAN=y" >> .config
|
||||
echo "CONFIG_MTD_CFI_BE_BYTE_SWAP=y" >> .config
|
||||
fi
|
||||
|
||||
# add config fragments
|
||||
for deltacfg in ${DELTA_KERNEL_DEFCONFIG}; do
|
||||
if [ -f ${S}/arch/${ARCH}/configs/${deltacfg} ]; then
|
||||
oe_runmake -C ${S} O=${B} ${deltacfg}
|
||||
elif [ -f "${WORKDIR}/${deltacfg}" ]; then
|
||||
${S}/scripts/kconfig/merge_config.sh -m .config ${WORKDIR}/${deltacfg}
|
||||
elif [ -f "${deltacfg}" ]; then
|
||||
${S}/scripts/kconfig/merge_config.sh -m .config ${deltacfg}
|
||||
fi
|
||||
done
|
||||
cp .config ${WORKDIR}/defconfig
|
||||
}
|
||||
|
||||
do_uboot_mkimage() {
|
||||
uboot-mkimage -A arm64 -O linux -T kernel -C none -a 0x80080000 -e 0x80080000 -n "4.19" -d ${DEPLOY_DIR_IMAGE}/Image ${DEPLOY_DIR_IMAGE}/uImage
|
||||
}
|
||||
|
||||
addtask merge_delta_config before do_preconfigure after do_patch do_prepare_recipe_sysroot
|
||||
addtask uboot_mkimage before do_package_write_rpm after do_deploy
|
||||
|
||||
FILES_${KERNEL_PACKAGE_NAME}-image += "/boot/zImage*"
|
||||
|
Loading…
Reference in New Issue
Block a user