#!/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
################################################################################
# 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
# 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 | grep "$FINK"` ; do
if [[ -n $( echo $lib | grep $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/" )
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
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/" )
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
# 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 "$FINK"` ; do
if [[ -n $( echo $lib | grep $FINK ) ]]; then
newlib=$( echo "$lib" | sed 's/^.*\//\@executable_path\/..\/Frameworks\//' )
install_name_tool -change $lib $newlib $file
fi
done
done
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 "$FINK"` ]]; then
echo "$file still has a FINK depenency"
fi
done
if [[ -n `otool -L gdis.app/Contents/Resources/gdis | grep "$FINK"` ]]; then
echo "gdis.app/Contents/Resources/gdis still has a FINK depenency"
fi
syntax highlighted by Code2HTML, v. 0.9.1