device/rockchip/rk3588/vcloud/build_docker_tar.sh

130 lines
3.5 KiB
Bash
Raw Permalink Normal View History

2025-08-25 08:28:21 +08:00
#!/bin/bash
if [ "$(id -u)" -ne 0 ]; then
echo "You are not root. Please run as root."
exit 1
fi
DATE=$(date +%Y%m%d)
source build/envsetup.sh >/dev/null
lunch vcloud-user
export PATH=$ANDROID_BUILD_TOP/prebuilts/clang/host/linux-x86/clang-r416183b/bin:$PATH
export TARGET_PRODUCT=`get_build_var TARGET_PRODUCT`
export BUILD_VARIANT=`get_build_var TARGET_BUILD_VARIANT`
export ANDROID_VERSION=`get_build_var PRODUCT_ANDROID_VERSION`
# check TARGET_PRODUCT is null, if null, exit
if [ -z "$TARGET_PRODUCT" ]; then
echo "TARGET_PRODUCT is null, please run lunch first"
exit 1
fi
export PROJECT_TOP=`gettop`
#lunch $TARGET_PRODUCT-$BUILD_VARIANT
FORHOSTDATE=$(date +%Y%m%d)
IMAGE_STUB_PATH=Image/"$TARGET_PRODUCT"_"$ANDROID_VERSION"_"$BUILD_VARIANT"
IMAGE_STUB_PATH="$(echo $IMAGE_STUB_PATH | tr '[:lower:]' '[:upper:]')"
IMAGE_FULL_PATH=$PROJECT_TOP/$IMAGE_STUB_PATH/IMAGES/container/$TARGET_PRODUCT-"$ANDROID_VERSION"-$BUILD_VARIANT.tgz
# check image file path exist, if not exist, exit
if [ ! -f $IMAGE_FULL_PATH ]; then
echo "image file not exist, please build android first"
exit 1
fi
DOCKER_TAR_PATH=$IMAGE_STUB_PATH/DOCKERTARS
mkdir -p $DOCKER_TAR_PATH
DOCKER_TAR_FULL_PATH=$PROJECT_TOP/$DOCKER_TAR_PATH/$TARGET_PRODUCT"_"$ANDROID_VERSION"_"$BUILD_VARIANT"_"$DATE".tar"
DOCKER_TMP_IMG_NAME=$TARGET_PRODUCT"_"$ANDROID_VERSION"_"$BUILD_VARIANT"_tmp"
# check docker command, if not exist, install docker
if ! command -v docker &> /dev/null
then
echo "docker command not found, please install docker"
exit 1
fi
echo "===================== start ======================="
mkdir -p $DOCKER_TAR_PATH
mkdir -p $DOCKER_TAR_PATH/super_img
cd $DOCKER_TAR_PATH
rm -rf super_img/*
echo "extract android image"
tar -xvf $IMAGE_FULL_PATH
# check super_img/system.img exist, if not exist, exit
if [ ! -f super_img/system.img ]; then
echo "android image not correct, system.img not exist"
exit 1
fi
if [ ! -f super_img/vendor.img ]; then
echo "android image not correct, vendor.img not exist"
exit 1
fi
rm -rf super_img/build
cp -rf $PROJECT_TOP/device/rockchip/rk3588/vcloud/container_v1/build/* super_img/
# check init_wrapper exist, if not exist, exit
if [ ! -f super_img/init_wrapper ]; then
echo "android image not correct, init_wrapper not exist"
exit 1
fi
cd super_img
# check build.sh exist, if not exist, exit
if [ ! -f build.sh ]; then
echo "android image not correct, build.sh not exist"
exit 1
fi
echo "start build docker image now..."
# check docker image exists, if exist, remove it
if [ ! -z "$(docker images -q $DOCKER_TMP_IMG_NAME)" ]; then
docker rmi $DOCKER_TMP_IMG_NAME
fi
./build.sh $DOCKER_TMP_IMG_NAME
# check docker image exist, if not exist, exit
if [ -z "$(docker images -q $DOCKER_TMP_IMG_NAME)" ]; then
echo "docker image not exist, build failed"
exit 1
fi
# save docker image to tar file
echo "save docker image to tar file $DOCKER_TAR_FULL_PATH"
docker save -o $DOCKER_TAR_FULL_PATH $DOCKER_TMP_IMG_NAME
cd ..
rm -rf super_img
if [ ! -z "$(docker images -q $DOCKER_TMP_IMG_NAME)" ]; then
docker rmi $DOCKER_TMP_IMG_NAME
fi
echo "success build docker image: $DOCKER_TAR_FULL_PATH"
chmod 777 $DOCKER_TAR_FULL_PATH
echo "===================== end ======================="
# if [ "$BUILD_PATCH" = true ] ; then
# #Generate patches
# mkdir -p $STUB_PATCH_PATH
# .repo/repo/repo forall -c "$PROJECT_TOP/device/rockchip/common/gen_patches_body.sh"
# .repo/repo/repo manifest -r -o out/commit_id.xml
# #Copy stubs
# cp out/commit_id.xml $STUB_PATH/manifest_${DATE}.xml
# fi