#!/bin/bash
build_dir=$1
opt=$2
cd /home/anolis-8.4 
pwd

if [ ! -d $build_dir ]
then
	echo "未输入构建目录或者构建目录不对!!!"
	exit 1
fi
rootdir="/home/anolis-8.4/rootdir/$build_dir"
resultdir="/home/anolis-8.4/build_result/$build_dir"
rpath="loongson@10.130.0.6:/home/loongson/os/loongnix-server/8.4"
mkdir -p $rootdir
mkdir -p $resultdir


function mock_build()
{
	echo "---------------->>>>>>start build $build_dir"

	cat build_list_$build_dir.txt | while read src_rpm
	do
		echo "*****************************build $src_rpm********************************"
		#暂时未构建module相关软件包
		echo "++++++++++++$result**********"
		case $src_rpm in
			*perl*)
				echo "perl-xxx, continue....."
				;;
			*module*)
				echo "xxx-module+xxx, continue....."
				;;
			*python*)
				##构建python3不构建python2  --with=python3 --without=python2
				echo "build python rpm:"
				echo "mock -r loongnix-8-loongarch64 rebuild --nocheck --with=python3 --without=python2 $src_rpm  '--define=dist .lns8' '--define=_unpackaged_files_terminate_build 0' --resultdir=$resultdir --rootdir=${rootdir}"
				mock -r loongnix-8-loongarch64 rebuild --nocheck --with=python3 --without=python2 $src_rpm  '--define=dist .lns8' '--define=_unpackaged_files_terminate_build 0' --resultdir=$resultdir --rootdir=${rootdir}
				;;
			*)
				#常规包构建
				echo "mock -r loongnix-8-loongarch64 rebuild --nocheck $src_rpm  '--define=dist .lns8' '--define=_unpackaged_files_terminate_build 0' --resultdir=$resultdir --rootdir=${rootdir}"
				mock -r loongnix-8-loongarch64 rebuild --nocheck $src_rpm  '--define=dist .lns8' '--define=_unpackaged_files_terminate_build 0' --resultdir=$resultdir --rootdir=${rootdir}
				;;	

		esac
	done
}
function build_perl_bootstrap()
{
	for perl_src_rpm in `find $build_dir -name perl*`
	do
                result=`echo $perl_src_rpm | grep module+`
                echo "++++++++++++$result**********"
		if [ "$result" == "" ]
		then
			#首次构建添加--define=perl_bootstrap 1
			echo "build python perl rpm for first time:"
			echo "mock -r loongnix-8-loongarch64 rebuild --nocheck $src_rpm  '--define=dist .lns8' '--define=perl_bootstrap 1' '--define=_unpackaged_files_terminate_build 0' --resultdir=$resultdir --rootdir=${rootdir}"
			mock -r loongnix-8-loongarch64 rebuild --nocheck $src_rpm  '--define=dist .lns8' '--define=perl_bootstrap 1' '--define=_unpackaged_files_terminate_build 0' --resultdir=$resultdir --rootdir=${rootdir}
		fi
	done
}
function build_perl()
{
	for perl_src_rpm in `find $build_dir -name perl*`
	do
                result=`echo $perl_src_rpm | grep module+`
                echo "++++++++++++$result**********"
		if [ "$result" == "" ]
		then
			echo "mock -r loongnix-8-loongarch64 rebuild --nocheck $perl_src_rpm  '--define=dist .lns8' '--define=_unpackaged_files_terminate_build 0' --resultdir=$resultdir --rootdir=${rootdir}"
			mock -r loongnix-8-loongarch64 rebuild --nocheck $perl_src_rpm  '--define=dist .lns8' '--define=_unpackaged_files_terminate_build 0' --resultdir=$resultdir --rootdir=${rootdir}
		fi
	done
}

function build_module()
{
        for src_rpm in `find $build_dir -name *.src.rpm`
        do
                result=`echo $src_rpm | grep module+`
               # echo "++++++++++++$result**********"
                if [ "$result" != "" ]
                then
                        echo $src_rpm
                        i=`echo ${src_rpm##*module}`
                        echo "i=$i"
                        j=`echo $i | sed -e "s/\.src\.rpm//" | sed -e "s/an8/lns8/" | sed -e "s/el8/lns8/"`
                        echo "j=$j"
                        dist_1="module$j"
                        echo $dist_1

                        echo "mock -r loongnix-8-loongarch64 rebuild --nocheck $src_rpm  '--define=dist .$dist_1' '--define=_unpackaged_files_terminate_build 0' --resultdir=${resultdir}_module --rootdir=${rootdir}"
                        mock -r loongnix-8-loongarch64 rebuild --nocheck $src_rpm  "--define=dist .${dist_1}" '--define=_unpackaged_files_terminate_build 0' --resultdir=${resultdir}_module --rootdir=${rootdir}
                fi
        done
}

function sync_to_06()
{
	echo "---------------->>>>>>start sync $build_dir to 10.130.0.6"

	mkdir -p $resultdir/Source/SPackages
	mkdir -p $resultdir/loongarch64/release/Packages/
	mv $resultdir/*.src.rpm $resultdir/Source/SPackages
	mv $resultdir/*.rpm $resultdir/loongarch64/release/Packages/
	#注意:使用--delete将删除远程数据，
#	rsync_opts="--recursive --update --times --progress --delete"
	rsync_opts="--recursive --update --times --progress"
	rsync $rsync_opts $resultdir $rpath
	ssh loongson@10.130.0.6 "cd /home/loongson/os/loongnix-server/8.4/aux-tools/scripts; ./createrepos_8.4.sh"
}

function sync_module_to_06()
{
	echo "---------------->>>>>>start sync $build_dir to 10.130.0.6"

	mkdir -p ${resultdir}_module/Source/SPackages
	mkdir -p ${resultdir}_module/loongarch64/release/Packages/
	mv ${resultdir}_module/*.src.rpm ${resultdir}_module/Source/SPackages
	mv ${resultdir}_module/*.rpm ${resultdir}_module/loongarch64/release/Packages/
	#注意:使用--delete将删除远程数据，
#	rsync_opts="--recursive --update --times --progress --delete"
	rsync_opts="--recursive --update --times --progress"
	rsync $rsync_opts ${resultdir}_module $rpath
	ssh loongson@10.130.0.6 "cd /home/loongson/os/loongnix-server/8.4/${build_dir}_module/loongarch64/release; createrepo ."
}

function update_build_list()
{
	echo "---------------->>>>>>start update build_list_$build_dir.txt"

	find $build_dir -name "*.src.rpm" > build_list_$build_dir.txt
	total_rpm_num=`find $build_dir -name "*.src.rpm" | wc -l`
	compiled_rpm_num=`ssh loongson@10.130.0.6 "ls os/loongnix-server/8.4/$build_dir/Source/SPackages/" | wc -l`

	echo "$build_dir 需要构建软件包个数为:$total_rpm_num"
	echo "$build_dir 已经构建软件包个数为:$compiled_rpm_num"
	#根据远程已经构建的软件包，梳理待构建软件包列表
	for rpm in `ssh loongson@10.130.0.6 "ls os/loongnix-server/8.4/$build_dir/Source/SPackages/"`
	do
		delete_rpm_list=`ssh loongson@10.130.0.6 "rpm -q --queryformat '%{NAME}-%{VERSION}\n' os/loongnix-server/8.4/$build_dir/Source/SPackages/$rpm 2>/dev/null"`
		sed -i "/$delete_rpm_list/d" build_list_$build_dir.txt
	done
	echo "$build_dir 剩余未构建软件包个数为:`cat build_list_$build_dir.txt | wc -l`"

}

case $opt in
	"build")
		update_build_list
		mock_build
		sync_to_06
		;;
	"build_all")
		find $build_dir -name "*.src.rpm" > build_list_$build_dir.txt
		mock_build
		sync_to_06
		;;
	"build_perl_bootstrap")
		for i in {1..10}
		do
			build_perl_bootstrap
			sync_to_06
		done
		;;
	"build_perl")
		for i in {1..10}
		do
			build_perl
			sync_to_06
		done
		;;
        "build_module")
                build_module
		sync_module_to_06
                ;;
	"sync")
		sync_to_06
		;;
	"sync-module")
		sync_module_to_06
		;;
	"update")
		sync_to_06
		update_build_list
		;;
	*)
		echo "第二个参数出错：build/build_all/build_perl_bootstrap/build_perl/build_module/sync/sync-module/update"
		;;
esac
