#!/bin/bash
cleanup(){
rm -rf .gn
ln -s build/core/gn/dotfile.gn .gn
}
trap cleanup EXIT
set -e
echo $1 $2 $3
TEST_FILTER=$3
VARIANTS="standard"
if [ -n "$4" ]; then
VARIANTS=$4
fi
case $3 in
0) OUT_DIR="src" ;;
1) OUT_DIR="src_test" ;;
2) OUT_DIR="test" ;;
esac
export SOURCE_ROOT_DIR="$PWD"
HOST_DIR="linux-x86"
HOST_OS="linux"
NODE_PLATFORM="linux-x64"
PYTHON3_DIR=$(realpath ${SOURCE_ROOT_DIR}/prebuilts/python/${HOST_DIR}/*/ | tail -1)
PYTHON3=${PYTHON3_DIR}/bin/python3
PYTHON=${PYTHON3_DIR}/bin/python
export PATH=${SOURCE_ROOT_DIR}/prebuilts/build-tools/${HOST_DIR}/bin:${PYTHON3_DIR}/bin:$PATH
if [[ "$@" =~ "--fast-rebuild" ]]; then
rm -rf .gn
ln -s build/indep_configs/dotfile.gn .gn
${PYTHON3} ${SOURCE_ROOT_DIR}/build/indep_configs/scripts/gn_ninja_cmd.py -rp ${SOURCE_ROOT_DIR} -v ${VARIANTS} -out ${OUT_DIR} -t ${TEST_FILTER} --fast-rebuild
if [ $? -ne 0 ]; then
exit 1
fi
rm -rf .gn
ln -s build/core/gn/dotfile.gn .gn
exit 0
fi
mkdir -p out/preloader
mkdir -p out/$VARIANTS/$OUT_DIR/
rm -rf out/preloader/$VARIANTS
rm -rf .gn
mkdir -p out/preloader/$VARIANTS
echo {} > out/preloader/$VARIANTS/hvigor_compile_hap_whitelist.json
mkdir -p out/$VARIANTS/$OUT_DIR/build_configs/parts_info
cp -rf build/indep_configs/mapping/component_mapping.json out/$VARIANTS/$OUT_DIR/build_configs
ln -s build/indep_configs/dotfile.gn .gn
${PYTHON3} ${SOURCE_ROOT_DIR}/build/indep_configs/scripts/generate_components.py -hp $1 -sp $2 -v ${VARIANTS} -rp ${SOURCE_ROOT_DIR} -t ${TEST_FILTER} -out ${OUT_DIR}
if [ -d "binarys/third_party/rust/crates" ];then
echo "rust directory exists"
if [ ! -d "third_party/rust/crates" ]; then
echo "third_party/rust/crates not exist, copy from binarys."
mkdir -p "third_party/rust"
cp -r binarys/third_party/rust/crates third_party/rust
fi
fi
if [ -d "binarys/test/testfwk/developer_test" ];then
echo "developer_test directory exists"
if [ ! -d "test/testfwk/developer_test" ]; then
echo "test/testfwk/developer_test not exist, copy from binarys."
mkdir -p "test/testfwk"
cp -r binarys/test/testfwk/developer_test test/testfwk
fi
fi
if [ -d "binarys/third_party/typescript" ];then
echo "typescript directory exists"
typescript_tgz_path="binarys/third_party/typescript/innerapis/build_typescript_etc/libs/ohos-typescript-4.9.5-r4.tgz"
if [ -f $typescript_tgz_path ]; then
echo "ohos-typescript-4.9.5-r4.tgz exists, starting extraction..."
tar -zxvf "$typescript_tgz_path" -C "binarys/third_party/typescript/innerapis/build_typescript_etc/libs/"
if [ $? -eq 0 ]; then
echo "Extraction completed successfully"
else
echo "Error: Failed to extract the tgz file"
fi
else
echo "Error: ohos-typescript-4.9.5-r4.tgz does not exists"
fi
if [ ! -d "third_party/typescript" ]; then
echo "third_party/typescript not exist, copy from binarys."
mkdir -p "third_party"
cp -r binarys/third_party/typescript third_party
cp -r binarys/third_party/typescript/innerapis/build_typescript_etc/libs/package/* third_party/typescript/
fi
fi
${PYTHON3} ${SOURCE_ROOT_DIR}/build/indep_configs/scripts/generate_target_build_gn.py -p $2 -rp ${SOURCE_ROOT_DIR} -t ${TEST_FILTER}
${PYTHON3} ${SOURCE_ROOT_DIR}/build/indep_configs/scripts/variants_info_handler.py -rp ${SOURCE_ROOT_DIR} -v ${VARIANTS}
${PYTHON3} ${SOURCE_ROOT_DIR}/build/indep_configs/scripts/gn_ninja_cmd.py -rp ${SOURCE_ROOT_DIR} -v ${VARIANTS} -out ${OUT_DIR} -t ${TEST_FILTER}
if [[ "$@" =~ "--product-name" ]]; then
for ((i=1; i<=$#; i++)); do
if [[ "${!i}" == "--product-name" ]]; then
next_index=$((i + 1))
if [[ $next_index -le $# ]]; then
cp -r out/$VARIANTS/$OUT_DIR out/${!next_index}
exit 0
fi
fi
done
else
exit 0
fi
if [ $? -ne 0 ]; then
exit 1
fi
echo -e "\033[0;33myou can use --skip-download to skip download binary dependencies while using hb build command\033[0m"
exit 0