mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-13 06:36:37 -05:00
gnu: wesnoth: Update to 1.14.0.
* gnu/packages/patches/wesnoth-fix-std-bad-cast.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/games.scm (wesnoth): Update to 1.14.0. [source]: Add wesnoth-fix-std-bad-cast.patch to patches. [arguments]: Remove "-DENABLE_STRICT_COMPILATION=OFF" configure flag. [inputs]: Remove sdl-image, sdl-mixer, sdl-net and sdl-ttf. Add openssl and sdl-union of sdl2, sdl2-image, sdl2-mixer and sdl2-ttf. [home-page]: Use HTTPS URI. (wesnoth-server)[inputs]: Remove sdl-net. Add icu4c, openssl and sdl2. [arguments]: Remove delete-data phase. Since wesnoth 1.14.0, configure flag "-DENABLE_GAME=OFF" disables installation of game assets.
This commit is contained in:
parent
9b557beab9
commit
e554d43dfc
3 changed files with 80 additions and 27 deletions
|
@ -1158,6 +1158,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/wavpack-CVE-2018-7253.patch \
|
||||
%D%/packages/patches/wavpack-CVE-2018-7254.patch \
|
||||
%D%/packages/patches/weechat-python.patch \
|
||||
%D%/packages/patches/wesnoth-fix-std-bad-cast.patch \
|
||||
%D%/packages/patches/wicd-bitrate-none-fix.patch \
|
||||
%D%/packages/patches/wicd-get-selected-profile-fix.patch \
|
||||
%D%/packages/patches/wicd-urwid-1.3.patch \
|
||||
|
|
|
@ -1809,7 +1809,7 @@ (define-public gnujump
|
|||
(define-public wesnoth
|
||||
(package
|
||||
(name "wesnoth")
|
||||
(version "1.12.6")
|
||||
(version "1.14.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
|
||||
|
@ -1818,17 +1818,11 @@ (define-public wesnoth
|
|||
name "-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0kifp6g1dsr16m6ngjq2hx19h851fqg326ps3krnhpyix963h3x5"))))
|
||||
"09niq53y17faizhmd98anx3dha7hvacvj9a0a64lg8wn915cm0bw"))
|
||||
(patches (search-patches "wesnoth-fix-std-bad-cast.patch"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f ; no check target
|
||||
#:configure-flags
|
||||
;; XXX: Failed to compile with '-Werror=old-style-cast'.
|
||||
;; boost/mpl/assert.hpp:313:58: error:
|
||||
;; use of old-style cast [-Werror=old-style-cast]
|
||||
;; [...]
|
||||
;; cc1plus: all warnings being treated as errors
|
||||
'("-DENABLE_STRICT_COMPILATION=OFF")))
|
||||
`(#:tests? #f)) ; no check target
|
||||
(native-inputs
|
||||
`(("gettext" ,gettext-minimal)
|
||||
("pkg-config" ,pkg-config)))
|
||||
|
@ -1837,12 +1831,10 @@ (define-public wesnoth
|
|||
("dbus" ,dbus)
|
||||
("fribidi" ,fribidi)
|
||||
("libvorbis" ,libvorbis)
|
||||
("openssl" ,openssl)
|
||||
("pango" ,pango)
|
||||
("sdl-image" ,sdl-image)
|
||||
("sdl-mixer" ,sdl-mixer)
|
||||
("sdl-net" ,sdl-net)
|
||||
("sdl-ttf" ,sdl-ttf)))
|
||||
(home-page "http://www.wesnoth.org/")
|
||||
("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
|
||||
(home-page "https://www.wesnoth.org/")
|
||||
(synopsis "Turn-based strategy game")
|
||||
(description
|
||||
"The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
|
||||
|
@ -1861,19 +1853,12 @@ (define-public wesnoth-server
|
|||
(name "wesnoth-server")
|
||||
(inputs
|
||||
`(("boost" ,boost)
|
||||
("sdl-net" ,sdl-net)))
|
||||
("icu4c" ,icu4c)
|
||||
("openssl" ,openssl)
|
||||
("sdl2" ,sdl2)))
|
||||
(arguments
|
||||
(append
|
||||
(substitute-keyword-arguments (package-arguments wesnoth)
|
||||
((#:configure-flags configure-flags)
|
||||
`(append ,configure-flags (list "-DENABLE_GAME=OFF"))))
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; Delete game assets not required by the server.
|
||||
(add-after 'install 'delete-data
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(delete-file-recursively (string-append (assoc-ref outputs "out")
|
||||
"/share/wesnoth"))))))))
|
||||
`(#:configure-flags '("-DENABLE_GAME=OFF")
|
||||
,@(package-arguments wesnoth)))
|
||||
(synopsis "Dedicated @emph{Battle for Wesnoth} server")
|
||||
(description "This package contains a dedicated server for @emph{The
|
||||
Battle for Wesnoth}.")))
|
||||
|
|
67
gnu/packages/patches/wesnoth-fix-std-bad-cast.patch
Normal file
67
gnu/packages/patches/wesnoth-fix-std-bad-cast.patch
Normal file
|
@ -0,0 +1,67 @@
|
|||
From 18e5ea50a7136cb3686c5a7c51c111ccce73dc54 Mon Sep 17 00:00:00 2001
|
||||
From: Iris Morelle <shadowm@wesnoth.org>
|
||||
Date: Sun, 6 May 2018 16:10:42 -0300
|
||||
Subject: [PATCH] i18n: Blind fix attempt for std::bad_cast being thrown on
|
||||
Windows
|
||||
|
||||
Several reports on Steam and our forums point at std::bad_cast being
|
||||
thrown when accessing Preferences and the Multiplayer menu amongst
|
||||
others. It's possible that the locale configuration on those systems is
|
||||
not quite right, and compare() and icompare() are able to throw
|
||||
std::bad_cast when this happens as they both use std::use_facet().
|
||||
|
||||
Note that much like the macOS/iOS version of icompare(), this stopgap
|
||||
patch doesn't attempt to provide any form of case-insensitive fallback
|
||||
and just uses a case-sensitive comparison instead.
|
||||
---
|
||||
src/gettext_boost.cpp | 29 +++++++++++++++++++++++++++--
|
||||
1 file changed, 27 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/gettext_boost.cpp b/src/gettext_boost.cpp
|
||||
index 3cc7690d5ef..fb04ffeea90 100644
|
||||
--- a/src/gettext_boost.cpp
|
||||
+++ b/src/gettext_boost.cpp
|
||||
@@ -423,7 +423,19 @@ void set_language(const std::string& language, const std::vector<std::string>* /
|
||||
int compare(const std::string& s1, const std::string& s2)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(get_mutex());
|
||||
- return std::use_facet<std::collate<char>>(get_manager().get_locale()).compare(s1.c_str(), s1.c_str() + s1.size(), s2.c_str(), s2.c_str() + s2.size());
|
||||
+
|
||||
+ try {
|
||||
+ return std::use_facet<std::collate<char>>(get_manager().get_locale()).compare(s1.c_str(), s1.c_str() + s1.size(), s2.c_str(), s2.c_str() + s2.size());
|
||||
+ } catch(const std::bad_cast&) {
|
||||
+ static bool bad_cast_once = false;
|
||||
+
|
||||
+ if(!bad_cast_once) {
|
||||
+ ERR_G << "locale set-up for compare() is broken, falling back to std::string::compare()\n";
|
||||
+ bad_cast_once = true;
|
||||
+ }
|
||||
+
|
||||
+ return s1.compare(s2);
|
||||
+ }
|
||||
}
|
||||
|
||||
int icompare(const std::string& s1, const std::string& s2)
|
||||
@@ -433,8 +445,21 @@ int icompare(const std::string& s1, const std::string& s2)
|
||||
return compare(s1, s2);
|
||||
#else
|
||||
std::lock_guard<std::mutex> lock(get_mutex());
|
||||
- return std::use_facet<bl::collator<char>>(get_manager().get_locale()).compare(
|
||||
+
|
||||
+ try {
|
||||
+ return std::use_facet<bl::collator<char>>(get_manager().get_locale()).compare(
|
||||
bl::collator_base::secondary, s1, s2);
|
||||
+ } catch(const std::bad_cast&) {
|
||||
+ static bool bad_cast_once = false;
|
||||
+
|
||||
+ if(!bad_cast_once) {
|
||||
+ ERR_G << "locale set-up for icompare() is broken, falling back to std::string::compare()\n";
|
||||
+ bad_cast_once = true;
|
||||
+ }
|
||||
+
|
||||
+ // FIXME: not even lazily case-insensitive
|
||||
+ return s1.compare(s2);
|
||||
+ }
|
||||
#endif
|
||||
}
|
||||
|
Loading…
Reference in a new issue