Jul
16
#! /bin/bash
# 2007-07-10 by Linuxing
# ver 1.7
E_WRONGARGS=65
E_ISOWRONG=60
#定义使用帮助的函数
helpecho ()
{
echo "`basename $0` can have 2 arguments."
echo "-----------------------------------------------------------------------------------------------"
echo "usage: `basename $0` [-a x86|x86_64] [-c copy|release] [-v dc4.1|dc5.0] SOURCEPATH TARGETPATH"
echo "-a means Architectue: x86|x86_64"
echo "-v means Operating System Name: dc4.1|dc5.0"
echo "-c means Copy or Release Tools Disk CD to DVD Disk: copy|release"
echo "-i means CD Disk iso name,for example:"
echo " RedFlag DC 5.0 for x86's CD Disk iso is redflag-dc5.0-sp2-x86-release-disc{1234}.iso"
echo " So you can use: -i redflag-dc5.0-sp2-x86-release"
echo "-p means patch version,for example:sp2"
echo "-h means HELP !!"
echo "SOURCEPATH means where is the location of your CD Disk iso in."
echo "TARGETPATH means where is you want to put the Final DVD iso to."
echo "-----------------------------------------------------------------------------------------------"
}
#获取命令行参数
while getopts "a:c:v:i:p:h" Option
do
case $Option in
a)
CUMARCH=$OPTARG
echo "CUMARCH is $CUMARCH"
;;
c)
case $OPTARG in
copy|release) CUMMODE=$OPTARG;;
*)
echo -e "-c argument is wrong./nPlease choice onf of 'copy' or 'release'."
exit $E_WRONGARGS
;;
esac
;;
v)
if [ $OPTARG == "dc4.1" ] || [ $OPTARG == "dc5.0" ];then
CUMVER=$OPTARG
else
echo -e "-v argument is wrong./nPlease choice onf of 'dc4.1' or 'dc5.0'."
exit $E_WRONGARGS
fi
;;
i)
if [ -e "$OPTARG-disc1.iso" ]; then
CUMISONAME=$OPTARG
else
echo -e "-i argument is wrong./nPlease confirm your iso name $OPTARG is right."
exit $E_WRONGARGS
fi
;;
p)
CUMPATCH=$OPTARG
echo "CUMPATCH is $CUMPATCH"
;;
h)
helpecho
exit
;;
esac
done
shift $(($OPTIND -1))
#设置ISO源路径及DVD的目标路径
if [ $# -eq 2 ] && [ -d $1 ] && [ -d $2 ]; then
SOURCEPATH=${1%/}
TEMPROOT=${2%/}
cd $SOURCEPATH;SOURCEPATH=`pwd`
cd - > /dev/null
cd $TEMPROOT;TEMPROOT=`pwd`
cd - > /dev/null
else
echo "Use default arguments."
helpecho
SOURCEPATH=`pwd`
TEMPROOT=`pwd`
fi
echo "SOURCEPATH is $SOURCEPATH"
echo "TARGETPATH is $TEMPROOT"
#设置一系列环境变量
MOUNTEMP="/mnt/disk"
TEMP="$TEMPROOT/install"
TEMPTOOLS="$TEMP/tools"
TEMPSCRIPTS="$TEMP/scripts"
TEMPRPMS="$TEMP/Asianux/RPMS"
TEMPBASE="$TEMP/Asianux/base"
TEMPISOLINUX="$TEMP/isolinux"
CUMSCRIPTS="$SOURCEPATH/scripts"
CUMRPMS="$SOURCEPATH/rpms"
CUMISOLINUX="$SOURCEPATH/isolinux"
CUMBASE="$SOURCEPATH/base"
DEFAULTARCH=x86
DEFAULTVER="dc5.0"
DEFAULTMODE="release"
DEFAULTPATCH="sp2"
ARCH=${CUMARCH:-$DEFAULTARCH}
NAME="redflag"
VER=${CUMVER:-$DEFAULTVER}
PATCH=${CUMPATCH:-$DEFAULTPATCH}
RELEASE=release
DEFAULTISONAME="$NAME-$VER-$PATCH-$ARCH-$RELEASE"
ISONAME=${CUMISONAME:-$DEFAULTISONAME}
DVDNAME="$NAME-$VER-$PATCH-$ARCH-$RELEASE-dvd.iso"
LIST=/tmp/list
TMPLIST=/tmp/list.tmp
EXCLUDEFILES="rflicense cdrecord evlog kolourpaint libeasyrpm openhpi openhpi-clients openhpi-daemon openhpi-devel rfmon rfuser rpmtools"
MODE=${CUMMODE:-$DEFAULTMODE}
#定义挂载及解压ISO的函数
mountiso ()
{
if [ ! -d $MOUNTEMP ]; then
mkdir -p $MOUNTEMP
echo "$MOUNTEMP directory create successfully."
fi
if [ ! -d $TEMP ]; then
mkdir -p $TEMP
echo "$TEMP directory create successfully."
fi
echo "Mount $FILENAME"
mount -o loop $FILENAME $MOUNTEMP
cd $MOUNTEMP
echo "Move source cd packages to $TEMP directory."
tar cf - ./|tar xf - -C $TEMP
cd -
echo "Umount $MOUNTEMP"
umount $MOUNTEMP
}
#定义生成rpm临时list文件的函数
mklist ()
{
local file
local filename
local rpmlist
for file in $RPMSPATH/*.rpm
do
#filename=${file#$RPMSPATH/}
#filename=$(expr match "$file" '\([a-zA-Z0-9_]*-[a-zA-Z\-]*\)')
#filename=${file%-}
filename=`rpm -qp --nosignature --qf "%{name}" $file`
for rpmlist in $EXCLUDEFILES
do
if [ "$filename" == "$rpmlist" ];then
continue 2
fi
done
echo $filename >> $TMPLIST
#echo "Copy $file packages to $TEMPRPMS directory."
cp -a $file $TEMPRPMS
done
}
#定义生成新的comps.xml的函数
mkcomps ()
{
echo "Modify comps.xml file"
echo '<!-- Addons rpm packages -->' >> $LIST
echo "
<group>
<id>$ID</id>
<name>$ID</name>
<uservisible>true</uservisible>
<default>false</default>
<description></description>
<packagelist>" >> $LIST
sed -i 's#\(.*\)# <packagereq type="optional">\1</packagereq>#' $TMPLIST
cat $TMPLIST >> $LIST
echo ' </packagelist>
</group>
' >> $LIST
sed -i -e "/<CUMGROUP>/r $LIST" $CUMBASE/comps.xml
sed -i "/<CUMID>/a\ <subcategory>$ID</subcategory>" $CUMBASE/comps.xml
echo "Clean up $LIST & $TMPLIST file."
: > $LIST
: > $TMPLIST
}
#定义释放Tools工具盘的函数
releasedisk ()
{
echo "Mount $FILENAME"
mount -o loop $FILENAME $MOUNTEMP
local path
echo "Create Disk$i CD packages list."
ID=disk$i
#CUMRPMSPATH="$MOUNTEMP/RedFlag/RPMS $MOUNTEMP/EASuite/RPMS"
CUMRPMSPATH="$MOUNTEMP/RedFlag/RPMS"
for path in $CUMRPMSPATH
do
RPMSPATH=$path
mklist
done
echo "Add Disk$i rpm info to comps.xml file"
mkcomps
if [ ! -d $TEMPTOOLS ]; then
mkdir $TEMPTOOLS
echo "$TEMPTOOLS directory create successfully."
fi
echo "Copy rflicense packages to $TEMPTOOLS directory."
cp -a $MOUNTEMP/RedFlag/RPMS/rflicense* $TEMPTOOLS
if [ $VER == "dc5.0" ];then
echo "Copy Disk$i Documents and other tools to $TEMPTOOLS directory."
cp -a $MOUNTEMP/Documents $TEMPTOOLS
cp -a $MOUNTEMP/EASuite $TEMPTOOLS
cp -a $MOUNTEMP/emulex $TEMPTOOLS
cp -a $MOUNTEMP/image $TEMPTOOLS
cp -a $MOUNTEMP/ICC $TEMPTOOLS
cp -a $MOUNTEMP/RedFlag/Kernel $TEMPTOOLS
fi
echo "Umount $MOUNTEMP"
umount $MOUNTEMP
}
#定义拷贝Tools工具盘的函数
copydisk ()
{
if [ ! -d $TEMPTOOLS ]; then
mkdir $TEMPTOOLS
echo "$TEMPTOOLS directory create successfully."
fi
echo "Copy $FILENAME to $TEMPTOOLS directory."
cp $FILENAME $TEMPTOOLS
}
#定义生成hdlist的函数
createhdlist ()
{
export PYTHONPATH=/usr/lib/anaconda:/usr/lib/anaconda-runtime:$PYTHONPATH
export PATH="$PATH:/usr/lib/anaconda-runtime"
cd $TEMPROOT
genhdlist --productpath "Asianux" $TEMP
if [ `uname -i` = "$ARCH" ]; then
pkgorder --product Asianux $TEMP Asianux > $TEMPROOT/pkgorder.txt
genhdlist --withnumbers --fileorder $TEMPROOT/pkgorder.txt \
--productpath "Asianux" $TEMP
fi
cd -
}
#定义把自定义rpm包加入光盘的函数
rpmsfile ()
{
if [ -d $CUMRPMS ]; then
echo "Create Customize packages list."
ID=addons
RPMSPATH=$CUMRPMS
mklist
echo "Add Customize info to comps.xml file"
mkcomps
fi
}
#定义加入kickstart脚本到光盘中的函数
autoks ()
{
if [ -e "$CUMISOLINUX/autoks.cfg" ]; then
echo "Copy some new .msg & autoks.cfg scripts to 'isolinux' directory."
cp -p $CUMISOLINUX/* $TEMPISOLINUX
else
echo "There is no autoks.cfg file in $CUMISOLINUX directory."
fi
}
#定义加入自定义脚本到光盘中的函数
scriptsfile ()
{
if [ ! -d $TEMPSCRIPTS ]; then
mkdir $TEMPSCRIPTS
echo "$TEMPSCRIPTS directory create successfully."
fi
echo "Copy all scripts to $TEMPSCRIPTS."
cp -a $CUMSCRIPTS $TEMPSCRIPTS
}
#定义生成DVD光盘的函数
mkdvdiso ()
{
cd $TEMP
echo "Remove all TRANS.TBL files."
find $TEMP -name 'TRANS.TBL' -exec rm {} \;
#修改.discinfo中第四行的光盘数量标识
echo "Modify .discinfo file"
sed -i '4c1' .discinfo
echo "Renew $CUMBASE/comps.xml file"
sed -i '/<CUMGROUP>/d' $CUMBASE/comps.xml
sed -i '/<CUMID>/d' $CUMBASE/comps.xml
echo "Copy comps.xml to BASE directory."
cp -p $CUMBASE/comps.xml $TEMPBASE
echo "Resume original comps.xml file"
cp $CUMBASE/comps.xml $CUMBASE/comps.xml.new
cp $CUMBASE/comps.xml.bak $CUMBASE/comps.xml
echo "Create $TEMPROOT/$DVDNAME"
mkisofs -b isolinux/isolinux.bin -no-emul-boot \
-boot-load-size 4 -boot-info-table -c isolinux/boot.cat \
-l -J -o $TEMPROOT/$DVDNAME -r -T \
-V "$NAME $VER $RELEASE" $TEMP
cd -
echo "*******************************************"
echo "Final DVD ISO is $TEMPROOT/$DVDNAME"
echo "Congratulation !! All have been done."
echo "*******************************************"
}
#定义清理临时文件的函数
cleanup ()
{
rm -rf $TEMP
rm -f $TEMPROOT/pkgorder.txt
}
#定义预编译准备的函数
pre()
{
if [ -d $TEMP ]; then
echo "You want to remove $TEMP directory?(Y/N)"
read CONFIRM
case $CONFIRM in
Y|y)
echo "Remove $TEMP directory."
rm -rf $TEMP
;;
esac
fi
if [ -e $DVDNAME ]; then
echo "You want to remove $DVDNAME file?(Y/N)"
read CONFIRM
case $CONFIRM in
Y|y)
echo "Remove $DVDNAME file."
rm $DVDNAME
;;
esac
fi
if [ -e $CUMBASE/comps.xml ]; then
echo "Backup customize comps.xml file"
cp $CUMBASE/comps.xml $CUMBASE/comps.xml.bak
cp $CUMBASE/comps.xml $CUMBASE/comps.xml.`date +%s`
fi
echo "Clean up $LIST & $TMPLIST file."
: > $LIST
: > $TMPLIST
}
#定义针对dc5x86_64sp2光盘使用3张系统安装盘时候的函数
dc5x86_64sp2 ()
{
for i in `seq 5`
do
FILENAME="$ISONAME-disc$i.iso"
case $i in
4)
if [ ! -e $FILENAME ]; then
echo " $FILENAME not found."
echo " Sleep 3 sec,Countinue ... "
sleep 3
else
if [ "$MODE" = "release" ] || [ -z $MODE ]; then
echo "Copy Disk$i rpms & create new comps.xml"
releasedisk
else
copydisk
fi
fi
continue
;;
5)
if [ ! -e $FILENAME ]; then
echo " $FILENAME not found."
echo " Sleep 3 sec,Countinue ... "
sleep 3
else
copydisk
fi
continue
;;
*)
if [ ! -e $FILENAME ]; then
echo "$FILENAME not found."
exit $E_ISOWRONG
else
echo "Try to release $FILENAME"
mountiso
fi
;;
esac
done
}
#定义针对其他安装盘使用的函数(2张系统安装盘,1张工具盘,1张开发光盘)
othercd ()
{
for i in `seq 4`
do
FILENAME="$ISONAME-disc$i.iso"
case $i in
3)
if [ ! -e $FILENAME ]; then
echo " $FILENAME not found."
echo " Sleep 3 sec,Countinue ... "
sleep 3
else
if [ "$MODE" = "release" ] || [ -z $MODE ]; then
echo "Copy Disk$i rpms & create new comps.xml"
releasedisk
else
copydisk
fi
fi
continue
;;
4)
if [ ! -e $FILENAME ]; then
echo " $FILENAME not found."
echo " Sleep 3 sec,Countinue ... "
sleep 3
else
copydisk
fi
continue
;;
*)
if [ ! -e $FILENAME ]; then
echo "$FILENAME not found."
exit $E_ISOWRONG
else
echo "Try to release $FILENAME"
mountiso
fi
;;
esac
done
}
#程序从这里开始正式执行
#-------------------Begin here----------------------------#
pre
cd $SOURCEPATH
if [ $ARCH = "x86_64" ] && [ $VER = "dc5.0" ] && [ $PATCH = "sp2" ]; then
dc5x86_64sp2
else
othercd
fi
if [ -d $CUMSCRIPTS ]; then
echo "Copy specail scripts to $TEMPSCRIPTS."
scriptsfile
else
echo "There is no $CUMSCRIPTS directory."
fi
if [ -d $CUMRPMS ]; then
echo "Copy additional rpms to $DVDNAME."
rpmsfile
else
echo "There is no $CUMRPMS directory."
fi
if [ -d $CUMISOLINUX ]; then
echo "Add autoks.cfg script to $DVDNAME's isolinux directory."
autoks
else
echo "There is no $CUMISOLINUX directory."
fi
echo "Generate hdlist file."
createhdlist
echo "Make DVD ISO."
mkdvdiso
echo "Clean UP !!"
cleanup
# 2007-07-10 by Linuxing
# ver 1.7
E_WRONGARGS=65
E_ISOWRONG=60
#定义使用帮助的函数
helpecho ()
{
echo "`basename $0` can have 2 arguments."
echo "-----------------------------------------------------------------------------------------------"
echo "usage: `basename $0` [-a x86|x86_64] [-c copy|release] [-v dc4.1|dc5.0] SOURCEPATH TARGETPATH"
echo "-a means Architectue: x86|x86_64"
echo "-v means Operating System Name: dc4.1|dc5.0"
echo "-c means Copy or Release Tools Disk CD to DVD Disk: copy|release"
echo "-i means CD Disk iso name,for example:"
echo " RedFlag DC 5.0 for x86's CD Disk iso is redflag-dc5.0-sp2-x86-release-disc{1234}.iso"
echo " So you can use: -i redflag-dc5.0-sp2-x86-release"
echo "-p means patch version,for example:sp2"
echo "-h means HELP !!"
echo "SOURCEPATH means where is the location of your CD Disk iso in."
echo "TARGETPATH means where is you want to put the Final DVD iso to."
echo "-----------------------------------------------------------------------------------------------"
}
#获取命令行参数
while getopts "a:c:v:i:p:h" Option
do
case $Option in
a)
CUMARCH=$OPTARG
echo "CUMARCH is $CUMARCH"
;;
c)
case $OPTARG in
copy|release) CUMMODE=$OPTARG;;
*)
echo -e "-c argument is wrong./nPlease choice onf of 'copy' or 'release'."
exit $E_WRONGARGS
;;
esac
;;
v)
if [ $OPTARG == "dc4.1" ] || [ $OPTARG == "dc5.0" ];then
CUMVER=$OPTARG
else
echo -e "-v argument is wrong./nPlease choice onf of 'dc4.1' or 'dc5.0'."
exit $E_WRONGARGS
fi
;;
i)
if [ -e "$OPTARG-disc1.iso" ]; then
CUMISONAME=$OPTARG
else
echo -e "-i argument is wrong./nPlease confirm your iso name $OPTARG is right."
exit $E_WRONGARGS
fi
;;
p)
CUMPATCH=$OPTARG
echo "CUMPATCH is $CUMPATCH"
;;
h)
helpecho
exit
;;
esac
done
shift $(($OPTIND -1))
#设置ISO源路径及DVD的目标路径
if [ $# -eq 2 ] && [ -d $1 ] && [ -d $2 ]; then
SOURCEPATH=${1%/}
TEMPROOT=${2%/}
cd $SOURCEPATH;SOURCEPATH=`pwd`
cd - > /dev/null
cd $TEMPROOT;TEMPROOT=`pwd`
cd - > /dev/null
else
echo "Use default arguments."
helpecho
SOURCEPATH=`pwd`
TEMPROOT=`pwd`
fi
echo "SOURCEPATH is $SOURCEPATH"
echo "TARGETPATH is $TEMPROOT"
#设置一系列环境变量
MOUNTEMP="/mnt/disk"
TEMP="$TEMPROOT/install"
TEMPTOOLS="$TEMP/tools"
TEMPSCRIPTS="$TEMP/scripts"
TEMPRPMS="$TEMP/Asianux/RPMS"
TEMPBASE="$TEMP/Asianux/base"
TEMPISOLINUX="$TEMP/isolinux"
CUMSCRIPTS="$SOURCEPATH/scripts"
CUMRPMS="$SOURCEPATH/rpms"
CUMISOLINUX="$SOURCEPATH/isolinux"
CUMBASE="$SOURCEPATH/base"
DEFAULTARCH=x86
DEFAULTVER="dc5.0"
DEFAULTMODE="release"
DEFAULTPATCH="sp2"
ARCH=${CUMARCH:-$DEFAULTARCH}
NAME="redflag"
VER=${CUMVER:-$DEFAULTVER}
PATCH=${CUMPATCH:-$DEFAULTPATCH}
RELEASE=release
DEFAULTISONAME="$NAME-$VER-$PATCH-$ARCH-$RELEASE"
ISONAME=${CUMISONAME:-$DEFAULTISONAME}
DVDNAME="$NAME-$VER-$PATCH-$ARCH-$RELEASE-dvd.iso"
LIST=/tmp/list
TMPLIST=/tmp/list.tmp
EXCLUDEFILES="rflicense cdrecord evlog kolourpaint libeasyrpm openhpi openhpi-clients openhpi-daemon openhpi-devel rfmon rfuser rpmtools"
MODE=${CUMMODE:-$DEFAULTMODE}
#定义挂载及解压ISO的函数
mountiso ()
{
if [ ! -d $MOUNTEMP ]; then
mkdir -p $MOUNTEMP
echo "$MOUNTEMP directory create successfully."
fi
if [ ! -d $TEMP ]; then
mkdir -p $TEMP
echo "$TEMP directory create successfully."
fi
echo "Mount $FILENAME"
mount -o loop $FILENAME $MOUNTEMP
cd $MOUNTEMP
echo "Move source cd packages to $TEMP directory."
tar cf - ./|tar xf - -C $TEMP
cd -
echo "Umount $MOUNTEMP"
umount $MOUNTEMP
}
#定义生成rpm临时list文件的函数
mklist ()
{
local file
local filename
local rpmlist
for file in $RPMSPATH/*.rpm
do
#filename=${file#$RPMSPATH/}
#filename=$(expr match "$file" '\([a-zA-Z0-9_]*-[a-zA-Z\-]*\)')
#filename=${file%-}
filename=`rpm -qp --nosignature --qf "%{name}" $file`
for rpmlist in $EXCLUDEFILES
do
if [ "$filename" == "$rpmlist" ];then
continue 2
fi
done
echo $filename >> $TMPLIST
#echo "Copy $file packages to $TEMPRPMS directory."
cp -a $file $TEMPRPMS
done
}
#定义生成新的comps.xml的函数
mkcomps ()
{
echo "Modify comps.xml file"
echo '<!-- Addons rpm packages -->' >> $LIST
echo "
<group>
<id>$ID</id>
<name>$ID</name>
<uservisible>true</uservisible>
<default>false</default>
<description></description>
<packagelist>" >> $LIST
sed -i 's#\(.*\)# <packagereq type="optional">\1</packagereq>#' $TMPLIST
cat $TMPLIST >> $LIST
echo ' </packagelist>
</group>
' >> $LIST
sed -i -e "/<CUMGROUP>/r $LIST" $CUMBASE/comps.xml
sed -i "/<CUMID>/a\ <subcategory>$ID</subcategory>" $CUMBASE/comps.xml
echo "Clean up $LIST & $TMPLIST file."
: > $LIST
: > $TMPLIST
}
#定义释放Tools工具盘的函数
releasedisk ()
{
echo "Mount $FILENAME"
mount -o loop $FILENAME $MOUNTEMP
local path
echo "Create Disk$i CD packages list."
ID=disk$i
#CUMRPMSPATH="$MOUNTEMP/RedFlag/RPMS $MOUNTEMP/EASuite/RPMS"
CUMRPMSPATH="$MOUNTEMP/RedFlag/RPMS"
for path in $CUMRPMSPATH
do
RPMSPATH=$path
mklist
done
echo "Add Disk$i rpm info to comps.xml file"
mkcomps
if [ ! -d $TEMPTOOLS ]; then
mkdir $TEMPTOOLS
echo "$TEMPTOOLS directory create successfully."
fi
echo "Copy rflicense packages to $TEMPTOOLS directory."
cp -a $MOUNTEMP/RedFlag/RPMS/rflicense* $TEMPTOOLS
if [ $VER == "dc5.0" ];then
echo "Copy Disk$i Documents and other tools to $TEMPTOOLS directory."
cp -a $MOUNTEMP/Documents $TEMPTOOLS
cp -a $MOUNTEMP/EASuite $TEMPTOOLS
cp -a $MOUNTEMP/emulex $TEMPTOOLS
cp -a $MOUNTEMP/image $TEMPTOOLS
cp -a $MOUNTEMP/ICC $TEMPTOOLS
cp -a $MOUNTEMP/RedFlag/Kernel $TEMPTOOLS
fi
echo "Umount $MOUNTEMP"
umount $MOUNTEMP
}
#定义拷贝Tools工具盘的函数
copydisk ()
{
if [ ! -d $TEMPTOOLS ]; then
mkdir $TEMPTOOLS
echo "$TEMPTOOLS directory create successfully."
fi
echo "Copy $FILENAME to $TEMPTOOLS directory."
cp $FILENAME $TEMPTOOLS
}
#定义生成hdlist的函数
createhdlist ()
{
export PYTHONPATH=/usr/lib/anaconda:/usr/lib/anaconda-runtime:$PYTHONPATH
export PATH="$PATH:/usr/lib/anaconda-runtime"
cd $TEMPROOT
genhdlist --productpath "Asianux" $TEMP
if [ `uname -i` = "$ARCH" ]; then
pkgorder --product Asianux $TEMP Asianux > $TEMPROOT/pkgorder.txt
genhdlist --withnumbers --fileorder $TEMPROOT/pkgorder.txt \
--productpath "Asianux" $TEMP
fi
cd -
}
#定义把自定义rpm包加入光盘的函数
rpmsfile ()
{
if [ -d $CUMRPMS ]; then
echo "Create Customize packages list."
ID=addons
RPMSPATH=$CUMRPMS
mklist
echo "Add Customize info to comps.xml file"
mkcomps
fi
}
#定义加入kickstart脚本到光盘中的函数
autoks ()
{
if [ -e "$CUMISOLINUX/autoks.cfg" ]; then
echo "Copy some new .msg & autoks.cfg scripts to 'isolinux' directory."
cp -p $CUMISOLINUX/* $TEMPISOLINUX
else
echo "There is no autoks.cfg file in $CUMISOLINUX directory."
fi
}
#定义加入自定义脚本到光盘中的函数
scriptsfile ()
{
if [ ! -d $TEMPSCRIPTS ]; then
mkdir $TEMPSCRIPTS
echo "$TEMPSCRIPTS directory create successfully."
fi
echo "Copy all scripts to $TEMPSCRIPTS."
cp -a $CUMSCRIPTS $TEMPSCRIPTS
}
#定义生成DVD光盘的函数
mkdvdiso ()
{
cd $TEMP
echo "Remove all TRANS.TBL files."
find $TEMP -name 'TRANS.TBL' -exec rm {} \;
#修改.discinfo中第四行的光盘数量标识
echo "Modify .discinfo file"
sed -i '4c1' .discinfo
echo "Renew $CUMBASE/comps.xml file"
sed -i '/<CUMGROUP>/d' $CUMBASE/comps.xml
sed -i '/<CUMID>/d' $CUMBASE/comps.xml
echo "Copy comps.xml to BASE directory."
cp -p $CUMBASE/comps.xml $TEMPBASE
echo "Resume original comps.xml file"
cp $CUMBASE/comps.xml $CUMBASE/comps.xml.new
cp $CUMBASE/comps.xml.bak $CUMBASE/comps.xml
echo "Create $TEMPROOT/$DVDNAME"
mkisofs -b isolinux/isolinux.bin -no-emul-boot \
-boot-load-size 4 -boot-info-table -c isolinux/boot.cat \
-l -J -o $TEMPROOT/$DVDNAME -r -T \
-V "$NAME $VER $RELEASE" $TEMP
cd -
echo "*******************************************"
echo "Final DVD ISO is $TEMPROOT/$DVDNAME"
echo "Congratulation !! All have been done."
echo "*******************************************"
}
#定义清理临时文件的函数
cleanup ()
{
rm -rf $TEMP
rm -f $TEMPROOT/pkgorder.txt
}
#定义预编译准备的函数
pre()
{
if [ -d $TEMP ]; then
echo "You want to remove $TEMP directory?(Y/N)"
read CONFIRM
case $CONFIRM in
Y|y)
echo "Remove $TEMP directory."
rm -rf $TEMP
;;
esac
fi
if [ -e $DVDNAME ]; then
echo "You want to remove $DVDNAME file?(Y/N)"
read CONFIRM
case $CONFIRM in
Y|y)
echo "Remove $DVDNAME file."
rm $DVDNAME
;;
esac
fi
if [ -e $CUMBASE/comps.xml ]; then
echo "Backup customize comps.xml file"
cp $CUMBASE/comps.xml $CUMBASE/comps.xml.bak
cp $CUMBASE/comps.xml $CUMBASE/comps.xml.`date +%s`
fi
echo "Clean up $LIST & $TMPLIST file."
: > $LIST
: > $TMPLIST
}
#定义针对dc5x86_64sp2光盘使用3张系统安装盘时候的函数
dc5x86_64sp2 ()
{
for i in `seq 5`
do
FILENAME="$ISONAME-disc$i.iso"
case $i in
4)
if [ ! -e $FILENAME ]; then
echo " $FILENAME not found."
echo " Sleep 3 sec,Countinue ... "
sleep 3
else
if [ "$MODE" = "release" ] || [ -z $MODE ]; then
echo "Copy Disk$i rpms & create new comps.xml"
releasedisk
else
copydisk
fi
fi
continue
;;
5)
if [ ! -e $FILENAME ]; then
echo " $FILENAME not found."
echo " Sleep 3 sec,Countinue ... "
sleep 3
else
copydisk
fi
continue
;;
*)
if [ ! -e $FILENAME ]; then
echo "$FILENAME not found."
exit $E_ISOWRONG
else
echo "Try to release $FILENAME"
mountiso
fi
;;
esac
done
}
#定义针对其他安装盘使用的函数(2张系统安装盘,1张工具盘,1张开发光盘)
othercd ()
{
for i in `seq 4`
do
FILENAME="$ISONAME-disc$i.iso"
case $i in
3)
if [ ! -e $FILENAME ]; then
echo " $FILENAME not found."
echo " Sleep 3 sec,Countinue ... "
sleep 3
else
if [ "$MODE" = "release" ] || [ -z $MODE ]; then
echo "Copy Disk$i rpms & create new comps.xml"
releasedisk
else
copydisk
fi
fi
continue
;;
4)
if [ ! -e $FILENAME ]; then
echo " $FILENAME not found."
echo " Sleep 3 sec,Countinue ... "
sleep 3
else
copydisk
fi
continue
;;
*)
if [ ! -e $FILENAME ]; then
echo "$FILENAME not found."
exit $E_ISOWRONG
else
echo "Try to release $FILENAME"
mountiso
fi
;;
esac
done
}
#程序从这里开始正式执行
#-------------------Begin here----------------------------#
pre
cd $SOURCEPATH
if [ $ARCH = "x86_64" ] && [ $VER = "dc5.0" ] && [ $PATCH = "sp2" ]; then
dc5x86_64sp2
else
othercd
fi
if [ -d $CUMSCRIPTS ]; then
echo "Copy specail scripts to $TEMPSCRIPTS."
scriptsfile
else
echo "There is no $CUMSCRIPTS directory."
fi
if [ -d $CUMRPMS ]; then
echo "Copy additional rpms to $DVDNAME."
rpmsfile
else
echo "There is no $CUMRPMS directory."
fi
if [ -d $CUMISOLINUX ]; then
echo "Add autoks.cfg script to $DVDNAME's isolinux directory."
autoks
else
echo "There is no $CUMISOLINUX directory."
fi
echo "Generate hdlist file."
createhdlist
echo "Make DVD ISO."
mkdvdiso
echo "Clean UP !!"
cleanup

上善若水
2008/11/05 14:59
高深,一时还看不太懂
linuxing 回复于 2008/11/06 09:01
实际上很简单,新版本Asianux 3.0的更简单,脚本是看上去复杂了。
sinhoi

2007/08/15 08:51
mkcomps 函数写的不错.
分页: 1/1
1

