~leighman/ubuntu/raring/workrave/fix-desktop-file-2

« back to all changes in this revision

Viewing changes to frontend/gtkmm/osx/make-app.sh

  • Committer: Package Import Robot
  • Author(s): Michael Terry
  • Date: 2013-01-24 11:04:41 UTC
  • mto: This revision was merged to the branch mainline in revision 16.
  • Revision ID: package-import@ubuntu.com-20130124110441-t06q3xlc7mp4406p
Tags: upstream-1.10
ImportĀ upstreamĀ versionĀ 1.10

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/bin/bash
2
 
#
3
 
# Copyright (C) 2008, 2009 Rob Caelers <robc@krandor.nl>
4
 
# All rights reserved.
5
 
#
6
 
# This program is free software: you can redistribute it and/or modify
7
 
# it under the terms of the GNU General Public License as published by
8
 
# the Free Software Foundation, either version 3 of the License, or
9
 
# (at your option) any later version.
10
 
#
11
 
# This program is distributed in the hope that it will be useful,
12
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 
# GNU General Public License for more details.
15
 
#
16
 
# You should have received a copy of the GNU General Public License
17
 
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
 
#
19
 
# Based on code from inkscape, growl, adium, mozilla and probably others.
20
 
#
21
 
 
22
 
# ------------------------------------------------------------
23
 
# Configuration
24
 
# ------------------------------------------------------------
25
 
 
26
 
LIBPREFIX=$HOME/gtk/inst
27
 
BINARY=workrave
28
 
PACKAGE=Workrave.app
29
 
PACKAGE_VERSION=`grep PACKAGE_VERSION ../../../config.h | cut -d' ' -f 3 | sed "s/\\"//g"`
30
 
 
31
 
# ------------------------------------------------------------
32
 
# Print usage message
33
 
# ------------------------------------------------------------
34
 
usage()
35
 
{
36
 
echo -e "
37
 
Create Workrave application bundle for OS X
38
 
 
39
 
Usage: $0 [OPTION...]
40
 
 
41
 
  --help, -h                 Display this help message
42
 
  --keep-symbols             Keep debugging symbols
43
 
  --link                     Create symlinks
44
 
  --import-frameworks        Import frameworks in Workrave.app
45
 
  --gtk-dylib                Copy Gtk dynalic libraries
46
 
"
47
 
}
48
 
 
49
 
# ------------------------------------------------------------
50
 
# Parse command line arguments
51
 
# ------------------------------------------------------------
52
 
 
53
 
conf_strip=true
54
 
conf_symlink=false
55
 
conf_copy_gtk_dylib=false
56
 
conf_import_frameworks=false
57
 
 
58
 
while [ "$1" != "" ]
59
 
do
60
 
    case $1 in
61
 
        --gtk-dylib)
62
 
            conf_copy_gtk_dylib=true ;;
63
 
 
64
 
        --keep-symbols)
65
 
            conf_strip=false ;;
66
 
 
67
 
        --link)
68
 
            conf_symlink=true ;;
69
 
 
70
 
        --import-frameworks)
71
 
            conf_import_frameworks=true ;;
72
 
 
73
 
        -h|--help)
74
 
            usage
75
 
            exit 0 ;;
76
 
        *)
77
 
            usage
78
 
            exit 2 ;;
79
 
        esac
80
 
        shift 1
81
 
done
82
 
 
83
 
 
84
 
# ------------------------------------------------------------
85
 
# Setup
86
 
# ------------------------------------------------------------
87
 
 
88
 
osx_minor_version=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 -d'.'`
89
 
 
90
 
pkgrootdir=`pwd`/$PACKAGE
91
 
pkgcontentsdir=$pkgrootdir/Contents
92
 
pkgexecdir=$pkgcontentsdir/MacOS
93
 
pkgresourcesdir=$pkgcontentsdir/Resources
94
 
pkgframeworksdir=$pkgcontentsdir/Frameworks
95
 
pkgdatadir=$pkgresourcesdir/share
96
 
pkgetcdir=$pkgresourcesdir/etc
97
 
pkglibdir=$pkgresourcesdir/lib
98
 
pkgthemedir=$pkgresourcesdir/themes
99
 
 
100
 
sed -e "s?@ENV@?$env?g" -e "s?@VERSION@?$PACKAGE_VERSION?g" < Info.plist.in > Info.plist
101
 
 
102
 
# ------------------------------------------------------------
103
 
# Create directory layout
104
 
# ------------------------------------------------------------
105
 
 
106
 
echo
107
 
echo -e "Creating Workrave application bundle"
108
 
echo -e "Workrave version is $PACKAGE_VERSION"
109
 
 
110
 
if [ -d $PACKAGE ];
111
 
then
112
 
    echo "Removing old $PACKAGE tree"
113
 
    rm -rf $PACKAGE
114
 
fi
115
 
 
116
 
echo "Building new app directory structure"
117
 
 
118
 
mkdir -p $pkgresourcesdir
119
 
mkdir -p $pkgframeworksdir
120
 
mkdir -p $pkgexecdir
121
 
mkdir -p $pkglibdir
122
 
 
123
 
# ------------------------------------------------------------
124
 
# Install Workrave
125
 
# ------------------------------------------------------------
126
 
 
127
 
echo "Installing Workrave"
128
 
 
129
 
if [ $conf_symlink = false ]; then
130
 
   INSTALL="cp"
131
 
else
132
 
   INSTALL="ln -s"
133
 
fi
134
 
 
135
 
make install -C ../../../ \
136
 
    prefix=$pkgrootdir bindir=$pkgexecdir pkgdatadir=$pkgresourcesdir \
137
 
    datadir=$pkgresourcesdir soundsbasedir=$pkgresourcesdir/sounds \
138
 
    DATADIRNAME=Contents/Resources > install.log 2>&1
139
 
 
140
 
if [ $conf_symlink = true ]; then
141
 
    rm -rf $pkgexecdir/workrave
142
 
    ln -s ../../../frontend/gtkmm/src/workrave $pkgexecdir
143
 
fi
144
 
    
145
 
rm -rf $pkgrootdir/lib
146
 
rm -rf $pkgrootdir/libexec
147
 
 
148
 
if [ $conf_copy_gtk_dylib = true ]; then
149
 
    mv $pkgexecdir/$BINARY $pkgexecdir/${BINARY}-bin
150
 
    $INSTALL workrave $pkgexecdir
151
 
fi
152
 
 
153
 
cp Info.plist $pkgcontentsdir
154
 
$INSTALL ../../../frontend/common/share/images/osx/workrave.icns  $pkgresourcesdir
155
 
 
156
 
echo -n "APPL????" > $pkgcontentsdir/PkgInfo
157
 
 
158
 
# ------------------------------------------------------------
159
 
# Install Pango
160
 
# ------------------------------------------------------------
161
 
 
162
 
if [ $conf_copy_gtk_dylib = true ]; then
163
 
 
164
 
    echo "Installing Pango modules"
165
 
    
166
 
    pango_version=`pkg-config --variable=pango_module_version pango`
167
 
    
168
 
    mkdir -p $pkglibdir/pango/$pango_version/modules
169
 
    cp $LIBPREFIX/lib/pango/$pango_version/modules/*.so $pkglibdir/pango/$pango_version/modules/
170
 
    
171
 
    mkdir -p $pkgetcdir/pango
172
 
    
173
 
    $LIBPREFIX/bin/pango-querymodules \
174
 
        | sed "s?$LIBPREFIX/lib/pango/$pango_version/modules/?@executable_path/../Resources/lib/pango/$pango_version/modules/?" \
175
 
        > $pkgetcdir/pango/pango.modules
176
 
    
177
 
    mkdir -p $pkgetcdir/fonts
178
 
    cp $LIBPREFIX/etc/fonts/fonts.dtd $pkgetcdir/fonts/
179
 
    cp -r $LIBPREFIX/etc/fonts/conf.avail $pkgetcdir/fonts/
180
 
    cp -r $LIBPREFIX/etc/fonts/conf.d $pkgetcdir/fonts/
181
 
    cp fonts.conf $pkgetcdir/fonts
182
 
    
183
 
    cat > $pkgetcdir/pango/pangorc << END
184
 
[Pango]
185
 
ModuleFiles=./pango.modules
186
 
END
187
 
 
188
 
fi
189
 
 
190
 
# ------------------------------------------------------------
191
 
# Install Gtk
192
 
# ------------------------------------------------------------
193
 
 
194
 
if [ $conf_copy_gtk_dylib = true ]; then
195
 
 
196
 
    gtk_version=`pkg-config --variable=gtk_binary_version gtk+-2.0`
197
 
    
198
 
    mkdir -p $pkglibdir/gtk-2.0/$gtk_version/{engines,immodules,loaders}
199
 
    mkdir -p $pkgetcdir/gtk-2.0
200
 
    
201
 
    cp -r $LIBPREFIX/lib/gtk-2.0/$gtk_version/engines/* $pkglibdir/gtk-2.0/$gtk_version/engines/
202
 
    cp $LIBPREFIX/lib/gtk-2.0/$gtk_version/immodules/*.so $pkglibdir/gtk-2.0/$gtk_version/immodules/
203
 
    cp $LIBPREFIX/lib/gtk-2.0/$gtk_version/loaders/*.so $pkglibdir/gtk-2.0/$gtk_version/loaders/
204
 
    
205
 
    sed "s?$LIBPREFIX/lib/gtk-2.0/$gtk_version/loaders/?@executable_path/../Resources/lib/gtk-2.0/$gtk_version/loaders/?" \
206
 
        < $LIBPREFIX/etc/gtk-2.0/gdk-pixbuf.loaders \
207
 
        > $pkgetcdir/gtk-2.0/gdk-pixbuf.loaders
208
 
    
209
 
    sed "s?$LIBPREFIX/lib/gtk-2.0/$gtk_version/immodules/?@executable_path/../Resources/lib/gtk-2.0/$gtk_version/immodules/?" \
210
 
        < $LIBPREFIX/etc/gtk-2.0/gtk.immodules \
211
 
        > $pkgetcdir/gtk-2.0/gtk.immodules
212
 
    
213
 
    ## FIXME:
214
 
    mkdir -p $pkgthemedir/Leopardish-normal
215
 
    cp -r ~/.themes/Leopardish-normal/* $pkgthemedir/Leopardish-normal
216
 
    
217
 
    mkdir -p $pkgthemedir/Quartz
218
 
    cp -r $LIBPREFIX/share/themes/Quartz/gtk-2.0 $pkgthemedir/Quartz
219
 
fi
220
 
 
221
 
# ------------------------------------------------------------
222
 
# Install dependencies
223
 
# ------------------------------------------------------------
224
 
 
225
 
if [ $conf_copy_gtk_dylib = true ]; then
226
 
 
227
 
    echo "Installing dependencies"
228
 
 
229
 
    total=0
230
 
    stop=false
231
 
    while ! $stop; do
232
 
        LIBS=`find $pkgrootdir \( -name "*.so*" -or -name "*.dylib" \) -print`
233
 
        EXECS=`find $pkgexecdir -type f -print`
234
 
        libs="`otool -L $LIBS $EXECS 2>/dev/null | fgrep compatibility | cut -d\( -f1 | grep $LIBPREFIX | sort | uniq`"
235
 
        if [ x$libs != x ] ; then
236
 
            cp -f $libs $pkglibdir
237
 
        fi
238
 
        num_files=`ls $pkglibdir | wc -l`
239
 
        if [ $num_files = $total ];
240
 
        then
241
 
        stop=true
242
 
        fi
243
 
        total=$num_files
244
 
    done
245
 
fi
246
 
 
247
 
# ------------------------------------------------------------
248
 
# Fix dependencies
249
 
# ------------------------------------------------------------
250
 
 
251
 
echo "Fixing up library names"
252
 
 
253
 
LIBS=`find $pkgrootdir \( -name "*.so*" -or -name "*.dylib" \) -print`
254
 
EXECS=`find $pkgexecdir -type f -print`
255
 
 
256
 
for f in $EXECS $LIBS; do
257
 
    if [ ! -L $f ];
258
 
    then
259
 
        changes=""
260
 
        for lib in `otool -L $f | egrep "($LIBPREFIX|/local/|libs/)" | awk '{print $1}'` ; do
261
 
            base=`basename $lib`
262
 
            changes="$changes -change $lib @executable_path/../Resources/lib/$base"
263
 
        done
264
 
 
265
 
        if [ "x$changes" != x ];
266
 
        then
267
 
            if install_name_tool $changes $f ;
268
 
            then
269
 
                :
270
 
            else
271
 
                exit 1
272
 
            fi
273
 
        fi
274
 
 
275
 
        base=`basename $f`
276
 
        ext=`echo $base | sed -e 's/.*\.\([^.]*\)/\1/'`
277
 
 
278
 
        if [ "x$ext" = "xso" -o "x$ext" = "xdylib" ]; 
279
 
        then
280
 
            install_name_tool -id @executable_path/../Resources/lib/$base $f
281
 
        fi
282
 
    fi
283
 
done
284
 
 
285
 
# ------------------------------------------------------------
286
 
# Importing Frameworks
287
 
# ------------------------------------------------------------
288
 
 
289
 
if [ "$conf_import_frameworks" = "true" ];
290
 
then
291
 
    echo "Importing Frameworks"
292
 
 
293
 
    ./import-frameworks.sh
294
 
 
295
 
    rm -rf $pkgframeworksdir/Gtk.framework/Versions/2/Resources/share/icons/gnome
296
 
    rm -rf $pkgframeworksdir/Gtk.framework/Versions/2/Resources/share/icons/hicolor
297
 
fi
298
 
 
299
 
# ------------------------------------------------------------
300
 
# Stripping
301
 
# ------------------------------------------------------------
302
 
 
303
 
if [ "$conf_strip" = "true" ];
304
 
then
305
 
    echo "Stripping debugging symbols"
306
 
    if [ $conf_copy_gtk_dylib = true ]; then
307
 
        chmod +w $pkglibdir/*.dylib
308
 
        strip -x $pkglibdir/*.dylib
309
 
    fi
310
 
    strip -ur `find $pkgexecdir -type f -print`
311
 
    strip -xS `find $pkgframeworksdir -name "*.dylib" -print`
312
 
 
313
 
    for framework in $pkgframeworksdir/* ; do
314
 
        base=`basename $framework .framework`
315
 
        strip -xS $framework/$base
316
 
    done;
317
 
 
318
 
fi
319
 
 
320
 
exit 0
321
 
 
322
 
 
323
 
#------------------------------------------------------------
324
 
 
325
 
packagemaker=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
326
 
pkgName="Workrave-${version}.pkg"
327
 
 
328
 
 
329
 
 
330
 
echo "Prepare for PackageManager"
331
 
 
332
 
sudo rm -rf pkgroot
333
 
sudo mkdir -p pkgroot
334
 
 
335
 
basedir="/Applications/Workrave"
336
 
sudo mkdir -p "pkgroot/$basedir"
337
 
sudo cp -R Workrave.app "pkgroot/$basedir"
338
 
 
339
 
sudo find pkgroot -type d -print0 | xargs -0 sudo chmod 755
340
 
sudo find pkgroot -type f -print0 | xargs -0 sudo chmod 644
341
 
sudo find pkgroot -name '*.sh' -print0 | xargs -0 sudo chmod 755
342
 
sudo chown -R root:wheel pkgroot
343
 
 
344
 
sudo chmod 775 pkgroot/Applications
345
 
sudo chown root:admin pkgroot/Applications
346
 
sudo chmod 1775 pkgroot/Library
347
 
sudo chown root:admin pkgroot/Library
348
 
 
349
 
echo "Exec PackageMaker"
350
 
 
351
 
rm -rf $pkgName
352
 
sudo $packagemaker -build \
353
 
    -p $pkgName \
354
 
    -f pkgroot \
355
 
    -ds \
356
 
    -r pkginfo/Resources \
357
 
    -i pkginfo/Info.plist \
358
 
    -d pkginfo/Description.plist
359
 
 
360
 
echo "Done."
361