blob: 3778cd4f7414112dfbcdab4cb7adb52402c305fa [file] [log] [blame] [raw]
#! /bin/sh
#
# Script to build binary
#
# Usage:
# sh build
# or
# ./build
VER=`cat grub4dos_version`
DATE=`date -u +%Y-%m-%d`
RELEASE=grub4dos-${VER}-${DATE}
COPY_FILES="COPYING README_GRUB4DOS.txt ChangeLog_*.txt \
config.sys default menu.lst grub.pif \
stage2/grldr stage2/grub.exe stage2/badgrub.exe stage2/grldr.mbr stage2/bootlace.com \
stage2/hmload.com"
rm -rf *.zip *.rar *~ || exit $?
if [ -d .svn ]; then
svn export . grub4dos-temp --force || exit $?
CURR_REVISION=""
line=0
while read w1 w2; do
line=$(($line+1))
if [ "$line" = 1 ]; then
[ "$w1" = "" -o "$w2" != "" ] && break
elif [ "$line" = 2 ]; then
[ "$w1" != "" ] && break
elif [ "$line" = 3 ]; then
[ "$w1" != "dir" -o "$w2" != "" ] && break
elif [ "$line" = 4 ]; then
[ "$w1" = "" -o "$w2" != "" ] && break
CURR_REVISION=$w1
elif [ "$line" = 5 ]; then
[ "$w1" = "" -o "$w2" != "" ] && break
SVN_URL=$w1
break
else
break
fi
done < .svn/entries
if [ "$CURR_REVISION" = "" ]; then
export LC_ALL=C
svninfo=$(svn info)
while read w1 w2 w3; do
if [ "$w1" = "Revision:" -a "$w2" != "" -a "$w3" = "" ]; then
CURR_REVISION=$w2
fi
if [ "$w1" = "URL:" -a "$w2" != "" -a "$w3" = "" ]; then
SVN_URL=$w2
break
fi
done << EOF
$svninfo
EOF
fi
if [ "$CURR_REVISION" != "" ]; then
# Generate patch file
if [ "$SVN_URL" = "" ]; then
SVN_URL="svn://svn.gna.org/svn/grub4dos/trunk"
fi
SVN_URL_HTTP=http://${SVN_URL#*://}
export LC_ALL=C
svn diff . > grub4dos-temp/grub4dos_r${CURR_REVISION}.diff 2> /dev/null
Get_source="Get the source code of this build by using anonymous svn in this way:\r\n\r\nsvn co -r $CURR_REVISION ${SVN_URL_HTTP} grub4dos\r\n\r\n"
if [ $SVN_URL = "svn://svn.gna.org/svn/grub4dos/trunk" ]; then
Get_source="${Get_source}or in this way:\r\n\r\nsvn co -r $CURR_REVISION ${SVN_URL} grub4dos\r\n\r\n"
fi
if [ -s grub4dos-temp/grub4dos_r${CURR_REVISION}.diff ]; then
echo -n -e "${Get_source}and then apply the patch against revision ${CURR_REVISION} you just downloaded:\r\n\r\n\
cd grub4dos\r\n\r\n\
patch -p0 < ../grub4dos_r${CURR_REVISION}.diff\r\n\r\n\
and now you may do a \"make\" to compile.\r\n\r\n\
\r\n" > grub4dos-temp/Get_Source_of_This_Build.txt
else
echo -n -e "\
${Get_source}and now you may \"cd grub4dos\" and do a \"make\" to compile.\r\n\r\n\
\r\n" > grub4dos-temp/Get_Source_of_This_Build.txt
fi
fi
else
rm -rf grub4dos-temp
files=$(echo *)
mkdir grub4dos-temp || exit $?
cp -a $files grub4dos-temp || exit $?
fi
cd grub4dos-temp || exit $?
#############################################
# Build english version
#############################################
./configure --enable-preset-menu=preset_menu.lst || exit $?
make || exit $?
mkdir grub4dos-${VER} || exit $?
cp $COPY_FILES grub4dos-${VER} || exit $?
if [ -f Get_Source_of_This_Build.txt ]; then
cp Get_Source_of_This_Build.txt grub4dos-${VER}
if [ -s grub4dos_r${CURR_REVISION}.diff ]; then
cp grub4dos_r${CURR_REVISION}.diff grub4dos-${VER}
fi
fi
#############################################
# Build chinese version
#############################################
patch -p1 < patch-chinese.diff || exit $?
make || exit $?
mkdir grub4dos-${VER}/chinese || exit $?
cp stage2/grldr stage2/grub.exe stage2/badgrub.exe grub4dos-${VER}/chinese || exit $?
#############################################
# Create ZIP ball or TAR ball
#############################################
rm -f ../${RELEASE}.zip ../${RELEASE}.rar ../${RELEASE}.tar.gz || exit $?
if ! rar a -r -s -m5 ../${RELEASE}.rar grub4dos-${VER} ; then
echo rar failed. Continue with zip or tar...
fi
if ! zip -r -q ../${RELEASE}.zip grub4dos-${VER} ; then
tar -czf ../${RELEASE}.tar.gz grub4dos-${VER}
fi
cd ..
# Do not remove grub4dos-temp as we can check and re-use it later.