zod: 2011-03-18 -> 2011-09-06

- cleanup Derivation
- add map_editor and zod_launcher
- game is playable now (appears broken/orphaned in current version)
- fix comment about version
- add enableParallelBuilding=true;
- change source url to use mirror://
This commit is contained in:
zeri42 2021-05-16 01:36:46 +02:00
parent 2a7c5c78b7
commit 1d58c8b095

View file

@ -1,46 +1,102 @@
{ lib, fetchurl, stdenv, unrar, unzip, SDL, SDL_image, SDL_ttf, SDL_mixer
, libmysqlclient, makeWrapper }:
stdenv.mkDerivation {
name = "zod-engine-2011-03-18";
src = fetchurl {
url = "mirror://sourceforge/zod/zod_src-2011-03-18.zip";
sha256 = "00ny7a1yfn9zgl7q1ys27qafwc92dzxv07wjxl8nxa4f98al2g4n";
{ lib
, config
, fetchzip
, stdenv
, SDL
, SDL_image
, SDL_ttf
, SDL_mixer
, libmysqlclient
, wxGTK
, symlinkJoin
, runCommandLocal
, makeWrapper
, coreutils
}:
let
version = "2011-09-06";
name = "zod-engine-${version}";
src = fetchzip {
url = "mirror://sourceforge/zod/linux_releases/zod_linux-${version}.tar.gz";
sha256 = "017v96aflrv07g8j8zk9mq8f8rqxl5228rjff5blq8dxpsv1sx7h";
};
srcAssets = fetchurl {
url = "mirror://sourceforge/zod/zod_assets-2011-03-12.rar";
sha256 = "0gmg4ppr4y6ck04mandlp2fmdcyssmck999m012jx5v1rm57g2hn";
};
nativeBuildInputs = [
makeWrapper
];
buildInputs = [
SDL
SDL_image
SDL_ttf
SDL_mixer
libmysqlclient
wxGTK
coreutils
];
hardeningDisable = [ "format" ];
unpackPhase = ''
mkdir src
pushd src
unzip $src
popd
sourceRoot=`pwd`/src
'';
nativeBuildInputs = [ makeWrapper unrar unzip ];
buildInputs = [ SDL SDL_image SDL_ttf SDL_mixer libmysqlclient ];
NIX_LDFLAGS = "-L${libmysqlclient}/lib/mysql";
installPhase = ''
mkdir -p $out/bin $out/share/zod
pushd $out/share/zod
unrar x $srcAssets
popd
cp zod $out/bin
wrapProgram $out/bin/zod --run "cd $out/share/zod"
'';
meta = {
description = "Multiplayer remake of ZED";
homepage = "http://zod.sourceforge.net/";
license = lib.licenses.gpl3Plus; /* Says the web */
zod_engine = stdenv.mkDerivation {
inherit name version src nativeBuildInputs buildInputs hardeningDisable NIX_LDFLAGS;
pname = "${name}-engine";
enableParallelBuilding = true;
preBuild = "cd zod_src";
installPhase = ''
mkdir -p $out/bin
install -m755 zod $out/bin/
wrapProgram $out/bin/zod --run "cd ${zod_assets}/usr/lib/commander-zod"
'';
};
}
zod_map_editor = stdenv.mkDerivation {
inherit name version src nativeBuildInputs buildInputs hardeningDisable NIX_LDFLAGS;
pname = "${name}-map_editor";
enableParallelBuilding = true;
preBuild = "cd zod_src";
makeFlags = [ "map_editor" ];
installPhase = ''
mkdir -p $out/bin
install -m755 zod_map_editor $out/bin
wrapProgram $out/bin/zod_map_editor --run "cd ${zod_assets}/usr/lib/commander-zod"
'';
};
zod_launcher = stdenv.mkDerivation {
inherit name version src nativeBuildInputs buildInputs zod_engine zod_map_editor;
pname = "${name}-launcher";
# This is necessary because the zod_launcher has terrible fixed-width window
# the Idea is to apply the scalingFactor to all positions and sizes and I tested 1,2,3 and 4
# 2,3,4 look acceptable on my 4k monitor and 1 is unreadable.
# also the ./ in the run command is removed to have easier time starting the game
postPatch = ''
substituteInPlace zod_launcher_src/zod_launcherFrm.cpp \
--replace 'message = wxT("./zod");' 'message = wxT("zod");'
'';
preBuild = "cd zod_launcher_src";
installPhase = ''
mkdir -p $out/bin
install -m755 zod_launcher $out/bin
'';
};
zod_assets = runCommandLocal "${name}-assets" {} ''
mkdir -p $out/usr/lib/commander-zod{,blank_maps}
cp -r ${src}/assets $out/usr/lib/commander-zod/assets
for i in ${src}/*.map ${src}/*.txt; do
install -m644 $i $out/usr/lib/commander-zod
done
for map in ${src}/blank_maps/*; do
install -m644 $map $out/usr/lib/commander-zod/blank_maps
done
'';
in
symlinkJoin {
inherit name;
paths = [
zod_engine
zod_launcher
zod_map_editor
zod_assets
];
meta = with lib; {
description = "Multiplayer remake of ZED";
homepage = "http://zod.sourceforge.net/";
maintainers = with maintainers; [ zeri ];
license = licenses.gpl3Plus; /* Says the website */
};
}