From a04ea9af59869794aaed5da2b97108e89340918e Mon Sep 17 00:00:00 2001 From: Javier Viguera Date: Tue, 8 Oct 2013 14:15:43 +0200 Subject: [PATCH] build.sh: add support to build kernel version 3.x Signed-off-by: Javier Viguera --- sdk/build.sh | 99 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 61 insertions(+), 38 deletions(-) diff --git a/sdk/build.sh b/sdk/build.sh index 1c33735bc..d1742267b 100755 --- a/sdk/build.sh +++ b/sdk/build.sh @@ -37,6 +37,12 @@ SOURCE_MIRROR_URL ?= \"http://build-linux.digi.com/yocto/downloads/\" INHERIT += \"own-mirrors\" " +KERNEL_3X_CFG=" +# Build Linux 3.10 and U-Boot 2013.01 +PREFERRED_VERSION_linux-dey = \"3.10\" +PREFERRED_VERSION_u-boot-dey = \"2013.01\" +" + REPO="$(which repo)" error() { @@ -90,6 +96,17 @@ done<<-_EOF_ wr21 - _EOF_ +# Support Linux-3.x and U-Boot 2013.x +while read _pl _ker; do + eval "${_pl}_ker=\"${_ker}\"" +done<<-_EOF_ + ccardimx28js y + ccimx51js n + ccimx53js n + cpx2 n + wr21 n +_EOF_ + YOCTO_IMGS_DIR="${WORKSPACE}/images" YOCTO_INST_DIR="${WORKSPACE}/digi-yocto-sdk.$(echo ${DY_REVISION} | tr '/' '_')" YOCTO_PROJ_DIR="${WORKSPACE}/projects" @@ -123,43 +140,49 @@ fi rm -rf ${YOCTO_IMGS_DIR} ${YOCTO_PROJ_DIR} for platform in ${DY_PLATFORMS}; do eval platform_variants="\${${platform}_var}" - for variant in ${platform_variants}; do - _this_prj_dir="${YOCTO_PROJ_DIR}/${platform}" - _this_img_dir="${YOCTO_IMGS_DIR}/${platform}" - if [ "${variant}" != "DONTBUILDVARIANTS" ]; then - _this_prj_dir="${YOCTO_PROJ_DIR}/${platform}_${variant}" - _this_img_dir="${YOCTO_IMGS_DIR}/${platform}_${variant}" - _this_var_arg="-v ${variant}" - [ "${variant}" = "-" ] && _this_var_arg="-v \\" - fi - mkdir -p ${_this_img_dir} ${_this_prj_dir} - if pushd ${_this_prj_dir}; then - # Configure and build the project in a sub-shell to avoid - # mixing environments between different platform's projects - ( - export TEMPLATECONF="${TEMPLATECONF:+${TEMPLATECONF}/${platform}}" - . ${YOCTO_INST_DIR}/mkproject.sh -p ${platform} ${_this_var_arg} - # Set a common DL_DIR and SSTATE_DIR for all platforms - sed -i -e "/^#DL_DIR ?=/cDL_DIR ?= \"${YOCTO_PROJ_DIR}/downloads\"" \ - -e "/^#SSTATE_DIR ?=/cSSTATE_DIR ?= \"${YOCTO_PROJ_DIR}/sstate-cache\"" \ - conf/local.conf - # Set the DISTRO and remove 'meta-digi-dey' layer if distro is not DEY based - sed -i -e "/^DISTRO ?=/cDISTRO ?= \"${DY_DISTRO}\"" conf/local.conf - if ! echo "${DY_DISTRO}" | grep -qs "dey"; then - sed -i -e '/meta-digi-dey/d' conf/bblayers.conf - fi - if [ "${DY_USE_MIRROR}" = "true" ]; then - sed -i -e "s,^#DIGI_INTERNAL_GIT,DIGI_INTERNAL_GIT,g" conf/local.conf - printf "${DIGI_PREMIRROR_CFG}" >> conf/local.conf - fi - [ "${DY_RM_WORK}" = "true" ] && printf "\nINHERIT += \"rm_work\"\n" >> conf/local.conf - for target in ${DY_TARGET}; do - printf "\n[INFO] Building the $target target.\n" - time bitbake ${target} - done - ) - copy_images ${_this_img_dir} - popd - fi + eval platform_kernel3x="\${${platform}_ker%n}" + for kernel_ver in "" ${platform_kernel3x:+-3x}; do + for variant in ${platform_variants}; do + _this_prj_dir="${YOCTO_PROJ_DIR}/${platform}${kernel_ver}" + _this_img_dir="${YOCTO_IMGS_DIR}/${platform}${kernel_ver}" + if [ "${variant}" != "DONTBUILDVARIANTS" ]; then + _this_prj_dir="${YOCTO_PROJ_DIR}/${platform}${kernel_ver}_${variant}" + _this_img_dir="${YOCTO_IMGS_DIR}/${platform}${kernel_ver}_${variant}" + _this_var_arg="-v ${variant}" + [ "${variant}" = "-" ] && _this_var_arg="-v \\" + fi + mkdir -p ${_this_img_dir} ${_this_prj_dir} + if pushd ${_this_prj_dir}; then + # Configure and build the project in a sub-shell to avoid + # mixing environments between different platform's projects + ( + export TEMPLATECONF="${TEMPLATECONF:+${TEMPLATECONF}/${platform}}" + . ${YOCTO_INST_DIR}/mkproject.sh -p ${platform} ${_this_var_arg} + # Set a common DL_DIR and SSTATE_DIR for all platforms + sed -i -e "/^#DL_DIR ?=/cDL_DIR ?= \"${YOCTO_PROJ_DIR}/downloads\"" \ + -e "/^#SSTATE_DIR ?=/cSSTATE_DIR ?= \"${YOCTO_PROJ_DIR}/sstate-cache\"" \ + conf/local.conf + # Set the DISTRO and remove 'meta-digi-dey' layer if distro is not DEY based + sed -i -e "/^DISTRO ?=/cDISTRO ?= \"${DY_DISTRO}\"" conf/local.conf + if ! echo "${DY_DISTRO}" | grep -qs "dey"; then + sed -i -e '/meta-digi-dey/d' conf/bblayers.conf + fi + if [ "${DY_USE_MIRROR}" = "true" ]; then + sed -i -e "s,^#DIGI_INTERNAL_GIT,DIGI_INTERNAL_GIT,g" conf/local.conf + printf "${DIGI_PREMIRROR_CFG}" >> conf/local.conf + fi + if [ -n "${kernel_ver}" ]; then + printf "${KERNEL_3X_CFG}" >> conf/local.conf + fi + [ "${DY_RM_WORK}" = "true" ] && printf "\nINHERIT += \"rm_work\"\n" >> conf/local.conf + for target in ${DY_TARGET}; do + printf "\n[INFO] Building the $target target.\n" + time bitbake ${target} + done + ) + copy_images ${_this_img_dir} + popd + fi + done done done