about summary refs log tree commit diff
path: root/pkgs/games/ut2004demo/builder.sh
blob: 0e7e3ed50721c449b9a96637341b949469cea52a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
source $stdenv/setup

skip=7976

bunzip2 < $src | (dd bs=1 count=$skip of=/dev/null && dd bs=1M) | tar xvf - ut2004demo.tar

mkdir $out

(cd $out && tar xvf -) < ut2004demo.tar

# Patch the executable from ELF OS/ABI type `Linux' (3) to `SVR4' (0).
# This doesn't seem to matter to ld-linux.so.2 at all, except that it
# refuses to load `Linux' executables when invokes explicitly, that
# is, when we do `ld-linux.so.2 $out/System/ut2004-bin', which we need
# to override the hardcoded ELF interpreter with our own.

# This is a horrible hack, of course.  A better solution would be to
# patch Glibc so it accepts the `Linux' ELF type as well (why doesn't
# it?); or to use FreeBSD's `brandelf' program to set to ELF type
# (which is a bit cleaner than patching using `dd' :-) ).
(cd $out/System && (echo -en "\000" | dd bs=1 seek=7 of=ut2004-bin conv=notrunc))