"
SCRIPTS_DIR=$(dirname $(dirname $(readlink -f $0)))
+SCRIPTS_NAME=$(basename $0)
TIMESTAMP=`date +"%Y%m%d_%H%M%S"`
#########################################################################
help_info () {
cat << ENDHELP
Usage:
-$(basename $0) [-w WORKSPACE_DIR] [-b BSP] [-n] [-u] [-h] [-r Yes|No] [-e EXTRA_CONF]
+${SCRIPTS_NAME} [-w WORKSPACE_DIR] [-b BSP] [-n] [-u] [-h] [-r Yes|No] [-e EXTRA_CONF]
where:
-w WORKSPACE_DIR is the path for the project
-b BPS is one of supported BSP: "${SUPPORTED_BSP}"
echo_step_start() {
[ -n "$1" ] && msg_step=$1
echo "#########################################################################################"
- echo "## STEP START: ${msg_step}"
+ echo "## ${SCRIPTS_NAME} - STEP START: ${msg_step}"
echo "#########################################################################################"
}
echo_step_end() {
[ -n "$1" ] && msg_step=$1
echo "#########################################################################################"
- echo "## STEP END: ${msg_step}"
+ echo "## ${SCRIPTS_NAME} - STEP END: ${msg_step}"
echo "#########################################################################################"
echo
}
EXTRA_CONF=""
SKIP_UPDATE="Yes"
RM_WORK="Yes"
+GET_SSTATE="No"
BSP="intel-corei7-64"
-while getopts "w:b:e:r:unh" OPTION; do
+while getopts "w:b:e:r:unsh" OPTION; do
case ${OPTION} in
w)
WORKSPACE=`readlink -f ${OPTARG}`
;;
u)
SKIP_UPDATE="No"
- ;;
+ ;;
r)
check_yn_rm_work ${OPTARG}
;;
+ s)
+ GET_SSTATE="Yes"
+ ;;
h)
help_info
exit
BSP="${BSP_VALID}"
fi
+IMG_ARCH=${BSP}
+if [ "${BSP}" == "intel-corei7-64" ]; then
+ IMG_ARCH="x86-64"
+fi
+
#########################################################################
# Functions for each step
#########################################################################
PRJ_BUILD_DIR=${WORKSPACE}/prj_oran_stx
PRJ_BUILD_DIR_ANACONDA=${WORKSPACE}/prj_oran_inf_anaconda
PRJ_SHARED_DIR=${WORKSPACE}/prj_shared
+PRJ_OUTPUT_DIR=${WORKSPACE}/prj_output
PRJ_SHARED_DL_DIR=${WORKSPACE}/prj_shared/downloads
PRJ_SHARED_SS_DIR=${WORKSPACE}/prj_shared/sstate-cache
SRC_SCRIPTS=${SRC_ORAN_DIR}/rtp/scripts/build_inf_yocto
ISO_STX=${PRJ_BUILD_DIR}/tmp/deploy/images/${BSP}/${IMG_STX}-${BSP}.iso
ISO_ANACONDA=${PRJ_BUILD_DIR_ANACONDA}/tmp-glibc/deploy/images/${BSP}/${IMG_ANACONDA}-${BSP}.iso
ISO_INF=${PRJ_BUILD_DIR_ANACONDA}/tmp-glibc/deploy/images/${BSP}/${IMG_INF}-${BSP}.iso
+ISO_INF_ALIAS=${PRJ_OUTPUT_DIR}/inf-image-yocto-aio-${IMG_ARCH}.iso
+
+SSTATE_CONTAINER_IMG=infbuilder/inf-yocto-sstate:2022.05
prepare_workspace () {
- msg_step="Create workspace for the build"
+ msg_step="Create workspace for the Yocto build"
echo_step_start
- mkdir -p ${PRJ_BUILD_DIR} ${SRC_ORAN_DIR} ${PRJ_BUILD_DIR_ANACONDA} ${PRJ_SHARED_DL_DIR} ${PRJ_SHARED_SS_DIR}
+ mkdir -p ${PRJ_BUILD_DIR} ${SRC_ORAN_DIR} ${PRJ_BUILD_DIR_ANACONDA} \
+ ${PRJ_SHARED_DL_DIR} ${PRJ_SHARED_SS_DIR} ${PRJ_OUTPUT_DIR}
echo_info "The following directories are created in your workspace(${WORKSPACE}):"
echo_info "For all layers source: ${SRC_LAYER_DIR}"
echo_step_end
}
+# This is tend to be used for CI Jenkins build only
+get_sstate () {
+ msg_step="Get sstate cache from dockerhub image"
+ echo_step_start
+
+ for i in {1..5}; do
+ docker pull ${SSTATE_CONTAINER_IMG}-${i}
+ docker create -ti --name inf-yocto-sstate-${i} ${SSTATE_CONTAINER_IMG}-${i} sh
+ docker cp inf-yocto-sstate-${i}:/sstate${i} ${PRJ_SHARED_SS_DIR}/sstate${i}
+ docker rm inf-yocto-sstate-${i}
+ done
+ mv ${PRJ_SHARED_SS_DIR}/sstate*/* ${PRJ_SHARED_SS_DIR}
+ #rm -rf ${PRJ_SHARED_SS_DIR}/sstate*
+
+ echo_step_end
+}
+
prepare_src () {
msg_step="Get the source code repos"
echo_step_start
echo_step_end
-# Not andy meta-patch is needed for the time being, but new ones may be needed and added
+# Not any meta-patch is needed for the time being, but new ones may be needed and added
# sometime in the future, so just leave these code commented out here.
# # Apply meta patches
# for l in $(ls -1 ${SRC_META_PATCHES}); do
RUN_CMD="bitbake ${DRYRUN} ${IMG_STX}"
echo_cmd "Build the ${IMG_STX} image"
- bitbake ${DRYRUN} ${IMG_STX} 2>&1|tee logs/bitbake_${IMG_STX}_${TIMESTAMP}.log
+ bitbake -k ${DRYRUN} ${IMG_STX} 2>&1|tee logs/bitbake_${IMG_STX}_${TIMESTAMP}.log
echo_step_end
fi
RUN_CMD="bitbake ${DRYRUN} ${IMG_ANACONDA}"
echo_cmd "Build the ${IMG_ANACONDA} image"
- bitbake ${DRYRUN} ${IMG_ANACONDA} 2>&1|tee logs/bitbake_${IMG_ANACONDA}_${TIMESTAMP}.log
+ bitbake -k ${DRYRUN} ${IMG_ANACONDA} 2>&1|tee logs/bitbake_${IMG_ANACONDA}_${TIMESTAMP}.log
if [ -z "${DRYRUN}" ]; then
cp -Pf ${ISO_ANACONDA} ${ISO_INF}
+ cp -f ${ISO_ANACONDA} ${ISO_INF_ALIAS}
fi
echo_step_end
- echo_info "Build succeeded, you can get the image in ${ISO_INF}"
+ echo_info "Build succeeded, you can get the image in ${ISO_INF_ALIAS}"
}
#########################################################################
#########################################################################
prepare_workspace
+if [ "${GET_SSTATE}" == "Yes" ]; then
+ get_sstate
+fi
prepare_src
setup_stx_build
setup_anaconda_build