--- deliantra/Deliantra-Client/makebin.osx 2011/12/26 03:58:12 1.20
+++ deliantra/Deliantra-Client/makebin.osx 2011/12/26 07:22:49 1.21
@@ -7,7 +7,7 @@
# need to patch libSDL_image from /opt/local/lib/libjpeg.dylib to ./libjpeg.8.dylib
# ln -s db46/db.h /opt/local/include
# ln -s db46/libdb.dylib /opt/local/lib
-# /opt/local/bin/cpan Pod::POM
+# /opt/local/bin/cpan Pod::POM PAR::Packer
#export MACOSX_DEPLOYMENT_TARGET=10.3 # maybe it helps
#export MACOSX_DEPLOYMENT_TARGET=10.5 # nope
@@ -19,50 +19,63 @@
DB1=4
DB2=6
+umask 022
+
ln -sf $PREFIX/include/db$DB1$DB2/db.h $PREFIX/include/db.h
rm -f $PREFIX/lib/libdb-$DB1.$DB2.dylib
cp -p $PREFIX/lib/db$DB1$DB2/libdb-$DB1.$DB2.dylib $PREFIX/lib/libdb-$DB1.$DB2.dylib
-eval $(perl -V:sitelib)
-PERLLIB=$sitelib
-
OPTLIBS=(
db-4.6
- glib-2.0.0 gobject-2.0.0 gmodule-2.0.0
- pango-1.0.0 pangoft2-1.0.0
+ gthread-2.0.0 glib-2.0.0 gobject-2.0.0 gmodule-2.0.0
+ pango-1.0.0 pangoft2-1.0.0 ffi.5
SDL-1.2.0 SDL_mixer-1.2.0 SDL_image-1.2.0
- vorbisfile vorbis.0 ogg.0
- png14.14 jpeg.8 tiff.3 z.1
+ png14.14 jpeg.8 tiff.3 z.1 bz2.1.0
+ smpeg-0.4.0
+ vorbisfile.3 vorbis.0 ogg.0 mikmod.3 FLAC.8
fontconfig.1 expat.1 freetype.6 intl.8 iconv.2
)
declare -A deliantrified
+patchlibs() {
+ <"$1" \
+ perl -0777 -pe '
+ s%('"$PREFIX/lib[^\x00]*/lib"'([^\x00/]+)\.dylib\x00)%
+ my $s = $1;
+ my $r = "libdeliantra-$2.dylib\x00";
+ (length $r) <= (length $s)
+ or die "lib replacement <$r> larger than <$s>\n";
+ substr $s, 0, length $r, $r;
+ $s
+ %ge
+ ' \
+ >"$1~" && mv "$1~" "$1" || exit 67
+}
+
+patchbundle() {
+ [ -e "$1.unpatched" ] && [ "$1.unpatched" -ot "$1" ] && ln -f "$1.unpatched" "$1"
+ ln -f "$1" "$1.unpatched"
+ patchlibs "$1" || exit
+}
+
deliantrify_lib() {
local lib="$1"
- [ "${deliantrified["$lib"]}" ] && exit 0
+ [ "${deliantrified["$lib"]}" ] && return
deliantrified["$lib"]=+
- (
- cd $PREFIX/lib || exit 69
- echo "deliantrifying $lib"
- cp -p lib$lib.dylib libdeliantra-$lib.dylib || exit 68
- install_name_tool -id libdeliantra-$lib.dylib libdeliantra-$lib.dylib
- for lib2 in $(otool -L libdeliantra-$lib.dylib | perl -ne 'print "$1\n" if m%'"$PREFIX/lib/lib"'(\S+).dylib%'); do
- deliantrify_lib "$lib2"
- install_name_tool -change lib$lib2.dylib libdeliantra-$lib2.dylib libdeliantra-$lib.dylib
- done
- ) || exit
+ echo "deliantrifying $lib"
+ cp -p $PREFIX/lib/lib$lib.dylib $PREFIX/lib/libdeliantra-$lib.dylib || exit 68
+ install_name_tool -id libdeliantra-$lib.dylib $PREFIX/lib/libdeliantra-$lib.dylib
+ for lib2 in $(otool -L $PREFIX/lib/lib$lib.dylib | perl -ne 'print "$1\n" if m%'"$PREFIX/lib/lib"'(\S+).dylib%'); do
+ deliantrify_lib "$lib2" || exit
+ #install_name_tool -change $PREFIX/lib/lib$lib2.dylib libdeliantra-$lib2.dylib $PREFIX/lib/libdeliantra-$lib.dylib
+ done
+ patchlibs $PREFIX/lib/libdeliantra-$lib.dylib || exit
+ ln -s $PREFIX/lib/libdeliantra-$lib.dylib /opt/libdeliantra
}
-# don't ask...
-#for lib in "${OPTLIBS[@]}"; do
-# deliantrify_lib "$lib"
-#done
-
-umask 022
-
if true; then
for mod in common-sense AnyEvent EV JSON-XS Compress-LZF BDB Guard deliantra/Deliantra; do
(
@@ -80,7 +93,16 @@
done
fi
-exit 0
+if true; then
+ # don't ask...
+ rm -rf /opt/libdeliantra
+ mkdir /opt/libdeliantra
+ for lib in "${OPTLIBS[@]}"; do
+ deliantrify_lib "$lib" || exit
+ done
+fi
+
+DYLD_LIBRARY_PATH=/opt/libdeliantra:$DYLD_LIBRARY_PATH
if true; then
@@ -101,14 +123,16 @@
(
grep ^/opt /opt/local/etc/pango/pango.modules | while read so rest; do
base=$(basename "$so")
- echo "$so;root/$base"
+ ln -f "$so" "$so.deliantra"
+ patchlibs "$so.deliantra"
+ echo "$so.deliantra;root/$base"
echo "$base $rest" >&5
done
) 5>pango.modules
echo "pango.modules;root/pango.modules"
for lib in "${OPTLIBS[@]}"; do
- echo "/opt/local/lib/lib$lib.dylib;shlib/darwin-multi-2level/lib$lib.dylib"
+ echo "/opt/local/lib/libdeliantra-$lib.dylib;shlib/darwin-multi-2level/libdeliantra-$lib.dylib"
done
) >addlist
@@ -122,12 +146,15 @@
$PERL/bin/perl Makefile.PL
make install || exit
-DYLD_LIBRARY_PATH=/opt/local/lib \
+eval $(perl -V:installsitearch)
+patchbundle "$installsitearch/auto/BDB/BDB.bundle"
+patchbundle "$installsitearch/auto/Deliantra/Client/Client.bundle"
+
$PERL/bin/pp -C \
-z 9 \
-M AnyEvent::Impl::EV \
-M attributes \
- -a "blib/arch/auto/Deliantra/Client/Client.bundle;lib/auto/Deliantra/Client/Client.bundle" \
+ -a "$installsitearch/auto/Deliantra/Client/Client.bundle;lib/auto/Deliantra/Client/Client.bundle" \
-o deliantra -A addlist bin/deliantra || exit
fi
@@ -181,7 +208,7 @@
NSAppleScriptEnabled
NSHumanReadableCopyright
- Deliantra MORPG Client - Copyright 2008,2009 The Deliantra Team
+ Deliantra MORPG Client - Copyright 2008,2009,2010,2011 The Deliantra Team
EOF
@@ -246,11 +273,11 @@
hdiutil create -srcfolder dmg -volname "Deliantra MORPG Client" -ov -format UDZO ~user/"$DMG"
ls -l ~user/"$DMG"
-rm -rf dmg
+#rm -rf dmg
chmod 644 ~user/$DMG
echo http://data.plan9.de/"$DMG"
-rsync -avPessh ~user/"$DMG" ruth:/var/www/data.plan9.de/.
+rsync -avPessh ~user/"$DMG" rijk.plan9.de:/var/www/data.plan9.de/.