| | |
| | | TOP_PATH=$(realpath $PRJ_PATH/..) |
| | | |
| | | # SDK build workspace |
| | | SDK_DIR=/work/sdk_build |
| | | SDK_DIR=android_build |
| | | |
| | | # binaries build prefix install path |
| | | PRFX_PATH=$PRJ_PATH/install |
| | |
| | | CONF_FILE=$TOP_PATH/config.json |
| | | |
| | | #4g files path |
| | | FILES_PATCH_4G=$PRJ_PATH/apps/Quectel_RILv3.6.24 |
| | | FILES_PATCH_4G=$PRJ_PATH/patches/Quectel_RILv3.6.24 |
| | | |
| | | #wifi firmware path |
| | | FILES_PATCH_WIFI=$PRJ_PATH/apps |
| | | FILES_PATCH_WIFI=$PRJ_PATH/patches/wifi/ |
| | | |
| | | # shell script will exit once get command error |
| | | set -e |
| | | |
| | |
| | | export SDK_VER=`jq -r ".android.sdk_ver" $CONF_FILE` |
| | | export SDK_PATH=`jq -r ".android.sdk_path" $CONF_FILE` |
| | | |
| | | export ARCH=arm64 |
| | | export ARCH=arm64 |
| | | |
| | | if [[ $BOARD =~ igkboard-rk3568 ]] ; then |
| | | LUNCH_BOARD=rk3568_t-userdebug |
| | | fi |
| | | if [[ $BOARD =~ igkboard-rk3568 ]] ; then |
| | | LAUNCH_BOARD=rk3568_t-userdebug |
| | | fi |
| | | |
| | | PYTHON_VERSION=$(python --version 2>&1 | awk '{print $2}' | cut -d. -f1) |
| | | if [ $PYTHON_VERSION != "3" ] ; then |
| | | PYTHON_VERSION=$(python --version 2>&1) |
| | | pr_error "ERROR: This SDK build need Python3, current version is $PYTHON_VERSION" |
| | | pr_warn "You can use 'sudo update-alternatives --config python' command to switch it" |
| | | exit |
| | | fi |
| | | PYTHON_VERSION=$(python --version 2>&1 | awk '{print $2}' | cut -d. -f1) |
| | | if [ $PYTHON_VERSION != "3" ] ; then |
| | | PYTHON_VERSION=$(python --version 2>&1) |
| | | pr_error "ERROR: This SDK build need Python3, current version is $PYTHON_VERSION" |
| | | pr_warn "You can use 'sudo update-alternatives --config python' command to switch it" |
| | | exit |
| | | fi |
| | | } |
| | | |
| | | function do_fetch() |
| | | { |
| | | SDK_FPATH=$SDK_PATH/$SDK_VER |
| | | SDK_FPATH=$SDK_PATH/$SDK_VER |
| | | |
| | | PATCH_FLAG="$SDK_DIR/kernel-5.10/arch/arm64/configs/rockchip_defconfig" |
| | | if [ -e $PATCH_FLAG ] ; then |
| | | pr_warn "SDK source code fetched already, skip do fetch" |
| | | fi |
| | | SDK_FLAG=$SDK_DIR/kernel-5.10/Makefile |
| | | |
| | | if [ ! -d $SDK_DIR/.repo ] ; then |
| | | cd $PRJ_PATH |
| | | |
| | | SDK_FILE=$SDK_PATH/$SDK_VER.tar.bz2 |
| | | if [ -e $SDK_FLAG ] ; then |
| | | pr_warn "INFO: SDK source code fetched already, skip do fetch" |
| | | fi |
| | | |
| | | if [ ! -e $SDK_FILE ] ; then |
| | | pr_error "ERROR: SDK package '$SDK_FILE' doesn't exist!" |
| | | exit |
| | | fi |
| | | if [ ! -d $SDK_DIR/.repo ] ; then |
| | | |
| | | pr_info "decompress SDK tarball $SDK_FILE..." |
| | | if [ ! -d $SDK_FPATH ] ; then |
| | | pr_error "ERROR: SDK package folder '$SDK_FPATH' doesn't exist!" |
| | | exit |
| | | fi |
| | | |
| | | do_unpack $SDK_FILE $SDK_DIR |
| | | fi |
| | | |
| | | cd $SDK_DIR |
| | | SDK_FILE=`ls $SDK_FPATH/*.tar.bz2 | head -n 1` |
| | | |
| | | if [ ! -e $PATCH_FLAG ] ; then |
| | | pr_info "repo sync to checkout source code..." |
| | | ./.repo/repo/repo sync -l |
| | | fi |
| | | pr_info "decompress SDK tarball $SDK_FILE..." |
| | | do_unpack $SDK_FILE $SDK_DIR |
| | | fi |
| | | |
| | | if ! grep -q '^CONFIG_CAN=y' $PATCH_FLAG ; then |
| | | pr_info "patch for android..." |
| | | cd kernel-5.10 |
| | | patch -p1 < $PRJ_PATH/patches/kernel.patch |
| | | |
| | | cd ../vendor/rockchip/common/ |
| | | patch -p1 < $PRJ_PATH/patches/4g_patch/vendor.patch |
| | | |
| | | cd $SDK_DIR/device/rockchip/common/ |
| | | patch -p1 < $PRJ_PATH/patches/4g_patch/device_rockchip.patch |
| | | if [ ! -e $SDK_FLAG ] ; then |
| | | pr_info "repo sync to checkout source code..." |
| | | cd $SDK_DIR |
| | | ./.repo/repo/repo sync -l |
| | | fi |
| | | } |
| | | |
| | | cd $SDK_DIR/device/google/atv/ |
| | | patch -p1 < $PRJ_PATH/patches/4g_patch/device_google.patch |
| | | function do_patch() |
| | | { |
| | | PATCH_FLAG="$SDK_DIR/kernel-5.10/arch/arm64/configs/rockchip_defconfig" |
| | | |
| | | cd $SDK_DIR/hardware/interfaces/ |
| | | patch -p1 < $PRJ_PATH/patches/4g_patch/hardware_interfaces.patch |
| | | cd $PRJ_PATH |
| | | |
| | | cd $SDK_DIR/hardware/ril/ |
| | | patch -p1 < $PRJ_PATH/patches/4g_patch/hardware_ril.patch |
| | | if grep -q '^CONFIG_CAN=y' $PATCH_FLAG > /dev/null 2>&1 ; then |
| | | pr_warn "INFO: Patch for Android SDK already" |
| | | return ; |
| | | fi |
| | | |
| | | cd $SDK_DIR/frameworks/opt/telephony/ |
| | | patch -p1 < $PRJ_PATH/patches/4g_patch/frameworks_opt_telephony.patch |
| | | |
| | | pr_info "copy 4G RIL library..." |
| | | pr_info "do patch for android source code" |
| | | cd $SDK_DIR/kernel-5.10 |
| | | patch -p1 < $PRJ_PATH/patches/kernel.patch |
| | | cd - |
| | | |
| | | cp -f $FILES_PATCH_4G/ip-* $SDK_DIR/vendor/rockchip/common/phone/etc/ppp/ |
| | | cp -f $FILES_PATCH_4G/ql-ril.conf $SDK_DIR/vendor/rockchip/common/phone/etc/ppp/ |
| | | cp -f $FILES_PATCH_4G/chat $SDK_DIR/vendor/rockchip/common/phone/bin/ |
| | | cp -f $FILES_PATCH_4G/libreference-ril.so $SDK_DIR/vendor/rockchip/common/phone/lib/libreference-ril-em05.so |
| | | cd $SDK_DIR/vendor/rockchip/common/ |
| | | patch -p1 < $PRJ_PATH/patches/4g_patch/vendor.patch |
| | | cd - |
| | | |
| | | pr_info "copy wifi firmware..." |
| | | cd $SDK_DIR/device/rockchip/common/ |
| | | patch -p1 < $PRJ_PATH/patches/4g_patch/device_rockchip.patch |
| | | cd - |
| | | |
| | | cp -f $FILES_PATCH_WIFI/mt7601u.bin $SDK_DIR/vendor/rockchip/common/wifi/firmware |
| | | cd $SDK_DIR/device/google/atv/ |
| | | patch -p1 < $PRJ_PATH/patches/4g_patch/device_google.patch |
| | | cd - |
| | | |
| | | cd |
| | | fi |
| | | cd $SDK_DIR/hardware/interfaces/ |
| | | patch -p1 < $PRJ_PATH/patches/4g_patch/hardware_interfaces.patch |
| | | cd - |
| | | |
| | | cd $SDK_DIR/hardware/ril/ |
| | | patch -p1 < $PRJ_PATH/patches/4g_patch/hardware_ril.patch |
| | | cd - |
| | | |
| | | cd $SDK_DIR/frameworks/opt/telephony/ |
| | | patch -p1 < $PRJ_PATH/patches/4g_patch/frameworks_opt_telephony.patch |
| | | cd - |
| | | |
| | | pr_info "copy 4G RIL library..." |
| | | |
| | | cp -f $FILES_PATCH_4G/ip-* $SDK_DIR/vendor/rockchip/common/phone/etc/ppp/ |
| | | cp -f $FILES_PATCH_4G/ql-ril.conf $SDK_DIR/vendor/rockchip/common/phone/etc/ppp/ |
| | | cp -f $FILES_PATCH_4G/chat $SDK_DIR/vendor/rockchip/common/phone/bin/ |
| | | cp -f $FILES_PATCH_4G/libreference-ril.so $SDK_DIR/vendor/rockchip/common/phone/lib/libreference-ril-em05.so |
| | | |
| | | pr_info "copy wifi firmware..." |
| | | cp -f $FILES_PATCH_WIFI/mt7601u.bin $SDK_DIR/vendor/rockchip/common/wifi/firmware |
| | | } |
| | | |
| | | function do_build() |
| | | { |
| | | pr_info "Choose your board" |
| | | cd $PRJ_PATH |
| | | |
| | | cd $SDK_DIR |
| | | |
| | | source build/envsetup.sh |
| | | lunch $LUNCH_BOARD |
| | | ./build.sh -AUCKu |
| | | pr_info "start build $LAUNCH_BOARD..." |
| | | |
| | | pr_info "System image will be installed to $SDK_DIR/rockdev/Image-rk3568_t" |
| | | ls ./rockdev/Image-rk3568_t |
| | | cd $SDK_DIR |
| | | source build/envsetup.sh |
| | | lunch $LAUNCH_BOARD |
| | | ./build.sh -AUCKu |
| | | |
| | | pr_info "System image will be installed to $SDK_DIR/rockdev/Image-rk3568_t" |
| | | ls ./rockdev/Image-rk3568_t |
| | | } |
| | | |
| | | #+-------------------------+ |
| | |
| | | |
| | | do_fetch |
| | | |
| | | do_patch |
| | | |
| | | do_build |