mirror of
https://github.com/SebastianWendel/nixpkgs.git
synced 2024-09-20 04:19:00 +02:00
armagetronad.*: no graphical deps in buildInputs for dedicated servers
This commit is contained in:
parent
b2f2956473
commit
6df05dd279
|
@ -28,60 +28,64 @@ let
|
|||
latestVersionMajor = "0.2.9";
|
||||
unstableVersionMajor = "0.4";
|
||||
|
||||
latestCommonBuildInputs = [ SDL SDL_image SDL_mixer libpng ];
|
||||
|
||||
unstableCommonBuildInputs = [ SDL2 SDL2_image SDL2_mixer glew ftgl freetype ];
|
||||
unstableCommonNativeBuildInputs = [ SDL ]; # for sdl-config
|
||||
|
||||
srcs = {
|
||||
${latestVersionMajor} = rec {
|
||||
version = "${latestVersionMajor}.1.1";
|
||||
src = fetchFromGitLab {
|
||||
srcs =
|
||||
let
|
||||
fetchArmagetron = rev: hash:
|
||||
fetchFromGitLab {
|
||||
owner = "armagetronad";
|
||||
repo = "armagetronad";
|
||||
rev = "v${version}";
|
||||
sha256 = "tvmKGqzH8IYTSeahc8XmN3RV+GdE5GsP8pAlwG8Ph3M=";
|
||||
inherit rev hash;
|
||||
};
|
||||
extraBuildInputs = latestCommonBuildInputs;
|
||||
in
|
||||
{
|
||||
# https://gitlab.com/armagetronad/armagetronad/-/tags
|
||||
${latestVersionMajor} =
|
||||
let
|
||||
version = "${latestVersionMajor}.1.1";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-tvmKGqzH8IYTSeahc8XmN3RV+GdE5GsP8pAlwG8Ph3M=";
|
||||
in dedicatedServer: {
|
||||
inherit version;
|
||||
src = fetchArmagetron rev hash;
|
||||
extraBuildInputs = lib.optionals (!dedicatedServer) [ libpng SDL SDL_image SDL_mixer ];
|
||||
};
|
||||
|
||||
# https://gitlab.com/armagetronad/armagetronad/-/commits/trunk/?ref_type=heads
|
||||
${unstableVersionMajor} =
|
||||
let
|
||||
rev = "4bf6245a668ce181cd464b767ce436a6b7bf8506";
|
||||
in
|
||||
{
|
||||
rev = "e7f41fd26363e7c6a72f0c673470ed06ab54ae08";
|
||||
hash = "sha256-Uxxk6L7WPxKYQ4CNxWwEtvbZjK8BqYNTuwwdleZ44Ro=";
|
||||
in dedicatedServer: {
|
||||
version = "${unstableVersionMajor}-${builtins.substring 0 8 rev}";
|
||||
src = fetchFromGitLab {
|
||||
owner = "armagetronad";
|
||||
repo = "armagetronad";
|
||||
inherit rev;
|
||||
sha256 = "cpJmQHCS6asGasD7anEgNukG9hRXpsIJZrCr3Q7uU4I=";
|
||||
};
|
||||
extraBuildInputs = [ protobuf boost ] ++ unstableCommonBuildInputs;
|
||||
extraNativeBuildInputs = [ bison ] ++ unstableCommonNativeBuildInputs;
|
||||
src = fetchArmagetron rev hash;
|
||||
extraBuildInputs = [ protobuf boost ]
|
||||
++ lib.optionals (!dedicatedServer) [ glew ftgl freetype SDL2 SDL2_image SDL2_mixer ];
|
||||
extraNativeBuildInputs = [ bison ];
|
||||
};
|
||||
|
||||
# https://gitlab.com/armagetronad/armagetronad/-/commits/hack-0.2.8-sty+ct+ap/?ref_type=heads
|
||||
"${latestVersionMajor}-sty+ct+ap" =
|
||||
let
|
||||
rev = "fdfd5fb97083aed45467385b96d50d87669e4023";
|
||||
in
|
||||
{
|
||||
rev = "a5bffe9dda2b43d330433f76f14eb374701f326a";
|
||||
hash = "sha256-cNABxfg3MSmbxU/R78QyPOMwXGqJEamaFOPNw5yhDGE=";
|
||||
in dedicatedServer: {
|
||||
version = "${latestVersionMajor}-sty+ct+ap-${builtins.substring 0 8 rev}";
|
||||
src = fetchFromGitLab {
|
||||
owner = "armagetronad";
|
||||
repo = "armagetronad";
|
||||
inherit rev;
|
||||
sha256 = "UDbe7DiMLzNFAs4C6BbnmdEjqSltSbnk/uQfNOLGAfo=";
|
||||
};
|
||||
extraBuildInputs = latestCommonBuildInputs;
|
||||
extraNativeBuildInputs = [ python3 ];
|
||||
src = fetchArmagetron rev hash;
|
||||
extraBuildInputs = lib.optionals (!dedicatedServer) [ libpng SDL SDL_image SDL_mixer ];
|
||||
};
|
||||
};
|
||||
|
||||
mkArmagetron = { version, src, dedicatedServer ? false, extraBuildInputs ? [ ], extraNativeBuildInputs ? [ ] }@params:
|
||||
# Creates an Armagetron build. Takes a function returning build inputs for a particular value of dedicatedServer.
|
||||
mkArmagetron = fn: dedicatedServer:
|
||||
let
|
||||
# Compute the build params.
|
||||
resolvedParams = fn dedicatedServer;
|
||||
|
||||
# Figure out the binary name depending on whether this is a dedicated server.
|
||||
mainProgram = if dedicatedServer then "armagetronad-dedicated" else "armagetronad";
|
||||
|
||||
# Split the version into the major and minor parts
|
||||
versionParts = lib.splitString "-" version;
|
||||
versionParts = lib.splitString "-" resolvedParams.version;
|
||||
splitVersion = lib.splitVersion (builtins.elemAt versionParts 0);
|
||||
majorVersion = builtins.concatStringsSep "." (lib.lists.take 2 splitVersion);
|
||||
|
||||
|
@ -93,9 +97,9 @@ let
|
|||
|
||||
minorVersion = (minorVersionPart splitVersion "." 2) + (minorVersionPart versionParts "-" 1) + "-nixpkgs";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = if dedicatedServer then "armagetronad-dedicated" else "armagetronad";
|
||||
inherit version src;
|
||||
stdenv.mkDerivation {
|
||||
pname = mainProgram;
|
||||
inherit (resolvedParams) version src;
|
||||
|
||||
# Build works fine; install has a race.
|
||||
enableParallelBuilding = true;
|
||||
|
@ -124,10 +128,11 @@ let
|
|||
] ++ lib.optional dedicatedServer "--enable-dedicated"
|
||||
++ lib.optional (!dedicatedServer) "--enable-music";
|
||||
|
||||
buildInputs = [ libxml2 ] ++ extraBuildInputs;
|
||||
buildInputs = [ libxml2 ]
|
||||
++ (resolvedParams.extraBuildInputs or []);
|
||||
|
||||
nativeBuildInputs = [ autoconf automake gnum4 pkg-config which python3 ]
|
||||
++ extraNativeBuildInputs;
|
||||
++ (resolvedParams.extraNativeBuildInputs or []);
|
||||
|
||||
postInstall = lib.optionalString (!dedicatedServer) ''
|
||||
mkdir -p $out/share/{applications,icons/hicolor}
|
||||
|
@ -139,7 +144,7 @@ let
|
|||
|
||||
installCheckPhase = ''
|
||||
export XDG_RUNTIME_DIR=/tmp
|
||||
bin="$out/bin/${pname}"
|
||||
bin="$out/bin/${mainProgram}"
|
||||
version="$("$bin" --version || true)"
|
||||
prefix="$("$bin" --prefix || true)"
|
||||
rubber="$("$bin" --doc | grep -m1 CYCLE_RUBBER)"
|
||||
|
@ -148,7 +153,7 @@ let
|
|||
echo "Prefix: $prefix" >&2
|
||||
echo "Docstring: $rubber" >&2
|
||||
|
||||
if [[ "$version" != *"${version}"* ]] || \
|
||||
if [[ "$version" != *"${resolvedParams.version}"* ]] || \
|
||||
[ "$prefix" != "$out" ] || \
|
||||
[[ ! "$rubber" =~ ^CYCLE_RUBBER[[:space:]]+Niceness[[:space:]]factor ]]; then
|
||||
exit 1
|
||||
|
@ -160,21 +165,23 @@ let
|
|||
# No passthru, end of the line.
|
||||
# https://www.youtube.com/watch?v=NOMa56y_Was
|
||||
}
|
||||
else if (version != srcs.${latestVersionMajor}.version) then {
|
||||
else if (resolvedParams.version != (srcs.${latestVersionMajor} dedicatedServer).version) then {
|
||||
# Allow a "dedicated" passthru for versions other than the default.
|
||||
dedicated = mkArmagetron (params // {
|
||||
dedicatedServer = true;
|
||||
});
|
||||
dedicated = mkArmagetron fn true;
|
||||
}
|
||||
else (lib.mapAttrs (name: value: mkArmagetron value) (lib.filterAttrs (name: value: value.version != srcs.${latestVersionMajor}.version) srcs)) // {
|
||||
else
|
||||
(
|
||||
lib.mapAttrs (name: value: mkArmagetron value dedicatedServer)
|
||||
(lib.filterAttrs (name: value: (value dedicatedServer).version != (srcs.${latestVersionMajor} dedicatedServer).version) srcs)
|
||||
) //
|
||||
{
|
||||
# Allow both a "dedicated" passthru and a passthru for all the options other than the latest version, which this is.
|
||||
dedicated = mkArmagetron (params // {
|
||||
dedicatedServer = true;
|
||||
});
|
||||
dedicated = mkArmagetron fn true;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://armagetronad.org";
|
||||
inherit mainProgram;
|
||||
homepage = "https://www.armagetronad.org";
|
||||
description = "A multiplayer networked arcade racing game in 3D similar to Tron";
|
||||
mainProgram = "armagetronad-dedicated";
|
||||
maintainers = with maintainers; [ numinit ];
|
||||
|
@ -183,4 +190,4 @@ let
|
|||
};
|
||||
};
|
||||
in
|
||||
mkArmagetron (srcs.${latestVersionMajor} // { inherit dedicatedServer; })
|
||||
mkArmagetron srcs.${latestVersionMajor} dedicatedServer
|
||||
|
|
Loading…
Reference in a new issue