1 | #!/bin/bash |
1 | #!/bin/bash |
2 | |
2 | |
3 | # this gem of a hack gathers all fiels required by the client for the platform |
3 | # this gem of a hack gathers all files required by the client for the platform |
4 | # by deep magic, it works on osx, linux and windows. on MY osx, linux |
4 | # by deep magic, it works on osx, linux and windows. on MY osx, linux |
5 | # and windows, that is. |
5 | # and windows, that is. |
6 | |
6 | |
7 | STRIP="strip" |
7 | STRIP="strip" |
8 | LIBEXT=so |
8 | LIBEXT=so |
… | |
… | |
17 | |
17 | |
18 | if [ "$(uname -s)" = CYGWIN_NT-5.0 ]; then |
18 | if [ "$(uname -s)" = CYGWIN_NT-5.0 ]; then |
19 | . ~/.setenv |
19 | . ~/.setenv |
20 | |
20 | |
21 | OS=windows |
21 | OS=windows |
22 | URLADER=.exe |
22 | URLADER=windows-x86 |
23 | unset PANGO |
23 | unset PANGO |
24 | PERL=/c/perl/bin/perl |
24 | PERL=/c/perl/bin/perl |
25 | MAKE=nmake |
25 | MAKE=nmake |
26 | SYSLIB=/c/gtk/bin |
26 | SYSLIB=/c/gtk/bin |
27 | LIBEXT=dll |
27 | LIBEXT=dll |
… | |
… | |
37 | /c/gtk/bin/pango-querymodules # empty output usually |
37 | /c/gtk/bin/pango-querymodules # empty output usually |
38 | } |
38 | } |
39 | |
39 | |
40 | elif [ "$(uname -s)" = Darwin ]; then |
40 | elif [ "$(uname -s)" = Darwin ]; then |
41 | OS=darwin |
41 | OS=darwin |
42 | URLADER=-osx105 |
42 | URLADER=darwin-x86 |
43 | PANGO=1.6.0 |
43 | PANGO=1.6.0 |
44 | PERL=/opt/local/bin/perl |
44 | PERL=/opt/local/bin/perl |
45 | GENPACK_ENVVARS="DYLD_LIBRARY_PATH=." |
45 | GENPACK_ENVVARS="DYLD_LIBRARY_PATH=." |
46 | |
46 | |
47 | SYSLIB=/opt/local/lib |
47 | SYSLIB=/opt/local/lib |
48 | LIB0=dylib |
48 | LIB0=dylib |
49 | SO=bundle |
49 | SO=bundle |
50 | STRIP="strip -x" |
50 | STRIP="strip -x" |
51 | elif [ $(arch) = i686 ]; then |
51 | elif [ $(arch) = i686 ]; then |
52 | OS=linux |
52 | OS=linux |
53 | URLADER=-x86 |
53 | URLADER=linux-x86 |
54 | PANGO=1.5.0 |
54 | PANGO=1.5.0 |
55 | PERL=/usr/bin/perl |
55 | PERL=/usr/bin/perl |
56 | else |
56 | else |
57 | OS=linux |
57 | OS=linux |
58 | URLADER=-amd64 |
58 | URLADER=linux-amd64 |
59 | PANGO=1.5.0 |
59 | PANGO=1.5.0 |
60 | PERL=/usr/bin/perl |
60 | PERL=/usr/bin/perl |
61 | ARCHNAME=amd64 |
61 | ARCHNAME=amd64 |
62 | fi |
62 | fi |
63 | |
63 | |
… | |
… | |
70 | #PANGO=1.6.0 |
70 | #PANGO=1.6.0 |
71 | |
71 | |
72 | export EV_EVENTFD=0 |
72 | export EV_EVENTFD=0 |
73 | export EV_INOTIFY=0 |
73 | export EV_INOTIFY=0 |
74 | export EV_SIGNALFD=0 |
74 | export EV_SIGNALFD=0 |
75 | |
|
|
76 | if true; then |
|
|
77 | for mod in deliantra/Deliantra deliantra/Deliantra-Client; do |
|
|
78 | # for mod in common-sense AnyEvent EV JSON-XS deliantra/Deliantra Compress-LZF BDB Guard deliantra/Deliantra-Client; do |
|
|
79 | # for mod in CFPlus; do |
|
|
80 | ( |
|
|
81 | cd /root/src/$mod |
|
|
82 | cvs update -AdP |
|
|
83 | $PERL Makefile.PL </dev/null >/dev/null |
|
|
84 | $MAKE clean >/dev/null |
|
|
85 | $PERL Makefile.PL </dev/null >/dev/null |
|
|
86 | if ! $MAKE install >log 2>&1; then |
|
|
87 | cat log |
|
|
88 | exit |
|
|
89 | fi |
|
|
90 | rm -f log |
|
|
91 | $MAKE clean >/dev/null |
|
|
92 | ) || exit |
|
|
93 | done |
|
|
94 | fi |
|
|
95 | |
75 | |
96 | cat <<EOF >"$DIST"/pango.rc |
76 | cat <<EOF >"$DIST"/pango.rc |
97 | [Pango] |
77 | [Pango] |
98 | ModuleFiles = pango.modules |
78 | ModuleFiles = pango.modules |
99 | EOF |
79 | EOF |
… | |
… | |
102 | exec 5>"$DIST"/pango.modules |
82 | exec 5>"$DIST"/pango.modules |
103 | pango-querymodules | grep ^/ | while read lib rest; do |
83 | pango-querymodules | grep ^/ | while read lib rest; do |
104 | base=$(basename "$lib") |
84 | base=$(basename "$lib") |
105 | [ "$base" = pango-basic-x.$LIBEXT ] && continue |
85 | [ "$base" = pango-basic-x.$LIBEXT ] && continue |
106 | cp -p "$lib" "$DIST"/. |
86 | cp -p "$lib" "$DIST"/. |
107 | echo "$base $rest" >&5 |
87 | echo "./$base $rest" >&5 # using ./ seems to help pango not to rummage around in /usr/lib etc. |
108 | done |
88 | done |
109 | ) |
89 | ) |
110 | |
90 | |
111 | ############################################################################# |
91 | ############################################################################# |
112 | |
92 | |
… | |
… | |
180 | if (-d $_) { |
160 | if (-d $_) { |
181 | system "rsync", "-aR", $_, "$ENV{DIST}/pm/."; |
161 | system "rsync", "-aR", $_, "$ENV{DIST}/pm/."; |
182 | } else { |
162 | } else { |
183 | File::Path::mkpath "$ENV{OSDIST}/pm/" . dirname $_; |
163 | File::Path::mkpath "$ENV{OSDIST}/pm/" . dirname $_; |
184 | File::Copy::syscopy "$_", "$ENV{OSDIST}/pm/$_" |
164 | File::Copy::syscopy "$_", "$ENV{OSDIST}/pm/$_" |
185 | or die "$ENV{OSDIST}/pm/$_: $!"; |
165 | or die "$lib/$_ => $ENV{OSDIST}/pm/$_: $!"; |
186 | |
166 | |
187 | if (s/\.pm$//) { |
167 | if (s/\.pm$//) { |
188 | $auto = "auto/$_"; |
168 | $auto = "auto/$_"; |
189 | |
169 | |
190 | for my $glob ("*.'$SO'", "autosplit.ix", "*.al") { |
170 | for my $glob ("*.'$SO'", "autosplit.ix", "*.al") { |
… | |
… | |
256 | |
236 | |
257 | # convert perl to a non-console-app |
237 | # convert perl to a non-console-app |
258 | $PERL -MWin32::Exe -e '$e = new Win32::Exe"perl.exe"; $e->set_subsystem_windows; $e->write' |
238 | $PERL -MWin32::Exe -e '$e = new Win32::Exe"perl.exe"; $e->set_subsystem_windows; $e->write' |
259 | |
239 | |
260 | else |
240 | else |
261 | # patch braindamaged pango |
|
|
262 | perl -pe 's{/u(?=sr/lib(32)?/pango)}{/\x00}g; s{\Q'$PANGO'\E\x00}{y.t.u\x00}g' <$SYSLIB/libpango-1.0.$LIB0 >libpango-1.0.$LIB0 |
|
|
263 | chmod 755 libpango-1.0.$LIB0 |
|
|
264 | |
|
|
265 | for lib in mikmod vorbisfile; do |
241 | for lib in mikmod vorbisfile; do |
266 | cp -p $SYSLIB/lib$lib.$LIB0 . |
242 | cp -p $SYSLIB/lib$lib.$LIB0 . |
267 | chmod 755 lib$lib.$LIB0 |
243 | chmod 755 lib$lib.$LIB0 |
268 | done |
244 | done |
269 | fi |
245 | fi |
… | |
… | |
277 | for lib in \ |
253 | for lib in \ |
278 | dl c m rt pthread nsl crypt \ |
254 | dl c m rt pthread nsl crypt \ |
279 | X11 Xext Xau Xdmcp ICE SM Xrandr Xrender Xxf86vm drm GL \ |
255 | X11 Xext Xau Xdmcp ICE SM Xrandr Xrender Xxf86vm drm GL \ |
280 | z |
256 | z |
281 | do |
257 | do |
282 | rm -f lib"$lib".$SO0 |
258 | rm -f lib"$lib".$LIB0 |
283 | done |
259 | done |
|
|
260 | |
|
|
261 | if [ "$OS" != windows ]; then |
|
|
262 | # patch braindamaged pango |
|
|
263 | |
|
|
264 | if [ "$OS" != darwin ]; then |
|
|
265 | set libpango-1.0.$LIB0 |
|
|
266 | perl -pe 's{/u(?=sr/lib(32)?/pango)}{.\x00}g;' <"$1" >"$1~" && mv "$1~" "$1" |
|
|
267 | else |
|
|
268 | set lib*pango-1.0.0.dylib |
|
|
269 | perl -pe 's{/o(?=pt/local/.../pango)}{.\x00}g;' <"$1" >"$1~" && mv "$1~" "$1" |
|
|
270 | fi |
|
|
271 | chmod 755 "$1" |
|
|
272 | fi |
284 | |
273 | |
285 | if [ "$OS" = darwin ]; then |
274 | if [ "$OS" = darwin ]; then |
286 | # "dll hell" is most severe on os x, because apple |
275 | # "dll hell" is most severe on os x, because apple |
287 | # does not generally give a shit for backwards compatibility, |
276 | # does not generally give a shit for backwards compatibility, |
288 | # alwayss ships outdated libraries and often provides libraries |
277 | # alwayss ships outdated libraries and often provides libraries |
… | |
… | |
320 | patchlibs "$lib" |
309 | patchlibs "$lib" |
321 | mv "$lib" "libdeliantra-$stem.dylib" |
310 | mv "$lib" "libdeliantra-$stem.dylib" |
322 | done |
311 | done |
323 | fi |
312 | fi |
324 | |
313 | |
325 | [ "$OS" = linux ] && chrpath -d perl # debian perls have an rpath. really. |
314 | [ "$OS" = linux ] && chrpath -d perl $(find pm -name "*.so") # debian perls have an rpath, many modules too |
326 | $STRIP $(find . -name "*.$SO" -o -name "*.$LIBEXT" -o -name "*.$LIB0") perl |
315 | $STRIP $(find . -name "*.$SO" -o -name "*.$LIBEXT" -o -name "*.$LIB0") perl |
|
|
316 | |
|
|
317 | : >timidity.cfg |
327 | ) |
318 | ) |
328 | |
319 | |
329 | printf -- urlader$URLADER >"$DIST".urlader |
320 | cat >"$DIST".vars <<EOF |
|
|
321 | G_URLADER="$URLADER" |
|
|
322 | G_OS="$OS" |
|
|
323 | G_ARCHNAME="$ARCHNAME" |
|
|
324 | G_ENVVARS="$GENPACK_ENVVARS" |
|
|
325 | G_COMMAND="./perl run" |
|
|
326 | EOF |
330 | |
327 | |
331 | echo >"$DIST".genpack genpack deliantra_S-$OS-"$ARCHNAME" '"$EXE_VER"' '"$1"' $GENPACK_ENVVARS ./perl run |
|
|
332 | |
|
|
333 | exit |
|
|
334 | |
|
|
335 | |
|
|
336 | tar cf deliantra-gnu-linux-$ARCHNAME.tar deliantra-gnu-linux-$ARCHNAME |
|
|
337 | gzip -9vf deliantra-gnu-linux-$ARCHNAME.tar |
|
|
338 | todata deliantra-gnu-linux-$ARCHNAME.tar.gz |
|
|
339 | |
|
|