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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
|
#!/bin/bash
#
# $Id$
#
# Wireshark compilation and packaging script for Mac OS X
#
# Copied from the Inkscape distribution. Please see
# http://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX
# for more complete information
#
# XXX - This script hasn't yet been ported to the Wireshark build
# environment and should NOT BE USED.
#
# Author:
# Jean-Olivier Irisson <jo.irisson@gmail.com>
# with information from
# Kees Cook
# Michael Wybrow
#
# Copyright (C) 2006-2007
# Released under GNU GPL, read the file 'COPYING' for more information
#
############################################################
# User modifiable parameters
#----------------------------------------------------------
# Configure flags
CONFFLAGS="--disable-static --enable-shared --enable-osxapp"
# Libraries prefix (Warning: NO trailing slash)
LIBPREFIX="/opt/local"
# User name on Modevia
MODEVIA_NAME=""
############################################################
# Help message
#----------------------------------------------------------
help()
{
echo -e "
Compilation script for Wireshark on Mac OS X.
USAGE
$0 [options] action[s]
ACTIONS & OPTIONS
h,help
display this help message
u,up,update
update an existing checkout from svn (run svn up)
a,auto,autogen
prepare configure script (run autogen.sh). This is only necessary
for a fresh svn checkout or after make distclean.
c,conf,configure
configure the build (run configure). Edit your configuration
options in $0
-p,--prefix specify install prefix (configure step only)
b,build
build Wireshark (run make)
i,install
install the build products locally, inside the source
directory (run make install)
p,pack,package
package Wireshark in a double clickable .app bundle
-s,--strip remove debugging information in Wireshark package
-py,--with-python specify python modules path for inclusion into the app bundle
d,dist,distrib
store Wireshark.app in a disk image (dmg) for distribution
put,upload
upload the dmg and the associate info file on Modevia server
all
do everything (update, configure, build, install, package, distribute)
EXAMPLES
$0 conf build install
configure, build and install a dowloaded version of Wireshark in the default
directory, keeping debugging information.
$0 u a c b -p ~ i -s -py ~/site-packages/ p d
update an svn checkout, prepare configure script, configure,
build and install Wireshark in the user home directory (~).
Then package Wireshark without debugging information,
with python packages from ~/site-packages/ and prepare
a dmg for distribution."
}
# Parameters
#----------------------------------------------------------
# Paths
HERE=`pwd`
SRCROOT=$HERE/../.. # we are currently in packaging/macosx
# Defaults
if [ "$INSTALLPREFIX" = "" ]
then
INSTALLPREFIX=/tmp/inst
fi
SVNUPDATE="f"
AUTOGEN="f"
CONFIGURE="f"
BUILD="f"
INSTALL="f"
PACKAGE="f"
DISTRIB="f"
UPLOAD="f"
STRIP=""
PYTHON_MODULES=""
# Parse command line options
#----------------------------------------------------------
while [ "$1" != "" ]
do
case $1 in
h|help)
help
exit 1 ;;
all)
SVNUPDATE="t"
CONFIGURE="t"
BUILD="t"
INSTALL="t"
PACKAGE="t"
DISTRIB="t" ;;
u|up|update)
SVNUPDATE="t" ;;
a|auto|autogen)
AUTOGEN="t" ;;
c|conf|configure)
CONFIGURE="t" ;;
b|build)
BUILD="t" ;;
i|install)
INSTALL="t" ;;
p|pack|package)
PACKAGE="t" ;;
d|dist|distrib)
DISTRIB="t" ;;
put|upload)
UPLOAD="t" ;;
-p|--prefix)
INSTALLPREFIX=$2
shift 1 ;;
-s|--strip)
STRIP="-s" ;;
-py|--with-python)
PYTHON_MODULES="$2"
shift 1 ;;
*)
echo "Invalid command line option: $1"
exit 2 ;;
esac
shift 1
done
# Set environment variables
# ----------------------------------------------------------
export LIBPREFIX
# Specific environment variables
# automake seach path
export CPATH="$LIBPREFIX/include"
# configure search path
export CPPFLAGS="-I$LIBPREFIX/include"
# export CPPFLAGS="-I$LIBPREFIX/include -I /System/Library/Frameworks/Carbon.framework/Versions/Current/Headers"
export LDFLAGS="-L$LIBPREFIX/lib"
# compiler arguments
export CFLAGS="-O3 -Wall"
export CXXFLAGS="$CFLAGS"
# Actions
# ----------------------------------------------------------
if [[ "$SVNUPDATE" == "t" ]]
then
cd $SRCROOT
svn up
status=$?
if [[ $status -ne 0 ]]; then
echo -e "\nSVN update failed"
exit $status
fi
cd $HERE
fi
if [[ "$AUTOGEN" == "t" ]]
then
cd $SRCROOT
./autogen.sh
status=$?
if [[ $status -ne 0 ]]; then
echo -e "\nautogen failed"
exit $status
fi
cd $HERE
fi
if [[ "$CONFIGURE" == "t" ]]
then
ALLCONFFLAGS=`echo "$CONFFLAGS --prefix=$INSTALLPREFIX"`
cd $SRCROOT
if [ ! -f configure ]
then
echo "Configure script not found in $SRCROOT. Run '$0 autogen' first"
exit 1
fi
./configure $ALLCONFFLAGS
status=$?
if [[ $status -ne 0 ]]; then
echo -e "\nConfigure failed"
exit $status
fi
cd $HERE
fi
if [[ "$BUILD" == "t" ]]
then
cd $SRCROOT
make
status=$?
if [[ $status -ne 0 ]]; then
echo -e "\nBuild failed"
exit $status
fi
cd $HERE
fi
if [[ "$INSTALL" == "t" ]]
then
cd $SRCROOT
make install
status=$?
if [[ $status -ne 0 ]]; then
echo -e "\nInstall failed"
exit $status
fi
cd $HERE
fi
if [[ "$PACKAGE" == "t" ]]
then
# Test the existence of required files
if [ ! -e $INSTALLPREFIX/bin/wireshark ]
then
echo "The wireshark executable \"$INSTALLPREFIX/bin/wireshark\" cound not be found."
exit 1
fi
if [ ! -e ./Info.plist ]
then
echo "The file \"Info.plist\" could not be found, please re-run configure."
exit 1
fi
# Set python command line option (if PYTHON_MODULES location is not empty, then add the python call to the command line, otherwise, stay empty)
if [[ "$PYTHON_MODULES" != "" ]]; then
PYTHON_MODULES="-py $PYTHON_MODULES"
# TODO: fix this: it does not allow for spaces in the PATH under this form and cannot be quoted
fi
# Create app bundle
./osx-app.sh $STRIP -bp $INSTALLPREFIX/bin/ -p ./Info.plist $PYTHON_MODULES
status=$?
if [[ $status -ne 0 ]]; then
echo -e "\nApplication bundle creation failed"
exit $status
fi
fi
# Fetch some information
REVISION=`head -n 4 ../../.svn/entries | tail -n 1`
ARCH=`arch | tr [p,c] [P,C]`
MINORVERSION=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 -d \.`
NEWNAME="Wireshark-$REVISION-10.$MINORVERSION-$ARCH"
DMGFILE="$NEWNAME.dmg"
INFOFILE="$NEWNAME-info.txt"
if [[ "$DISTRIB" == "t" ]]
then
# Create dmg bundle
./osx-dmg.sh -p "Wireshark.app"
status=$?
if [[ $status -ne 0 ]]; then
echo -e "\nDisk image creation failed"
exit $status
fi
mv Wireshark.dmg $DMGFILE
# Prepare information file
echo "Version information on $DATE for `whoami`:
OS X `/usr/bin/sw_vers | grep ProductVersion | cut -f2 -d \:`
Architecture $ARCH
DarwinPorts `port version | cut -f2 -d \ `
GCC `gcc --version | grep GCC`
GTK `pkg-config --modversion gtk+-2.0`
GTKmm `pkg-config --modversion gtkmm-2.4`
Cairo `pkg-config --modversion cairo`
Cairomm `pkg-config --modversion cairomm-1.0`
CairoPDF `pkg-config --modversion cairo-pdf`
Pango `pkg-config --modversion pango`
Configure options:
$CONFFLAGS" > $INFOFILE
if [[ "$STRIP" == "t" ]]; then
echo "Debug info
no" >> $INFOFILE
else
echo "Debug info
yes" >> $INFOFILE
fi
fi
if [[ "$UPLOAD" == "t" ]]
then
# Provide default for user name on modevia
if [[ "$MODEVIA_NAME" == "" ]]; then
MODEVIA_NAME=$USER
fi
# Uploasd file
scp $DMGFILE $INFOFILE "$MODEVIA_NAME"@wireshark.modevia.com:wireshark/docs/macosx-snap/
status=$?
if [[ $status -ne 0 ]]; then
echo -e "\nUpload failed"
exit $status
fi
fi
if [[ "$PACKAGE" == "t" || "$DISTRIB" == "t" ]]; then
# open a Finder window here to admire what we just produced
open .
fi
exit 0
|