openra: 20181215 -> 20190314 + updated other engine releases and mods

+54 -48
+2 -5
pkgs/games/openra/common.nix
··· 3 3 */ 4 4 { stdenv, makeSetupHook, curl, unzip, dos2unix, pkgconfig, makeWrapper 5 5 , lua, mono, dotnetPackages, python 6 - , libGL, openal, SDL2 6 + , libGL, freetype, openal, SDL2 7 7 , zenity 8 8 }: 9 9 ··· 11 11 12 12 let 13 13 path = makeBinPath ([ mono python ] ++ optional (zenity != null) zenity); 14 - rpath = makeLibraryPath [ lua openal SDL2 ]; 14 + rpath = makeLibraryPath [ lua freetype openal SDL2 ]; 15 15 mkdirp = makeSetupHook { } ./mkdirp.sh; 16 16 17 17 in { ··· 54 54 StyleCopMSBuild 55 55 StyleCopPlusMSBuild 56 56 ] ++ [ 57 - lua 58 57 libGL 59 - openal 60 - SDL2 61 58 ]; 62 59 63 60 # TODO: Test if this is correct.
+7 -7
pkgs/games/openra/engines.nix
··· 22 22 23 23 in { 24 24 release = name: (buildUpstreamOpenRAEngine rec { 25 - version = "20181215"; 25 + version = "20190314"; 26 26 rev = "${name}-${version}"; 27 - sha256 = "0p0izykjnz7pz02g2khp7msqa00jhjsrzk9y0g29dirmdv75qa4r"; 27 + sha256 = "15pvn5cx3g0nzbrgpsfz8dngad5wkzp5dz25ydzn8bmxafiijvcr"; 28 28 } name); 29 29 30 30 playtest = name: (buildUpstreamOpenRAEngine rec { 31 - version = "20190106"; 31 + version = "20190302"; 32 32 rev = "${name}-${version}"; 33 - sha256 = "0ps9x379plrrj1hnj4fpr26lc46mzgxknv5imxi0bmrh5y4781ql"; 33 + sha256 = "1vqvfk2p2lpk3m0d3rpvj34i8cmk3mfc7w4cn4llqd9zp4kk9pya"; 34 34 } name); 35 35 36 36 bleed = buildUpstreamOpenRAEngine { 37 - version = "9c9cad1"; 38 - rev = "9c9cad1a15c3a34dc2a61b305e4a9a735381a5f8"; 39 - sha256 = "0100p7wrnnlvkmy581m0gbyg3cvi4i1w3lzx2gq91ndz1sbm8nd2"; 37 + version = "8ee1102"; 38 + rev = "8ee11028d72cde7556b31d45f556b40be65b4b70"; 39 + sha256 = "19fjzwgmfdf832c6b1x885kaiyck03kpiba0qpsxvps04i7b3vj4"; 40 40 }; 41 41 }
+3 -3
pkgs/games/openra/mod-launch-game.sh
··· 1 - #!/bin/sh 1 + #!/usr/bin/env bash 2 2 show_error() { 3 3 if command -v zenity > /dev/null; then 4 4 zenity --no-wrap --no-markup --error --title "OpenRA - @title@" --text "$1" 2>/dev/null ··· 12 12 13 13 # Check for missing assets 14 14 assetsError='@assetsError@' 15 - if [ -n "$assetsError" -a ! -d "$HOME/.openra/Content/@name@" ]; then 15 + if [[ -n "$assetsError" && ! -d "$HOME/.openra/Content/@name@" ]]; then 16 16 show_error "$assetsError" 17 17 fi 18 18 ··· 20 20 mono --debug OpenRA.Game.exe Game.Mod=@name@ Engine.LaunchPath="@out@/bin/openra-@name@" Engine.ModSearchPaths="@out@/lib/openra-@name@/mods" "$@" 21 21 22 22 # Show a crash dialog if something went wrong 23 - if [ $? -ne 0 -a $? -ne 1 ]; then 23 + if (( $? != 0 && $? != 1 )); then 24 24 show_error $'OpenRA - @title@ has encountered a fatal error.\nPlease refer to the crash logs for more information.\n\nLog files are located in ~/.openra/Logs' 25 25 fi
+18 -9
pkgs/games/openra/mod-update.sh
··· 1 1 #!/usr/bin/env bash 2 + # shellcheck disable=SC2034 2 3 3 4 # for mod in $(nix eval --raw '( 4 5 # with import <nixpkgs> { }; ··· 9 10 # ./mod-update.sh "$mod" 10 11 # done 11 12 12 - # Uses: 13 - # https://github.com/msteen/nix-prefetch 14 - # https://github.com/msteen/nix-update-fetch 13 + # Uses: https://github.com/msteen/nix-upfetch 15 14 16 15 mod=$1 17 16 commit_count=$2 ··· 19 18 nixpkgs='<nixpkgs>' 20 19 21 20 die() { 22 - ret=$? 21 + local ret=$? 23 22 echo "$*" >&2 24 23 exit $ret 25 24 } ··· 34 33 curl -H "Authorization: token $token" -H 'Accept: application/vnd.github.VERSION.sha' "https://api.github.com/repos/$owner/$repo/commits/$ref" 35 34 } 36 35 36 + [[ -n $mod ]] || die "The first argument of this script has to be a mod identifier." 37 + 37 38 [[ -n $token ]] || die "Please edit this script to include a GitHub API access token, which is required for API v4: 38 39 https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/" 39 40 40 41 # Get current mod_owner and mod_repo. 41 - vars=$(nix-prefetch --file "$nixpkgs" "openraPackages.mods.$mod" --index 0 --quiet --output json --skip-hash > >( 42 + vars=$(nix-prefetch --file "$nixpkgs" "openraPackages.mods.$mod" --index 0 --quiet --output json --no-compute-hash > >( 42 43 jq --raw-output 'with_entries(select(.value | contains("\n") | not)) | to_entries | .[] | .key + "=" + .value')) || exit 43 44 45 + mod_owner=; mod_repo=; mod_rev= 44 46 while IFS='=' read -r key val; do 45 47 declare "mod_${key}=${val}" 46 48 done <<< "$vars" ··· 65 67 }' 66 68 fi 67 69 68 - query='query { 69 - repository(owner: \"'"$mod_owner"'\", name: \"'"$mod_repo"'\") { 70 + # shellcheck disable=SC2089 71 + query='{ 72 + repository(owner: "'$mod_owner'", name: "'$mod_repo'") { 70 73 defaultBranchRef { 71 74 target { 72 - ... on Commit '"$query_on_commit"' 75 + ... on Commit '$query_on_commit' 73 76 } 74 77 } 75 78 licenseInfo { ··· 80 83 81 84 # Newlines are not allowed in a query. 82 85 # https://developer.github.com/v4/guides/forming-calls/#communicating-with-graphql 86 + # shellcheck disable=SC2086 disable=SC2090 disable=SC2116 83 87 query=$(echo $query) 88 + query=${query//\"/\\\"} 84 89 85 90 # https://developer.github.com/v4/guides/using-the-explorer/#configuring-graphiql 86 91 json=$(curl -H "Authorization: bearer $token" -X POST -d '{ "query": "'"$query"'" }' https://api.github.com/graphql) || exit ··· 99 104 rev: .oid, 100 105 }) | to_entries | .[] | .key + "=" + (.value | tostring)' <<< "$json") || exit 101 106 107 + mod_license_key=; mod_version=; mod_rev= 102 108 while IFS='=' read -r key val; do 103 109 declare "mod_${key}=${val}" 104 110 done <<< "$vars" 105 111 106 112 mod_config=$(curl "https://raw.githubusercontent.com/$mod_owner/$mod_repo/$mod_rev/mod.config") || exit 107 113 114 + mod_id=; engine_version=; automatic_engine_management=; automatic_engine_source= 108 115 while IFS='=' read -r key val; do 109 116 declare "${key,,}=$(jq --raw-output . <<< "$val")" 110 117 done < <(grep '^\(MOD_ID\|ENGINE_VERSION\|AUTOMATIC_ENGINE_MANAGEMENT\|AUTOMATIC_ENGINE_SOURCE\)=' <<< "$mod_config") ··· 116 123 117 124 [[ $mod_id == "$mod" ]] || 118 125 die "The mod '$mod' reports being mod '$mod_id' instead." 126 + # shellcheck disable=SC2005 disable=SC2046 119 127 [[ $mod_license_key == gpl-3.0 ]] || 120 128 [[ $(echo $(head -2 <(curl "https://raw.githubusercontent.com/$mod_owner/$mod_repo/$mod_rev/COPYING"))) == 'GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007' ]] || 121 129 die "The mod '$mod' is licensed under '$mod_license_key' while expecting 'gpl-3.0'." ··· 126 134 127 135 engine_owner=${BASH_REMATCH[1]} 128 136 engine_repo=${BASH_REMATCH[2]} 137 + # shellcheck disable=SC2016 129 138 [[ ${BASH_REMATCH[3]} == '${ENGINE_VERSION}' ]] || engine_version=${BASH_REMATCH[3]} 130 139 engine_rev=$(get_sha1 "$engine_owner" "$engine_repo" "$engine_version") 131 140 ··· 146 155 done 147 156 var="${type}_version" 148 157 version=${!var} 149 - nix-update-fetch --yes --version "$version" "$(nix-prefetch --quiet --file "$nixpkgs" "openraPackages.mods.$mod" --index $i --output json --with-position --diff -- "${fetcher_args[@]}")" 158 + nix-upfetch --yes --version "$version" "$(nix-preupfetch --file "$nixpkgs" "openraPackages.mods.$mod" --index $i -- "${fetcher_args[@]}")" 150 159 (( i++ )) 151 160 done
+24 -24
pkgs/games/openra/mods.nix
··· 60 60 }; 61 61 62 62 dr = buildOpenRAMod rec { 63 - version = "266.git.920b476"; 63 + version = "324.git.ffcd6ba"; 64 64 title = "Dark Reign"; 65 65 description = "A re-imagination of the original Command & Conquer: ${title} game"; 66 66 homepage = https://github.com/drogoganor/DarkReign; 67 67 src = fetchFromGitHub { 68 68 owner = "drogoganor"; 69 69 repo = "DarkReign"; 70 - rev = "920b476be1b7751db087f1f7acd504b8a048d1e2"; 71 - sha256 = "11ir4pnichrnv4z9532fp9g166jl8fvy5kk03a2fgxssp3g40zz2"; 70 + rev = "ffcd6ba72979e5f77508136ed7b0efc13e4b100e"; 71 + sha256 = "07g4qw909649s3i1yhw75613mpwfka05jana5mpp5smhnf0pkack"; 72 72 }; 73 73 engine = { 74 74 version = "DarkReign"; 75 75 src = fetchFromGitHub { 76 76 owner = "drogoganor"; 77 77 repo = "OpenRA" ; 78 - rev = "e08b75c2add30439228ea3dd61d6be60d1800329"; 79 - sha256 = "125vf962p69ajrh5pxgfwsi0ksczqwvlw5kn2fvffiwvh8d5in23"; 78 + rev = "f91d3f2603bbf51afaa89357e4defcdc36138102"; 79 + sha256 = "05g900ri6q0zrkrk8rmjaz576vjggmi2y6jm0xz3cwli54prn11w"; 80 80 name = "engine"; 81 81 inherit extraPostFetch; 82 82 }; ··· 161 161 }; 162 162 163 163 ra2 = buildOpenRAMod rec { 164 - version = "881.git.b37f4f9"; 164 + version = "903.git.2f7c700"; 165 165 title = "Red Alert 2"; 166 166 description = "Re-imagination of the original Command & Conquer: ${title} game"; 167 167 homepage = https://github.com/OpenRA/ra2; 168 168 src = fetchFromGitHub { 169 169 owner = "OpenRA"; 170 170 repo = "ra2"; 171 - rev = "b37f4f9f07404127062d9061966e9cc89dd86445"; 172 - sha256 = "1jiww66ma3qdk9hzyvhbcaa5h4p2mxxk22kvrw92ckpxy0bqba3h"; 171 + rev = "2f7c700d6d63c0625e7158ef3098221fa6741569"; 172 + sha256 = "11vnzwczn47wjfrq6y7z9q234p27ihdrcl5p87i6h2xnrpwi8b6m"; 173 173 }; 174 174 engine = rec { 175 175 version = "release-20180923"; ··· 189 189 }; 190 190 191 191 raclassic = buildOpenRAMod { 192 - version = "181.git.8240890"; 192 + version = "183.git.c76c13e"; 193 193 title = "Red Alert Classic"; 194 194 description = "A modernization of the original Command & Conquer: Red Alert game"; 195 195 homepage = https://github.com/OpenRA/raclassic; 196 196 src = fetchFromGitHub { 197 197 owner = "OpenRA"; 198 198 repo = "raclassic"; 199 - rev = "8240890b32191ce34241c22158b8a79e8c380879"; 200 - sha256 = "0dznyb6qa4n3ab87g1c4bihfc2nx53k6z0kajc7ynjdnwzvx69ww"; 199 + rev = "c76c13e9f0912a66ddebae8d05573632b19736b2"; 200 + sha256 = "1cnr3ccvrkjlv8kkdcglcfh133yy0fkva9agwgvc7wlj9n5ydl4g"; 201 201 }; 202 202 engine = rec { 203 - version = "playtest-20190106"; 203 + version = "release-20190314"; 204 204 src = fetchFromGitHub { 205 205 owner = "OpenRA"; 206 206 repo = "OpenRA" ; 207 207 rev = version; 208 - sha256 = "0ps9x379plrrj1hnj4fpr26lc46mzgxknv5imxi0bmrh5y4781ql"; 208 + sha256 = "15pvn5cx3g0nzbrgpsfz8dngad5wkzp5dz25ydzn8bmxafiijvcr"; 209 209 name = "engine"; 210 210 inherit extraPostFetch; 211 211 }; ··· 242 242 }; 243 243 244 244 sp = unsafeBuildOpenRAMod { 245 - version = "176.git.fc89ae8"; 245 + version = "221.git.ac000cc"; 246 246 title = "Shattered Paradise"; 247 247 description = "Re-imagination of the original Command & Conquer: Tiberian Sun game"; 248 248 homepage = https://github.com/ABrandau/OpenRAModSDK; 249 249 src = fetchFromGitHub { 250 250 owner = "ABrandau"; 251 251 repo = "OpenRAModSDK"; 252 - rev = "fc89ae8a10e0f765ac735f923e01aa24dd20e8d2"; 253 - sha256 = "0xyxhipmjlld0kp23fwsdwnspr7fci0mdnjd60gcsh34c7m0341p"; 252 + rev = "ac000cc15377cdf6d3c2b72c737d692aa0ed8bcd"; 253 + sha256 = "16mzs5wcxj9nlpcyx2c87idsqpbm40lx0rznsccclnlb3hiwqas9"; 254 254 }; 255 255 engine = { 256 - version = "SP-Bleed-Branch"; 256 + version = "SP-22-04-19"; 257 257 mods = [ "as" "ts" ]; 258 258 src = fetchFromGitHub { 259 259 owner = "ABrandau"; 260 260 repo = "OpenRA" ; 261 - rev = "d3545c0b751aea2105748eddaab5919313e35314"; 262 - sha256 = "1jsldl6vnf3r9dzppdm4z7kqbrzkidda5k74wc809i8c4jjnq9rq"; 261 + rev = "bb0930008a57c07f3002421023f6b446e3e3af69"; 262 + sha256 = "1jvgpbf56hd02ikhklv49br4d1jiv5hphc5kl79qnjlaacnj222x"; 263 263 name = "engine"; 264 264 inherit extraPostFetch; 265 265 }; ··· 315 315 }; 316 316 317 317 yr = unsafeBuildOpenRAMod rec { 318 - version = "118.git.c26bf14"; 318 + version = "199.git.5b8b952"; 319 319 homepage = https://github.com/cookgreen/yr; 320 320 title = "Yuri's Revenge"; 321 321 description = "Re-imagination of the original Command & Conquer: ${title} game"; 322 322 src = fetchFromGitHub { 323 323 owner = "cookgreen"; 324 324 repo = "yr"; 325 - rev = "c26bf14155d040edf33c6c5eb3677517d07b39f8"; 326 - sha256 = "15k6gv4rx3490n0cs9q7ah7q31z89v0pddsw6nqv0fhcahhvq1bc"; 325 + rev = "5b8b952dbe21f194a6d00485f20e215ce8362712"; 326 + sha256 = "0hxzrqnz5d7qj1jjr20imiyih62x1cnmndf75nnil4c4sj82f9a6"; 327 327 }; 328 328 engine = rec { 329 - version = "release-20180923"; 329 + version = "release-20190314"; 330 330 src = fetchFromGitHub { 331 331 owner = "OpenRA"; 332 332 repo = "OpenRA" ; 333 333 rev = version; 334 - sha256 = "1pgi3zaq9fwwdq6yh19bwxscslqgabjxkvl9bcn1a5agy4bfbqk5"; 334 + sha256 = "15pvn5cx3g0nzbrgpsfz8dngad5wkzp5dz25ydzn8bmxafiijvcr"; 335 335 name = "engine"; 336 336 inherit extraPostFetch; 337 337 };