dadc7eb329
Whenever we create scripts that are installed to $out, we must use runtimeShell in order to get the shell that can be executed on the machine we create the package for. This is relevant for cross-compiling. The only use case for stdenv.shell are scripts that are executed as part of the build system. Usages in checkPhase are borderline however to decrease the likelyhood of people copying the wrong examples, I decided to use runtimeShell as well.
82 lines
2.6 KiB
Nix
82 lines
2.6 KiB
Nix
{ stdenv, fetchurl, unzip, libGLU_combined, libX11, SDL, openal, runtimeShell }:
|
|
stdenv.mkDerivation rec {
|
|
name = "tremulous-${version}";
|
|
version = "1.1.0";
|
|
src1 = fetchurl {
|
|
url = "mirror://sourceforge/tremulous/${name}.zip";
|
|
sha256 = "11w96y7ggm2sn5ncyaffsbg0vy9pblz2av71vqp9725wbbsndfy7";
|
|
};
|
|
# http://tremulous.net/wiki/Client_versions
|
|
src2 = fetchurl {
|
|
url = "http://releases.mercenariesguild.net/client/mgclient_source_Release_1.011.tar.gz";
|
|
sha256 = "1vrsi7va7hdp8k824663s1pyw9zpsd4bwwr50j7i1nn72b0v9a26";
|
|
};
|
|
src3 = fetchurl {
|
|
url = "http://releases.mercenariesguild.net/tremded/mg_tremded_source_1.01.tar.gz";
|
|
sha256 = "1njrqlhzjvy9myddzkagszwdcf3m4h08wip888w2rmbshs6kz6ql";
|
|
};
|
|
buildInputs = [ unzip libGLU_combined libX11 SDL openal ];
|
|
unpackPhase = ''
|
|
unzip $src1
|
|
cd tremulous
|
|
tar xvf $src2
|
|
mkdir mg_tremded_source
|
|
cd mg_tremded_source
|
|
tar xvf $src3
|
|
cd ..
|
|
'';
|
|
patches = [ ./parse.patch ];
|
|
patchFlags = "-p 0";
|
|
NIX_LD_FLAGS = ''
|
|
-rpath ${stdenv.cc}/lib
|
|
-rpath ${stdenv.cc}/lib64
|
|
'';
|
|
buildPhase = ''
|
|
cd Release_1.011
|
|
make
|
|
cd ..
|
|
cd mg_tremded_source
|
|
make
|
|
cd ..
|
|
'';
|
|
installPhase = ''
|
|
arch=$(uname -m | sed -e s/i.86/x86/)
|
|
mkdir -p $out/opt/tremulous
|
|
cp -v Release_1.011/build/release-linux-$arch/tremulous.$arch $out/opt/tremulous/
|
|
cp -v mg_tremded_source/build/release-linux-$arch/tremded.$arch $out/opt/tremulous/
|
|
cp -rv base $out/opt/tremulous
|
|
mkdir -p $out/bin
|
|
for b in tremulous tremded
|
|
do
|
|
cat << EOF > $out/bin/$b
|
|
#!${runtimeShell}
|
|
cd $out/opt/tremulous
|
|
exec ./$b.$arch "\$@"
|
|
EOF
|
|
chmod +x $out/bin/$b
|
|
done
|
|
'';
|
|
dontPatchELF = true;
|
|
meta = with stdenv.lib; {
|
|
description = "A game that blends a team based FPS with elements of an RTS";
|
|
longDescription = ''
|
|
Tremulous is a free, open source game that blends a team based FPS with
|
|
elements of an RTS. Players can choose from 2 unique races, aliens and
|
|
humans. Players on both teams are able to build working structures
|
|
in-game like an RTS. These structures provide many functions, the most
|
|
important being spawning. The designated builders must ensure there are
|
|
spawn structures or other players will not be able to rejoin the game
|
|
after death. Other structures provide automated base defense (to some
|
|
degree), healing functions and much more...
|
|
'';
|
|
homepage = http://www.tremulous.net;
|
|
license = with licenses; [
|
|
gpl2
|
|
cc-by-sa-25 /* media */
|
|
];
|
|
maintainers = with maintainers; [ astsmtl ];
|
|
platforms = platforms.linux;
|
|
broken = true;
|
|
};
|
|
}
|