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
|
#!/bin/bash
################################################################################
# Environment variable check. These should be set in the makefile.
if [[ -z $PLATYPUS ]]; then
echo "Error: environment variable PLATYPUS does not exist"
echo "I hope you are running this script from the makefile."
exit 42
fi
if [[ -z $FINK ]]; then
echo "Error: environment variable FINK does not exist"
echo "I hope you are running this script from the makefile."
exit 42
fi
if [[ ! -d $FINK ]]; then
echo "Error: environment variable FINK does not point to a real directory."
echo "$FINK"
exit 42
fi
################################################################################
# A convenience function.
function checkfile() {
if [[ ! -f $1 ]]; then
echo "Error: file $1 does not exist"
exit 69
fi
}
################################################################################
# $FINK with slashes escaped.
FINK1=$( echo $FINK | sed 's/\//\\\//g' )
rm -rf gdis.app
checkfile gdis
checkfile gdis.elements
checkfile gdis.manual
checkfile gdis.library
checkfile GDIS.icns
checkfile gdis.app.template/Contents/Resources/script
echo "Running Platypus..."
$PLATYPUS -a GDIS -f gdis -f gdis.elements -f gdis.manual -f gdis.library -t python -o None -i GDIS.icns -V 0.89 -u "Sean Fleming" -I "org.sean.gdis" -D gdis.app.template/Contents/Resources/script gdis.app
if [[ ! -f gdis.app/Contents/Resources/gdis ]]; then
echo "Error: Platypus failed."
exit 1
else
echo "done."
fi
# Fix in case script is not executable after above step.
if [[ ! -x gdis.app/Contents/Resources/script ]]; then
chmod a+x gdis.app/Contents/Resources/script
fi
# Workaround for platypus icon copy bug
if [[ ! -f gdis.app/Contents/Resources/GDIS.icns ]]; then
cp GDIS.icns gdis.app/Contents/Resources
sed -i "" 's/appIcon.icns/GDIS.icns/' gdis.app/Contents/Info.plist
fi
mkdir -p gdis.app/Contents/Frameworks
#Make fink library dependencies to be within gdis.app.
echo "Fixing library dependencies in gdis..."
for lib in `otool -L gdis.app/Contents/Resources/gdis | grep -i "$FINK"` ; do
if [[ -n $( echo $lib | grep -i $FINK ) ]]; then
checkfile $lib
cp -f $lib gdis.app/Contents/Frameworks
newlib=$( echo "$lib" | sed 's/^.*\//\@executable_path\/..\/Frameworks\//' )
echo " $newlib"
install_name_tool -change $lib $newlib gdis.app/Contents/Resources/gdis
fi
done
echo "Copying pango..."
for file in `find $FINK/lib/pango` ; do
# newfile=$( echo "$file" | sed "s/$FINK1\/lib/gdis.app\/Contents\/Frameworks/" )
newfile=$( echo "$file" | perl -p -e "s/$FINK1\/lib/gdis.app\/Contents\/Frameworks/gi" )
if [[ -d $file ]]; then
mkdir -p $newfile
else
newfile1=$( echo "$newfile" | grep -E -v -e "\.(la|a)$" )
if [[ -n "$newfile1" ]] ; then
echo " $newfile1"
checkfile $file
cp $file $newfile
fi
fi
done
#Some fink libraries are dependent on other fink libraries. For now copy them
#manually.
echo "Copying extra libs to gdis.app/Contents/Frameworks"
checkfile $FINK/lib/libintl.3.dylib
cp $FINK/lib/libintl.3.dylib gdis.app/Contents/Frameworks
#Got to copy pango.modules to Resources/etc/pango and put in $CWD/lib/pango/...
#Also copy pango.aliases there too.
mkdir -p gdis.app/Contents/Resources/etc/pango
checkfile $FINK/etc/pango/pangox.aliases
cp $FINK/etc/pango/pangox.aliases gdis.app/Contents/Resources/etc/pango/pangox.aliases
#pango-querymodules | grep -v "^#" | sed "s/$FINK1\/lib/\$\{CWD\}\/..\/Frameworks/" | sed -E "s/^([^ ]+)/\"\1\"/" > gdis.app/Contents/Resources/etc/pango/pango.modules
pango-querymodules | grep -v "^#" | perl -p -e "s/$FINK1\/lib/\\$\{\CWD}\/..\/Frameworks/gi" | sed -E "s/^([^ ]+)/\"\1\"/" > gdis.app/Contents/Resources/etc/pango/pango.modules
echo "Copying GTK2..."
mkdir -p gdis.app/Contents/Frameworks/gtk-2.0/$GTK2VERS
for file in `find $FINK/lib/gtk-2.0/$GTK2VERS` ; do
# newfile=$( echo "$file" | sed "s/$FINK1\/lib/gdis.app\/Contents\/Frameworks/" )
newfile=$( echo "$file" | perl -p -e "s/$FINK1\/lib/gdis.app\/Contents\/Frameworks/gi" )
if [[ -d $file ]]; then
mkdir -p $newfile
else
newfile1=$( echo "$newfile" | grep -E -v -e "\.(la|a)$" )
if [[ -n "$newfile1" ]] ; then
echo " $newfile1"
checkfile $file
cp $file $newfile
fi
fi
done
mkdir -p gdis.app/Contents/Resources/etc/gtk-2.0
#gtk-query-immodules-2.0 | sed "s/$FINK1\/lib/\$\{CWD\}\/..\/Frameworks/" | grep -v "^#" > gdis.app/Contents/Resources/etc/gtk-2.0/gtk.immodules
gtk-query-immodules-2.0 | perl -p -e "s/$FINK1\/lib/\\$\{\CWD}\/..\/Frameworks/gi" | grep -v "^#" > gdis.app/Contents/Resources/etc/gtk-2.0/gtk.immodules
# Get rid of fink dependencies out of libraries too.
echo "Fixing inter-library dependencies..."
for file in `find gdis.app/Contents/Frameworks -name "*.dylib" -or -name "*.so"`; do
echo " processing $file"
newlib=$( echo "$file" | sed 's/^.*\//\@executable_path\/..\/Frameworks\//' )
install_name_tool -id $newlib $file
for lib in `otool -L $file | grep -i "$FINK"` ; do
if [[ -n $( echo $lib | grep -i $FINK ) ]]; then
newlib=$( echo "$lib" | sed 's/^.*\//\@executable_path\/..\/Frameworks\//' )
install_name_tool -change $lib $newlib $file
fi
done
done
gdk-pixbuf-query-loaders | perl -p -e "s/$FINK1\/lib/\\$\{\CWD}\/..\/Frameworks/gi"> gdis.app/Contents/Resources/gdk-pixbuf.loaders
#gdk-pixbuf-query-loaders | sed "s/$FINK1\/lib/\$\{CWD\}\/..\/Frameworks/"> gdis.app/Contents/Resources/gdk-pixbuf.loaders
# Final check that we've sorted out all the Fink dependencies.
echo "Just checking sure we got all the Fink dependencies sorted..."
for file in `find gdis.app/Contents/Frameworks -name "*.dylib" -or -name "*.so"`; do
if [[ -n `otool -L $file | grep -i "$FINK"` ]]; then
echo "$file still has a FINK depenency"
fi
done
if [[ -n `otool -L gdis.app/Contents/Resources/gdis | grep -i "$FINK"` ]]; then
echo "gdis.app/Contents/Resources/gdis still has a FINK depenency"
fi
|