cataclysm-dda{,-git}: move common attributes to common.nix

This commit is contained in:
Mitsuhiro Nakamura 2018-07-06 01:47:43 +09:00
parent 464cf105c6
commit 206e271e32
3 changed files with 142 additions and 152 deletions

View File

@ -0,0 +1,96 @@
{ stdenv, fetchFromGitHub, pkgconfig, gettext, lua, ncurses
, tiles, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf, freetype, Cocoa
, debug
}:
let
inherit (stdenv.lib) optionals;
cursesDeps = [ gettext lua ncurses ];
tilesDeps = [ SDL2 SDL2_image SDL2_mixer SDL2_ttf freetype ]
++ optionals stdenv.isDarwin [ Cocoa ];
common = {
nativeBuildInputs = [ pkgconfig ];
buildInputs = cursesDeps ++ optionals tiles tilesDeps;
postPatch = ''
patchShebangs .
'';
makeFlags = [
"PREFIX=$(out)" "LUA=1" "USE_HOME_DIR=1" "LANGUAGES=all"
] ++ optionals (!debug) [
"RELEASE=1"
] ++ optionals tiles [
"TILES=1" "SOUND=1"
] ++ optionals stdenv.isDarwin [
"NATIVE=osx" "CLANG=1"
];
dontStrip = debug;
meta = with stdenv.lib; {
description = "A free, post apocalyptic, zombie infested rogue-like";
longDescription = ''
Cataclysm: Dark Days Ahead is a roguelike set in a post-apocalyptic world.
Surviving is difficult: you have been thrown, ill-equipped, into a
landscape now riddled with monstrosities of which flesh eating zombies are
neither the strangest nor the deadliest.
Yet with care and a little luck, many things are possible. You may try to
eke out an existence in the forests silently executing threats and
providing sustenance with your longbow. You can ride into town in a
jerry-rigged vehicle, all guns blazing, to settle matters in a fug of
smoke from your molotovs. You could take a more measured approach and
construct an impregnable fortress, surrounded by traps to protect you from
the horrors without. The longer you survive, the more skilled and adapted
you will get and the better equipped and armed to deal with the threats
you are presented with.
In the course of your ordeal there will be opportunities and temptations
to improve or change your very nature. There are tales of survivors fitted
with extraordinary cybernetics giving great power and stories too of
gravely mutated survivors who, warped by their ingestion of exotic
substances or radiation, now more closely resemble insects, birds or fish
than their original form.
'';
homepage = https://cataclysmdda.org/;
license = licenses.cc-by-sa-30;
platforms = platforms.unix;
};
};
utils = {
fetchFromCleverRaven = { rev, sha256 }:
fetchFromGitHub {
owner = "CleverRaven";
repo = "Cataclysm-DDA";
inherit rev sha256;
};
installXDGAppLauncher = ''
launcher="$out/share/applications/cataclysm-dda.desktop"
install -D -m 444 data/xdg/com.cataclysmdda.cataclysm-dda.desktop -T "$launcher"
sed -i "$launcher" -e "s,\(Exec=\)\(cataclysm-tiles\),\1$out/bin/\2,"
install -D -m 444 data/xdg/cataclysm-dda.svg -t $out/share/icons/hicolor/scalable/apps
'';
installMacOSAppLauncher = ''
app=$out/Applications/Cataclysm.app
install -D -m 444 data/osx/Info.plist -t $app/Contents
install -D -m 444 data/osx/AppIcon.icns -t $app/Contents/Resources
mkdir $app/Contents/MacOS
launcher=$app/Contents/MacOS/Cataclysm.sh
cat << EOF > $launcher
#!${stdenv.shell}
$out/bin/cataclysm-tiles
EOF
chmod 555 $launcher
'';
};
in
{ inherit common utils; }

View File

@ -1,43 +1,30 @@
{ fetchFromGitHub, stdenv, pkgconfig, ncurses, lua, SDL2, SDL2_image, SDL2_ttf, { stdenv, callPackage, ncurses
SDL2_mixer, freetype, gettext, Cocoa, libicns, , tiles ? true, Cocoa, libicns
tiles ? true }: , debug ? false
}:
stdenv.mkDerivation rec { let
inherit (stdenv.lib) optionals optionalString;
inherit (callPackage ./common.nix { inherit tiles Cocoa debug; }) common utils;
inherit (utils) fetchFromCleverRaven installMacOSAppLauncher;
in
stdenv.mkDerivation (common // rec {
version = "0.C"; version = "0.C";
name = "cataclysm-dda-${version}"; name = "cataclysm-dda-${version}";
src = fetchFromGitHub { src = fetchFromCleverRaven {
owner = "CleverRaven";
repo = "Cataclysm-DDA";
rev = "${version}"; rev = "${version}";
sha256 = "03sdzsk4qdq99qckq0axbsvg1apn6xizscd8pwp5w6kq2fyj5xkv"; sha256 = "03sdzsk4qdq99qckq0axbsvg1apn6xizscd8pwp5w6kq2fyj5xkv";
}; };
nativeBuildInputs = [ pkgconfig ] nativeBuildInputs = common.nativeBuildInputs
++ stdenv.lib.optionals (tiles && stdenv.isDarwin) [ libicns ]; ++ optionals (tiles && stdenv.isDarwin) [ libicns ];
buildInputs = with stdenv.lib; [ ncurses lua gettext ]
++ optionals tiles [ SDL2 SDL2_image SDL2_ttf SDL2_mixer freetype ]
++ optionals (tiles && stdenv.isDarwin) [ Cocoa ];
patches = [ ./patches/fix_locale_dir.patch ]; patches = [ ./patches/fix_locale_dir.patch ];
postPatch = '' makeFlags = common.makeFlags
patchShebangs . ++ optionals stdenv.isDarwin [
'';
makeFlags = with stdenv.lib; [
"PREFIX=$(out)"
"LUA=1"
"RELEASE=1"
"USE_HOME_DIR=1"
# "LANGUAGES=all" # vanilla C:DDA installs all translations even without this flag!
] ++ optionals tiles [
"TILES=1"
"SOUND=1"
] ++ optionals stdenv.isDarwin [
"NATIVE=osx"
"CLANG=1"
"OSX_MIN=10.6" # SDL for macOS only supports deploying on 10.6 and above "OSX_MIN=10.6" # SDL for macOS only supports deploying on 10.6 and above
] ++ optionals stdenv.cc.isGNU [ ] ++ optionals stdenv.cc.isGNU [
"WARNINGS+=-Wno-deprecated-declarations" "WARNINGS+=-Wno-deprecated-declarations"
@ -46,57 +33,20 @@ stdenv.mkDerivation rec {
"WARNINGS+=-Wno-inconsistent-missing-override" "WARNINGS+=-Wno-inconsistent-missing-override"
]; ];
NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang "-Wno-user-defined-warnings"; NIX_CFLAGS_COMPILE = optionalString stdenv.cc.isClang "-Wno-user-defined-warnings";
postBuild = stdenv.lib.optionalString (tiles && stdenv.isDarwin) '' postBuild = optionalString (tiles && stdenv.isDarwin) ''
# iconutil on macOS is not available in nixpkgs # iconutil on macOS is not available in nixpkgs
png2icns data/osx/AppIcon.icns data/osx/AppIcon.iconset/* png2icns data/osx/AppIcon.icns data/osx/AppIcon.iconset/*
''; '';
postInstall = stdenv.lib.optionalString (tiles && stdenv.isDarwin) '' postInstall = optionalString (tiles && stdenv.isDarwin)
app=$out/Applications/Cataclysm.app installMacOSAppLauncher;
install -D -m 444 data/osx/Info.plist -t $app/Contents
install -D -m 444 data/osx/AppIcon.icns -t $app/Contents/Resources
mkdir $app/Contents/MacOS
launcher=$app/Contents/MacOS/Cataclysm.sh
cat << SCRIPT > $launcher
#!/bin/sh
$out/bin/cataclysm-tiles
SCRIPT
chmod 555 $launcher
'';
# Disable, possible problems with hydra # Disable, possible problems with hydra
#enableParallelBuilding = true; #enableParallelBuilding = true;
meta = with stdenv.lib; { meta = common.meta // {
description = "A free, post apocalyptic, zombie infested rogue-like"; maintainers = with stdenv.lib.maintainers; [ skeidel ];
longDescription = ''
Cataclysm: Dark Days Ahead is a roguelike set in a post-apocalyptic world.
Surviving is difficult: you have been thrown, ill-equipped, into a
landscape now riddled with monstrosities of which flesh eating zombies are
neither the strangest nor the deadliest.
Yet with care and a little luck, many things are possible. You may try to
eke out an existence in the forests silently executing threats and
providing sustenance with your longbow. You can ride into town in a
jerry-rigged vehicle, all guns blazing, to settle matters in a fug of
smoke from your molotovs. You could take a more measured approach and
construct an impregnable fortress, surrounded by traps to protect you from
the horrors without. The longer you survive, the more skilled and adapted
you will get and the better equipped and armed to deal with the threats
you are presented with.
In the course of your ordeal there will be opportunities and temptations
to improve or change your very nature. There are tales of survivors fitted
with extraordinary cybernetics giving great power and stories too of
gravely mutated survivors who, warped by their ingestion of exotic
substances or radiation, now more closely resemble insects, birds or fish
than their original form.
'';
homepage = https://cataclysmdda.org/;
license = licenses.cc-by-sa-30;
maintainers = [ maintainers.skeidel ];
platforms = platforms.unix;
}; };
} })

View File

@ -1,100 +1,44 @@
{ fetchFromGitHub, stdenv, pkgconfig, ncurses, lua, SDL2, SDL2_image, SDL2_ttf, { stdenv, callPackage
SDL2_mixer, freetype, gettext, CoreFoundation, Cocoa, , tiles ? true, Cocoa, CoreFoundation
tiles ? true, debug ? false }: , debug ? false
}:
stdenv.mkDerivation rec { let
inherit (stdenv.lib) optionals optionalString substring;
inherit (callPackage ./common.nix { inherit tiles Cocoa debug; }) common utils;
inherit (utils) fetchFromCleverRaven installXDGAppLauncher installMacOSAppLauncher;
in
stdenv.mkDerivation (common // rec {
version = "2018-07-15"; version = "2018-07-15";
name = "cataclysm-dda-git-${version}"; name = "cataclysm-dda-git-${version}";
src = fetchFromGitHub { src = fetchFromCleverRaven {
owner = "CleverRaven";
repo = "Cataclysm-DDA";
rev = "e1e5d81"; rev = "e1e5d81";
sha256 = "198wfj8l1p8xlwicj92cq237pzv2ha9pcf240y7ijhjpmlc9jkr1"; sha256 = "198wfj8l1p8xlwicj92cq237pzv2ha9pcf240y7ijhjpmlc9jkr1";
}; };
nativeBuildInputs = [ pkgconfig ]; buildInputs = common.buildInputs
++ optionals stdenv.isDarwin [ CoreFoundation ];
buildInputs = with stdenv.lib; [ ncurses lua gettext ]
++ optionals stdenv.isDarwin [ CoreFoundation ]
++ optionals tiles [ SDL2 SDL2_image SDL2_ttf SDL2_mixer freetype ]
++ optionals (tiles && stdenv.isDarwin) [ Cocoa ];
patches = [ ./patches/fix_locale_dir_git.patch ]; patches = [ ./patches/fix_locale_dir_git.patch ];
postPatch = '' makeFlags = common.makeFlags ++ [
patchShebangs .
sed -i data/xdg/com.cataclysmdda.cataclysm-dda.desktop \
-e "s,\(Exec=\)\(cataclysm-tiles\),\1$out/bin/\2,"
'';
makeFlags = with stdenv.lib; [
"PREFIX=$(out)"
"LUA=1"
"USE_HOME_DIR=1"
"LANGUAGES=all"
"VERSION=git-${version}-${substring 0 8 src.rev}" "VERSION=git-${version}-${substring 0 8 src.rev}"
] ++ optionals tiles [
"TILES=1"
"SOUND=1"
] ++ optionals stdenv.isDarwin [
"NATIVE=osx"
"CLANG=1"
] ++ optionals (! debug) [
"RELEASE=1"
]; ];
postInstall = with stdenv.lib; optionalString (tiles && !stdenv.isDarwin) '' postInstall = optionalString tiles
install -D -m 444 data/xdg/com.cataclysmdda.cataclysm-dda.desktop -T $out/share/applications/cataclysm-dda.desktop ( if !stdenv.isDarwin
install -D -m 444 data/xdg/cataclysm-dda.svg -t $out/share/icons/hicolor/scalable/apps then installXDGAppLauncher
'' + optionalString (tiles && stdenv.isDarwin) '' else installMacOSAppLauncher
app=$out/Applications/Cataclysm.app );
install -D -m 444 data/osx/Info.plist -t $app/Contents
install -D -m 444 data/osx/AppIcon.icns -t $app/Contents/Resources
mkdir $app/Contents/MacOS
launcher=$app/Contents/MacOS/Cataclysm.sh
cat << SCRIPT > $launcher
#!/bin/sh
$out/bin/cataclysm-tiles
SCRIPT
chmod 555 $launcher
'';
# https://hydra.nixos.org/build/65193254 # https://hydra.nixos.org/build/65193254
# src/weather_data.cpp:203:1: fatal error: opening dependency file obj/tiles/weather_data.d: No such file or directory # src/weather_data.cpp:203:1: fatal error: opening dependency file obj/tiles/weather_data.d: No such file or directory
# make: *** [Makefile:687: obj/tiles/weather_data.o] Error 1 # make: *** [Makefile:687: obj/tiles/weather_data.o] Error 1
enableParallelBuilding = false; enableParallelBuilding = false;
dontStrip = debug; meta = common.meta // {
maintainers = with stdenv.lib.maintainers; [ rardiol ];
meta = with stdenv.lib; {
description = "A free, post apocalyptic, zombie infested rogue-like";
longDescription = ''
Cataclysm: Dark Days Ahead is a roguelike set in a post-apocalyptic world.
Surviving is difficult: you have been thrown, ill-equipped, into a
landscape now riddled with monstrosities of which flesh eating zombies are
neither the strangest nor the deadliest.
Yet with care and a little luck, many things are possible. You may try to
eke out an existence in the forests silently executing threats and
providing sustenance with your longbow. You can ride into town in a
jerry-rigged vehicle, all guns blazing, to settle matters in a fug of
smoke from your molotovs. You could take a more measured approach and
construct an impregnable fortress, surrounded by traps to protect you from
the horrors without. The longer you survive, the more skilled and adapted
you will get and the better equipped and armed to deal with the threats
you are presented with.
In the course of your ordeal there will be opportunities and temptations
to improve or change your very nature. There are tales of survivors fitted
with extraordinary cybernetics giving great power and stories too of
gravely mutated survivors who, warped by their ingestion of exotic
substances or radiation, now more closely resemble insects, birds or fish
than their original form.
'';
maintainers = with maintainers; [ rardiol ];
homepage = https://cataclysmdda.org/;
license = licenses.cc-by-sa-30;
platforms = platforms.unix;
}; };
} })