forked from chenall/grub4dos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild
executable file
·156 lines (139 loc) · 4.61 KB
/
build
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#! /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 *.7z *~ || exit $?
if svn export . grub4dos-temp --force > /dev/null ; then
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
fi
[ "$CURR_REVISION" != "" -a "$SVN_URL" != "" ] && break
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
elif ! git checkout-index -a -f --prefix=grub4dos-temp/ > /dev/null ; then
if [ "grub4dos-temp" = "${PWD##*/}" ] ; then
cd ..
else
files=$(echo *)
if ! [ -d grub4dos-temp ] ; then
mkdir grub4dos-temp || exit $?
fi
cp -a $files grub4dos-temp || exit $?
fi
fi
cd grub4dos-temp || exit $?
make clean
#############################################
# Build english version
#############################################
./configure --enable-preset-menu=preset_menu.lst || exit $?
make || exit $?
rm -rf grub4dos-${VER}
mkdir grub4dos-${VER} || exit $?
[ -f stage2/eltorito.sys ] && cp stage2/eltorito.sys grub4dos-${VER}
cp $COPY_FILES grub4dos-${VER} || exit $?
cd grub4dos-${VER}
# generate bootlace64.com
if [ -f bootlace.com ]; then
set dummy `ls -l bootlace.com`
# now the size of bootlace.com is $6
dd if=bootlace.com of=bootlace.head bs=1 count=64
dd if=bootlace.com of=bootlace.body bs=1 count=`expr $6 - 128` skip=64
dd if=bootlace.com of=bootlace.tail bs=1 count=64 skip=`expr $6 - 64`
cat bootlace.tail bootlace.body bootlace.head > bootlace64.com
chmod a+x bootlace64.com
rm -f bootlace.tail bootlace.body bootlace.head
fi
mkdir docs && mv *.txt docs/
mkdir sample && mv menu.lst default config.sys sample/
cd ..
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 README_GRUB4DOS_CN.txt 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 ! 7z a ../${RELEASE}.7z grub4dos-${VER} ; then
echo 7z failed. Continue with zip or tar...
if ! zip -r -q ../${RELEASE}.zip grub4dos-${VER} ; then
tar -czf ../${RELEASE}.tar.gz grub4dos-${VER}
fi
fi
cd ..
# Do not remove grub4dos-temp as we can check and re-use it later.