Gratuitous Space Battles. Needs libcurl.so.3, so put an old version of that in, too

This commit is contained in:
Jack Cummings 2013-09-15 21:07:11 -07:00 committed by Bjørn Forsman
parent 92613863fe
commit e6f2ac65e2
3 changed files with 150 additions and 0 deletions

View File

@ -0,0 +1,68 @@
{ stdenv, config, requireFile
, curl3, SDL, SDL_image, libpng12, libjpeg62, libvorbis, libogg, openal, mesa
, libX11, libXext, libXft, fontconfig, zlib }:
# TODO: add i686 support
stdenv.mkDerivation rec {
name = "gsb-1.56.0";
goBuyItNow = ''
We cannot download the full version automatically, as you require a license.
Once you bought a license, you need to add your downloaded version to the nix store.
You can do this by using "nix-prefetch-url file://gsb1324679796.tar.gz" in the
directory where you saved it.
'';
src = requireFile {
message = goBuyItNow;
name = "gsb1324679796.tar.gz";
sha256 = "12jsz9v55w9zxwiz4kbm6phkv60q3c2kyv5imsls13385pzwcs8i";
};
phases = "unpackPhase installPhase";
# XXX: stdenv.lib.makeLibraryPath doesn't pick up /lib64
libPath = stdenv.lib.makeLibraryPath [ stdenv.gcc.gcc stdenv.gcc.libc ]
+ ":" + stdenv.lib.makeLibraryPath [ SDL SDL_image libjpeg62 libpng12 mesa ]
+ ":" + stdenv.lib.makeLibraryPath [ curl3 openal libvorbis libogg ]
+ ":" + stdenv.lib.makeLibraryPath [ libX11 libXext libXft fontconfig zlib ]
+ ":" + stdenv.gcc.gcc + "/lib64";
installPhase = ''
ensureDir $out/libexec/positech/GSB/
ensureDir $out/bin
patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" --set-rpath $libPath ./GSB.bin.x86_64
cp -r * $out/libexec/positech/GSB/
rm -rf $out/libexec/positech/GSB/lib64/
#makeWrapper doesn't do cd. :(
cat > $out/bin/GSB << EOF
#!/bin/sh
cd $out/libexec/positech/GSB
exec ./GSB.bin.x86_64
EOF
chmod +x $out/bin/GSB
'';
meta = {
description = "Gratuitous Space Battles";
longDescription = ''
a strategy / management / simulation game that does away with all the
base building and delays and gets straight to the meat and potatoes of
science-fiction games : The big space battles fought by huge spaceships with
tons of laser beams and things going 'zap!', 'ka-boom!' and 'ka-pow!'. In GSB
you put your ships together from modular components, arrange them into fleets,
give your ships orders of engagement and then hope they emerge victorious from
battle (or at least blow to bits in aesthetically pleasing ways).
'';
homepage = http://www.positech.co.uk/gratuitousspacebattles/index.html;
license = [ "unfree" ];
maintainers = with stdenv.lib.maintainers; [ jcumming ];
platforms = [ "x86_64-linux"] ;
};
}

View File

@ -0,0 +1,75 @@
{ stdenv, fetchurl
, zlibSupport ? false, zlib ? null
, sslSupport ? false, openssl ? null
, scpSupport ? false, libssh2 ? null
, gssSupport ? false, gss ? null
, c-aresSupport ? false, c-ares ? null
, linkStatic ? false
}:
assert zlibSupport -> zlib != null;
assert sslSupport -> openssl != null;
assert scpSupport -> libssh2 != null;
assert c-aresSupport -> c-ares != null;
stdenv.mkDerivation rec {
name = "curl-7.15.0";
src = fetchurl {
url = "http://curl.haxx.se/download/archeology/${name}.tar.gz";
sha256 = "061bgjm6rv0l9804vmm4jvr023l52qvmy9qq4zjv4lgqhlljvhz3";
};
# Zlib and OpenSSL must be propagated because `libcurl.la' contains
# "-lz -lssl", which aren't necessary direct build inputs of
# applications that use Curl.
propagatedBuildInputs = with stdenv.lib;
optional zlibSupport zlib ++
optional gssSupport gss ++
optional c-aresSupport c-ares ++
optional sslSupport openssl;
preConfigure = ''
sed -e 's|/usr/bin|/no-such-path|g' -i.bak configure
'';
configureFlags = [
( if sslSupport then "--with-ssl=${openssl}" else "--without-ssl" )
( if scpSupport then "--with-libssh2=${libssh2}" else "--without-libssh2" )
]
++ stdenv.lib.optional c-aresSupport "--enable-ares=${c-ares}"
++ stdenv.lib.optional gssSupport "--with-gssapi=${gss}"
++ stdenv.lib.optionals linkStatic [ "--enable-static" "--disable-shared" ]
;
dontDisableStatic = linkStatic;
CFLAGS = if stdenv ? isDietLibC then "-DHAVE_INET_NTOA_R_2_ARGS=1" else "";
LDFLAGS = if linkStatic then "-static" else "";
CXX = "g++";
CXXCPP = "g++ -E";
# libtool hack to get a static binary. Notice that to 'configure' I passed
# other LDFLAGS, because it doesn't use libtool for linking in the tests.
makeFlags = if linkStatic then "LDFLAGS=-all-static" else "";
crossAttrs = {
# We should refer to the cross built openssl
# For the 'urandom', maybe it should be a cross-system option
configureFlags = [
( if sslSupport then "--with-ssl=${openssl.crossDrv}" else "--without-ssl" )
"--with-random /dev/urandom"
]
++ stdenv.lib.optionals linkStatic [ "--enable-static" "--disable-shared" ]
;
};
passthru = {
inherit sslSupport openssl;
};
meta = {
homepage = "http://curl.haxx.se/";
description = "A command line tool for transferring files with URL syntax";
platforms = stdenv.lib.platforms.all;
};
}

View File

@ -712,6 +712,11 @@ let
scpSupport = zlibSupport && !stdenv.isSunOS && !stdenv.isCygwin;
};
curl3 = callPackage ../tools/networking/curl/7.15.nix rec {
zlibSupport = true;
sslSupport = zlibSupport;
};
cunit = callPackage ../tools/misc/cunit { };
curlftpfs = callPackage ../tools/filesystems/curlftpfs { };
@ -4112,6 +4117,8 @@ let
gav = callPackage ../games/gav { };
gsb = callPackage ../games/gsb { };
gdome2 = callPackage ../development/libraries/gdome2 {
inherit (gnome) gtkdoc;
};