summaryrefslogtreecommitdiff
path: root/netware/BUILD/nwbootstrap
blob: f54775bf054269cd595541fe6f97f8af6f712594 (plain)
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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#! /bin/sh

# debug
#set -x

# stop on errors
set -e

path=`dirname $0`

# repository direcotry
repo_dir=`pwd`

# build directory
build_dir="$HOME/mydev"
wine_build_dir="F:/mydev"

# doc directory
doc_dir="$repo_dir/../mysqldoc"

# init
target_dir=""
temp_dir=""
revision=""
rev=""
build=""
suffix=""
mwenv=""

# show usage
show_usage()
{
	cat << EOF

usage: nwbootstrap [options]

Exports a revision of the BitKeeper tree (nwbootstrap must be run inside a
directory of the BitKeeper tree to be used).  Creates the ChangeLog file.
Adds the latest manual.texi from the mysqldoc BitKeeper tree.  Builds the
Linux tools required for cross-platform builds.  Optionally, builds the 
binary distributions for NetWare.

options:

--build=<opt>               Build the binary distributions for NetWare,
                            where <opt> is "standard", "debug", or "all"
                            (default is to not build a binary distribution)
                            
--build-dir=<dir>           Export the BitKeeper tree to the <dir> directroy
                            (default is "$build_dir")
                            
--doc-dir=<dir>             Use the mysqldoc BitKeeper tree located in the
                            <dir> directory
                            (default is parallel to current BitKeeper tree)
                            
--help                      Show this help information

--revision=<rev>            Export the BitKeeper tree as of revision <rev>
                            (default is the latest revision)
                            
--wine-build-dir=<dir>      Use the WINE directory <dir>, which should
                            correspond to the --build-dir directory
                            (default is "$wine_build_dir")

examples:

  nwbootstrap

  nwbootstrap --revision=1.1594 --build=all
  
  nwbootstrap --build-dir=/home/jdoe/dev --wine-build-dir=F:/dev


EOF
	exit 0;
}

# parse arguments
for arg do
  case "$arg" in
    --build-dir=*) build_dir=`echo "$arg" | sed -e "s;--build-dir=;;"` ;;
    --wine-build-dir=*) wine_build_dir=`echo "$arg" | sed -e "s;--wine-build-dir=;;"` ;;
    --revision=*) revision=`echo "$arg" | sed -e "s;--revision=;;"` ;;
    --build=*) build=`echo "$arg" | sed -e "s;--build=;;"` ;;
    --suffix=*) suffix=`echo "$arg" | sed -e "s;--suffix=;;"` ;;
    --doc-dir=*) doc_dir=`echo "$arg" | sed -e "s;--doc-dir=;;"` ;;
    *) show_usage ;;
  esac
done

echo "starting build..."

# check for bk and repo_dir
bk help > /dev/null
repo_dir=`bk root $repo_dir`
cd $repo_dir
doc_dir="$repo_dir/../mysqldoc"

# build temporary directory
temp_dir="$build_dir/mysql-$$.tmp"

# export the bk tree
command="bk export";
if test $revision; then command="$command -r$revision"; fi
command="$command $temp_dir"
echo "exporting $repo_dir..."
$command

# determine version
version=`grep -e "AM_INIT_AUTOMAKE(mysql, .*)" < $temp_dir/configure.in | sed -e "s/AM_INIT_AUTOMAKE(mysql, \(.*\))/\1/"`
echo "version: $version"

# build target directory
target_dir="$build_dir/mysql-$version"

# add suffix
if test $suffix
then
  target_dir="$target_dir-$suffix"
fi

# delete any old target
if test -d $target_dir.old; then rm -rf $target_dir.old; fi

# rename old target
if test -d $target_dir; then mv -f $target_dir $target_dir.old; fi

# rename directory to use version
mv $temp_dir $target_dir

# create ChangeLog
if test $revision
then
	rev=`bk changes -r..$revision -t -d':REV:' -n | head -2 | tail -1`
else
	rev=`bk changes -t -d':REV:' -n | head -1`
fi

echo "creating ChangeLog..."
bk changes -v -r$rev..$revision > $target_dir/ChangeLog

# add the latest manual
if test -d $doc_dir
then
	echo "adding the latest manual..."
	install -m 644 $doc_dir/Docs/{manual,reservedwords}.texi $target_dir/Docs/
fi

# make files writeable
echo "making files writable..."
cd $target_dir
chmod -R u+rw,g+rw .

# edit the mvenv file
echo "updating the mwenv environment file..."
mwenv="./netware/BUILD/mwenv"
mv -f $mwenv $mwenv.org
sed -e "s;WINE_BUILD_DIR;$wine_build_dir;g" \
	-e "s;BUILD_DIR;$build_dir;g" \
  -e "s;VERSION;$version;g" $mwenv.org > $mwenv
chmod +rwx $mwenv

# edit the def file versions
echo "updating *.def file versions..."
nlm_version=`echo "$version" | sed -e "s;\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*;\1, \2, \3;"`

for file in ./netware/*.def
do
  mv -f $file $file.org
  sed -e "s;VERSION.*;VERSION $nlm_version;g" $file.org > $file
  rm $file.org
done

# build linux tools
echo "compiling linux tools..."
./netware/BUILD/compile-linux-tools

# compile
if test $build
then
	echo "compiling $build..."
  ./netware/BUILD/compile-netware-$build
fi

echo "done"