blob: 46df1aa17d2f51b374cd04f2ed53d57d64d3e5c4 [file] [log] [blame]
#!/bin/bash
#
# Copyright (C) 2019 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Ensure we fail the job if any steps fail.
set -e -o pipefail
help_info () {
cat << ENDHELP
This script is used to genereate package-index and output the path
of rpm packages and index files, it must be ran after build_oran.sh
Usage:
$(basename $0) [-w WORKSPACE_DIR] [-n] [-h]
where:
-w WORKSPACE_DIR is the path for the project
-n dry-run only for bitbake
-h this help info
ENDHELP
}
echo_info () {
echo "INFO: $1"
}
echo_error () {
echo "ERROR: $1"
}
echo_cmd () {
echo
echo_info "$1"
echo "CMD: ${RUN_CMD}"
}
DRYRUN=""
RECIPE_LIST=""
SCRIPTS_DIR=`dirname $0`
SCRIPTS_DIR=`readlink -f $SCRIPTS_DIR`
while getopts "w:nh" OPTION; do
case ${OPTION} in
w)
WORKSPACE=`readlink -f ${OPTARG}`
;;
n)
DRYRUN="-n"
;;
h)
help_info
exit
;;
esac
done
if [ -z ${WORKSPACE} ]; then
echo_info "No workspace specified, assume './workspace'"
WORKSPACE=`readlink -f workspace`
fi
if [ ! -d ${WORKSPACE} ]; then
echo_error "The workspace ${WORKSPACE} doesn't exist!!"
echo_error "You need to run build_oran.sh to create a valid worksapce and build image first."
echo_error "Then run this script with -w option to specify the correct path of the worksapce."
help_info
exit 1
fi
SRC_WRL_DIR=${WORKSPACE}/src_wrl1018
SRC_ORAN_DIR=${WORKSPACE}/src_oran
PRJ_BUILD_DIR=${WORKSPACE}/prj_oran-inf
RPM_REPO_LIST=${SRC_ORAN_DIR}/rtp/scripts/rpm_repo_list.txt
RPM_DEPLOY_DIR=${PRJ_BUILD_DIR}/tmp-glibc/deploy/rpm
RPM_REPODATA=${RPM_DEPLOY_DIR}/repodata
echo_info "For wrlinux1018 source: ${SRC_WRL_DIR}"
echo_info "For oran layer source: ${SRC_ORAN_DIR}"
echo_info "For build project: ${PRJ_BUILD_DIR}"
# Source the build env
cd ${SRC_WRL_DIR}
. ./environment-setup-x86_64-wrlinuxsdk-linux
set ${PRJ_BUILD_DIR}
. ./oe-init-build-env ${PRJ_BUILD_DIR}
mkdir -p logs
TIMESTAMP=`date +"%Y%m%d_%H%M%S"`
RECIPE_LIST=`grep -v '^#' ${RPM_REPO_LIST}|awk '{print $1}'|sort|uniq`
RPM_PKG_LIST=`grep -v '^#' ${RPM_REPO_LIST}|awk '{print $2}'|sort|uniq`
if [ -z "${RECIPE_LIST}" ]; then
echo_info "The recipes list is empty, nothing to do!!"
exit 0
fi
# Build the recipes
RUN_CMD="bitbake ${DRYRUN} ${RECIPE_LIST}"
echo_cmd "Build the recipes: '${RECIPE_LIST}'"
bitbake ${DRYRUN} ${RECIPE_LIST} 2>&1|tee logs/bitbake_recipes_${TIMESTAMP}.log
# Build the package-index
RUN_CMD="bitbake ${DRYRUN} package-index"
echo_cmd "Build the package-index'"
bitbake ${DRYRUN} package-index 2>&1|tee logs/bitbake_package-index_${TIMESTAMP}.log
echo_info "Build succeeded"
echo_info "Package index files"
find ${RPM_REPODATA}
echo_info "RPM files"
for i in ${RPM_PKG_LIST}; do
readlink -f ${RPM_DEPLOY_DIR}/*/$i
done