diff options
-rw-r--r-- | .SRCINFO | 36 | ||||
-rw-r--r-- | PKGBUILD | 62 | ||||
-rw-r--r-- | boost1_60.patch | 23 | ||||
-rw-r--r-- | boost1_600tests.patch | 174 | ||||
-rw-r--r-- | patch_gcc6.patch | 28 | ||||
-rw-r--r-- | scons_patch.diff | 15 | ||||
-rw-r--r-- | wesnoth-devel.appdata.xml | 4 |
7 files changed, 70 insertions, 272 deletions
@@ -1,11 +1,16 @@ pkgbase = wesnoth-devel pkgdesc = development version of a turn-based strategy game on a fantasy world - pkgver = 1.15.2 - pkgrel = 2 + pkgver = 1.17.26 + pkgrel = 1 url = https://www.wesnoth.org/ install = wesnoth-devel.install + arch = i486 arch = i686 + arch = pentium4 arch = x86_64 + arch = armv6h + arch = armv7h + arch = aarch64 license = GPL checkdepends = desktop-file-utils checkdepends = appstream-glib @@ -15,25 +20,19 @@ pkgbase = wesnoth-devel depends = sdl2 depends = sdl2_image depends = sdl2_mixer - depends = sdl2_ttf depends = pango - depends = fribidi - depends = lua depends = dbus depends = openssl depends = boost-libs - depends = desktop-file-utils optdepends = python: some tools for UMC developers - optdepends = python2: some tools for UMC developers optdepends = tk: for GUI.pyw, a gui for some of these tools optdepends = gettext: for creating translation files with wmlxgettext optdepends = python-pyenchant: spellchecking with wmllint optdepends = optipng: png optimization with wesnoth-optipng / woptipng optdepends = advancecomp: png optimization with wesnoth-optipng / woptipng optdepends = imagemagick: png optimization with wesnoth-optipng / woptipng - optdepends = libpng: png screenshots options = !emptydirs - source = https://downloads.sourceforge.net/sourceforge/wesnoth/wesnoth-1.15.2.tar.bz2 + source = https://downloads.sourceforge.net/sourceforge/wesnoth/wesnoth-1.17.26.tar.bz2 source = wesnoth-devel.desktop source = wesnoth_editor-devel.desktop source = wesnoth-devel-icon.png @@ -41,14 +40,15 @@ pkgbase = wesnoth-devel source = wesnothd-devel.tmpfiles.conf source = wesnothd-devel.service source = wesnoth-devel.appdata.xml - md5sums = 4d316a1ecb622e0ef8c7410448d8a3d0 - md5sums = 719df848ebda176f995051ef9da302c6 - md5sums = 049a22a72074277e53484e3a530d1d69 - md5sums = 251f487241afda73c048b4fb654ceda7 - md5sums = c5dc8ed0f8ece0b3990bfe367097509c - md5sums = d9d4677b083eab179200e34c6dea8899 - md5sums = 93f1afc41c66eb324a45ca26055f1507 - md5sums = eb0e7466413cd0cdf5ed535146e87f87 + source = scons_patch.diff + sha256sums = 1d8edb7909d0723adfa9fb87aad0dab0ccef50f0e57281e97f6b6ee887796aa7 + sha256sums = 3631b4c1eda6c2099e43272f2a26a8a3e897b9541a395ebeb9a1b8b3753a647d + sha256sums = 196cd09c73c6503b9caef7c47bb61d0243c10e9b15daa6b3aff437f7ad03448a + sha256sums = 98fbd8bafff165c45d0a1eb23a500108e4ce7c8ed32b9abc9bf1c3179e1d3491 + sha256sums = ac69c89e3438d8fd327b5fba013d8eafec61060c5938a3c3baaadb6d85678998 + sha256sums = 534097c1d5fcc6b8b54ae04535ed249f8a8f4b000fab39a87a073f54ab89349a + sha256sums = bbfd14d4c445ca8696ecca8493862d3dd77566b973eb65157f93bd818d161972 + sha256sums = 8889c59edd31d2f3d51e2a866034d0515ec0eda5d7cc67743251efaa16d06228 + sha256sums = 07f126d749cfec0a0e9a2fee98f14bd4fd968face2e0d00b64e6db3e5c6a7db5 pkgname = wesnoth-devel - @@ -1,28 +1,34 @@ -#Contributor:Andrea Tarocchi <valdar@email.it> -#Maintainer: Andrea Tarocchi <valdar@email.it> +#Contributor:Andrea Tarocchi <valdar9@protonmail.com> +#Maintainer: Andrea Tarocchi <valdar9@protonmail.com> pkgname=wesnoth-devel -pkgver=1.15.2 -pkgrel=2 +#XXX: when changing major version (i.e. 1.17 to 1.1X) remeber to updated the occurences in build() and package() +pkgver=1.17.26 +pkgrel=1 pkgdesc="development version of a turn-based strategy game on a fantasy world" -arch=('i686' 'x86_64') +arch=('i486' 'i686' 'pentium4' 'x86_64' 'armv6h' 'armv7h' 'aarch64') url="https://www.wesnoth.org/" license=('GPL') -depends=('sdl2' 'sdl2_image' 'sdl2_mixer' 'sdl2_ttf' 'pango' 'fribidi' 'lua' 'dbus' 'openssl' 'boost-libs' 'desktop-file-utils') +depends=('sdl2' + 'sdl2_image' + 'sdl2_mixer' + 'pango' + 'dbus' + 'openssl' + 'boost-libs') optdepends=('python: some tools for UMC developers' - 'python2: some tools for UMC developers' 'tk: for GUI.pyw, a gui for some of these tools' 'gettext: for creating translation files with wmlxgettext' 'python-pyenchant: spellchecking with wmllint' 'optipng: png optimization with wesnoth-optipng / woptipng' 'advancecomp: png optimization with wesnoth-optipng / woptipng' - 'imagemagick: png optimization with wesnoth-optipng / woptipng' - 'libpng: png screenshots') + 'imagemagick: png optimization with wesnoth-optipng / woptipng') makedepends=('boost' 'scons' 'pkg-config') checkdepends=('desktop-file-utils' 'appstream-glib') install=${pkgname}.install options=('!emptydirs') #options=('!emptydirs' '!strip') #use this when building with debugging symbols + source=("https://downloads.sourceforge.net/sourceforge/wesnoth/wesnoth-$pkgver.tar.bz2" "${pkgname}.desktop" "wesnoth_editor-devel.desktop" @@ -30,18 +36,18 @@ source=("https://downloads.sourceforge.net/sourceforge/wesnoth/wesnoth-$pkgver.t "${pkgname}_editor-icon.png" "wesnothd-devel.tmpfiles.conf" "wesnothd-devel.service" - "wesnoth-devel.appdata.xml") - -md5sums=('4d316a1ecb622e0ef8c7410448d8a3d0' - '719df848ebda176f995051ef9da302c6' - '049a22a72074277e53484e3a530d1d69' - '251f487241afda73c048b4fb654ceda7' - 'c5dc8ed0f8ece0b3990bfe367097509c' - 'd9d4677b083eab179200e34c6dea8899' - '93f1afc41c66eb324a45ca26055f1507' - 'eb0e7466413cd0cdf5ed535146e87f87') - -PKGEXT='.pkg.tar' + "wesnoth-devel.appdata.xml" + "scons_patch.diff") + +sha256sums=('1d8edb7909d0723adfa9fb87aad0dab0ccef50f0e57281e97f6b6ee887796aa7' + '3631b4c1eda6c2099e43272f2a26a8a3e897b9541a395ebeb9a1b8b3753a647d' + '196cd09c73c6503b9caef7c47bb61d0243c10e9b15daa6b3aff437f7ad03448a' + '98fbd8bafff165c45d0a1eb23a500108e4ce7c8ed32b9abc9bf1c3179e1d3491' + 'ac69c89e3438d8fd327b5fba013d8eafec61060c5938a3c3baaadb6d85678998' + '534097c1d5fcc6b8b54ae04535ed249f8a8f4b000fab39a87a073f54ab89349a' + 'bbfd14d4c445ca8696ecca8493862d3dd77566b973eb65157f93bd818d161972' + '8889c59edd31d2f3d51e2a866034d0515ec0eda5d7cc67743251efaa16d06228' + '07f126d749cfec0a0e9a2fee98f14bd4fd968face2e0d00b64e6db3e5c6a7db5') prepare() { cd "$srcdir/wesnoth-$pkgver" @@ -50,7 +56,8 @@ prepare() { #diff -rupN src/ src_new/ > patch_name.patch #How to apply a patch - #patch -p1 < ../../sdlmixer_2.0.2.patch + #patch -p1 < ../../patch_name.patch + #patch -p1 < ../../scons_patch.diff } check() { @@ -63,8 +70,9 @@ build() { cd "$srcdir/wesnoth-$pkgver" #the option build=debug can be useful if the game crashes and you would like to report a bug - scons jobs=4 desktop_entry=False prefix=/usr version_suffix=-devel prefsdir=.wesnoth-devel \ + scons jobs=4 desktop_entry=False prefix=/usr version_suffix=-devel \ docdir=/usr/share/doc/wesnoth-devel fifodir=/run/wesnothd-devel \ + prefsdir=.local/share/wesnoth/1.17 \ appdata_file=False enable_lto=True wesnoth wesnothd } @@ -76,20 +84,20 @@ package(){ #INSTALLING of menu entry and icons and appstream information: install -D -m644 "$srcdir/wesnoth-devel.desktop" "$pkgdir/usr/share/applications/wesnoth-devel.desktop" - install -D -m644 "$srcdir/wesnoth-devel-icon.png" "$pkgdir/usr/share/pixmaps/$pkgname-icon.png" + install -D -m644 "$srcdir/wesnoth-devel-icon.png" "$pkgdir/usr/share/icons/hicolor/64x64/apps/$pkgname-icon.png" install -D -m644 "$srcdir/wesnoth_editor-devel.desktop" "$pkgdir/usr/share/applications/wesnoth_editor-devel.desktop" - install -D -m644 "$srcdir/wesnoth-devel_editor-icon.png" "$pkgdir/usr/share/pixmaps/${pkgname}_editor-icon.png" + install -D -m644 "$srcdir/wesnoth-devel_editor-icon.png" "$pkgdir/usr/share/icons/hicolor/64x64/apps/${pkgname}_editor-icon.png" install -D -m644 "$srcdir/wesnothd-devel.tmpfiles.conf" "$pkgdir/usr/lib/tmpfiles.d/wesnothd-devel.conf" install -D -m644 "$srcdir/wesnothd-devel.service" "$pkgdir/usr/lib/systemd/system/wesnothd-devel.service" install -D -m644 "$srcdir/wesnoth-devel.appdata.xml" "$pkgdir/usr/share/metainfo/wesnoth-devel.appdata.xml" - # add suffix to manpages (.6 is the file extension) and copy them in the right directory + # add suffix to manpages (IMPORTANT: .6 is the file extension!!!) and copy them in the right directory for filename in "$pkgdir"/usr/share/man/{,*/}man6/wesnoth{,d}.6 do - mv "$filename" $(dirname $filename)/$(basename $filename .6)-"$pkgver" + mv "$filename" $(dirname $filename)/$(basename $filename .6)-1.17.6 done # setting dist file diff --git a/boost1_60.patch b/boost1_60.patch deleted file mode 100644 index e2ff326bce4a..000000000000 --- a/boost1_60.patch +++ /dev/null @@ -1,23 +0,0 @@ -From aa1ea043bbf52d509197eab91ab85c70e633d69e Mon Sep 17 00:00:00 2001 -From: Celtic Minstrel <celtic.minstrel.ca@some.place> -Date: Fri, 25 Dec 2015 08:17:33 -0500 -Subject: [PATCH] Use boost::none instead of boost::none_t() - -Fixes bug 24227 ---- - src/play_controller.hpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/play_controller.hpp b/src/play_controller.hpp -index d5596b6..e289861 100644 ---- a/src/play_controller.hpp -+++ b/src/play_controller.hpp -@@ -137,7 +137,7 @@ class play_controller : public controller_base, public events::observer, public - gamestate().end_level_data_ = data; - } - void reset_end_level_data() { -- gamestate().end_level_data_ = boost::none_t(); -+ gamestate().end_level_data_ = boost::none; - } - bool is_regular_game_end() const { - return gamestate().end_level_data_.get_ptr() != NULL; diff --git a/boost1_600tests.patch b/boost1_600tests.patch deleted file mode 100644 index be744cbd1fc7..000000000000 --- a/boost1_600tests.patch +++ /dev/null @@ -1,174 +0,0 @@ -From ff29581baa74dbc6ce1923e1352f4fd6d423a67d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andreas=20L=C3=B6f?= <andreas@alternating.net> -Date: Mon, 28 Dec 2015 22:58:50 +1300 -Subject: [PATCH] Fix bug #24234: Add Boost 1.60.0 support to unit tests - -The unit test part in boost has changed a few header files and -function signatures between previous versions and 1.60.0. These -changes adds a version check and two different versions of the -affected code, as well as introducing semicolons after the global text -fixtures (which doesn't appear to do harm) but otherwise requires more -version checks. ---- - src/tests/main.cpp | 20 +++++++++++++++++- - src/tests/test_map_location.cpp | 4 ++-- - src/tests/test_mp_connect.cpp | 4 ++-- - src/tests/utils/auto_parameterized.hpp | 38 +++++++++++++++++++++++++++++++--- - 4 files changed, 58 insertions(+), 8 deletions(-) - -diff --git a/src/tests/main.cpp b/src/tests/main.cpp -index fe5ed3f..10551c9 100644 ---- a/src/tests/main.cpp -+++ b/src/tests/main.cpp -@@ -16,11 +16,19 @@ - - - #define BOOST_TEST_MODULE wesnoth unit tests master suite -+ -+#include <boost/version.hpp> -+ - #include <boost/test/unit_test.hpp> - #include <boost/test/unit_test_monitor.hpp> -+#if BOOST_VERSION >= 106000 -+#include <boost/test/unit_test_parameters.hpp> -+#else - #include <boost/test/detail/unit_test_parameters.hpp> -+#endif - #include <boost/test/results_reporter.hpp> - -+ - #include <fstream> - - #include "SDL.h" -@@ -80,6 +88,15 @@ struct wesnoth_global_fixture { - - - // Set more report as default -+#if BOOST_VERSION >= 106000 -+ if (boost::unit_test::runtime_config::get<boost::unit_test::log_level>(boost::unit_test::runtime_config::LOG_LEVEL) == boost::unit_test::invalid_log_level) -+ boost::unit_test::unit_test_log.set_threshold_level( boost::unit_test::log_messages ); -+ if (boost::unit_test::runtime_config::get<boost::unit_test::report_level>(boost::unit_test::runtime_config::REPORT_LEVEL) == boost::unit_test::INV_REPORT_LEVEL) -+ boost::unit_test::results_reporter::set_level(boost::unit_test::SHORT_REPORT); -+ boost::unit_test::unit_test_monitor.register_exception_translator<game::error>(&exception_translator_game); -+ boost::unit_test::unit_test_monitor.register_exception_translator<network::error>(&exception_translator_network); -+ boost::unit_test::unit_test_monitor.register_exception_translator<config::error>(&exception_translator_config); -+#else - if (boost::unit_test::runtime_config::log_level() == boost::unit_test::invalid_log_level) - boost::unit_test::unit_test_log.set_threshold_level( boost::unit_test::log_messages ); - if (boost::unit_test::runtime_config::report_level() == boost::unit_test::INV_REPORT_LEVEL) -@@ -87,6 +104,7 @@ struct wesnoth_global_fixture { - boost::unit_test::unit_test_monitor.register_exception_translator<game::error>(&exception_translator_game); - boost::unit_test::unit_test_monitor.register_exception_translator<network::error>(&exception_translator_network); - boost::unit_test::unit_test_monitor.register_exception_translator<config::error>(&exception_translator_config); -+#endif - } - ~wesnoth_global_fixture() - { -@@ -94,7 +112,7 @@ struct wesnoth_global_fixture { - } - }; - --BOOST_GLOBAL_FIXTURE(wesnoth_global_fixture) -+BOOST_GLOBAL_FIXTURE(wesnoth_global_fixture); - - /* - * This is a main compilation unit for the test program. -diff --git a/src/tests/test_map_location.cpp b/src/tests/test_map_location.cpp -index ca644c1..1077b62 100644 ---- a/src/tests/test_map_location.cpp -+++ b/src/tests/test_map_location.cpp -@@ -64,9 +64,9 @@ struct MLFixture - ~MLFixture() {} - }; - --BOOST_GLOBAL_FIXTURE ( MLFixture ) -+BOOST_GLOBAL_FIXTURE ( MLFixture ); - --BOOST_AUTO_TEST_SUITE ( test_map_location ) -+BOOST_AUTO_TEST_SUITE ( test_map_location ); - - //#define MAP_LOCATION_GET_OUTPUT - -diff --git a/src/tests/test_mp_connect.cpp b/src/tests/test_mp_connect.cpp -index 051f868..2b69aee 100644 ---- a/src/tests/test_mp_connect.cpp -+++ b/src/tests/test_mp_connect.cpp -@@ -125,8 +125,8 @@ static ng::side_engine* create_side_engine(const config& defaults, - - /* Tests */ - --BOOST_GLOBAL_FIXTURE( mp_connect_fixture ) --BOOST_AUTO_TEST_SUITE( mp_connect ) -+BOOST_GLOBAL_FIXTURE( mp_connect_fixture ); -+BOOST_AUTO_TEST_SUITE( mp_connect ); - - - BOOST_AUTO_TEST_CASE( flg_map_settings ) -diff --git a/src/tests/utils/auto_parameterized.hpp b/src/tests/utils/auto_parameterized.hpp -index dd903cf..2a6705f 100644 ---- a/src/tests/utils/auto_parameterized.hpp -+++ b/src/tests/utils/auto_parameterized.hpp -@@ -15,15 +15,46 @@ - #ifndef TESTS_UTILS_AUTO_PARAMETERIZED_HPP_INCLUDED - #define TESTS_UTILS_AUTO_PARAMETERIZED_HPP_INCLUDED - -+#include <boost/version.hpp> -+ - #include <boost/test/unit_test_suite.hpp> - #include <boost/test/parameterized_test.hpp> - -+#if BOOST_VERSION >= 106000 -+#include <boost/test/tree/auto_registration.hpp> -+#endif -+ - namespace test_utils { - - #ifndef BOOST_AUTO_TU_REGISTRAR - #define BOOST_AUTO_TU_REGISTRAR BOOST_AUTO_TC_REGISTRAR - #endif - -+#if BOOST_VERSION >= 106000 -+#define WESNOTH_PARAMETERIZED_TEST_CASE( test_name, type_name, values, param_name ) \ -+struct test_name : public BOOST_AUTO_TEST_CASE_FIXTURE \ -+{ void test_method(const type_name&); }; \ -+\ -+type_name* BOOST_JOIN(test_name, _begin) = &values[0]; \ -+type_name* BOOST_JOIN(test_name, _end) = BOOST_JOIN(test_name, _begin) + (sizeof(values)/sizeof(values[0])); \ -+static void BOOST_AUTO_TC_INVOKER( test_name )(const type_name& param_name ) \ -+{ \ -+ test_name t; \ -+ t.test_method(param_name); \ -+} \ -+ \ -+struct BOOST_AUTO_TC_UNIQUE_ID( test_name ) {}; \ -+ \ -+BOOST_AUTO_TU_REGISTRAR( test_name )( \ -+ boost::unit_test::make_test_case(&BOOST_AUTO_TC_INVOKER( test_name ), \ -+ BOOST_TEST_STRINGIZE( test_name ), \ -+ BOOST_TEST_STRINGIZE(__FILE__), __LINE__, \ -+ BOOST_JOIN(test_name, _begin), BOOST_JOIN(test_name, _end)), \ -+ boost::unit_test::decorator::collector::instance()); \ -+ \ -+void test_name::test_method(const type_name& param_name) \ -+/**/ -+#else - #define WESNOTH_PARAMETERIZED_TEST_CASE( test_name, type_name, values, param_name ) \ - struct test_name : public BOOST_AUTO_TEST_CASE_FIXTURE \ - { void test_method(const type_name&); }; \ -@@ -39,12 +70,13 @@ static void BOOST_AUTO_TC_INVOKER( test_name )(const type_name& param_name ) \ - struct BOOST_AUTO_TC_UNIQUE_ID( test_name ) {}; \ - \ - BOOST_AUTO_TU_REGISTRAR( test_name )( \ -- boost::unit_test::make_test_case(&BOOST_AUTO_TC_INVOKER( test_name ), \ -- BOOST_TEST_STRINGIZE( test_name ),\ -- BOOST_JOIN(test_name, _begin), BOOST_JOIN(test_name, _end))); \ -+ boost::unit_test::make_test_case(&BOOST_AUTO_TC_INVOKER( test_name ), \ -+ BOOST_TEST_STRINGIZE( test_name ), \ -+ BOOST_JOIN(test_name, _begin), BOOST_JOIN(test_name, _end))); \ - \ - void test_name::test_method(const type_name& param_name) \ - /**/ -+#endif - - } - #endif diff --git a/patch_gcc6.patch b/patch_gcc6.patch deleted file mode 100644 index 865c91c97f98..000000000000 --- a/patch_gcc6.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/scons/boost.py b/scons/boost.py -index d48829d..e0dfbcc 100644 ---- a/scons/boost.py -+++ b/scons/boost.py -@@ -1,6 +1,6 @@ - # vi: syntax=python:et:ts=4 - from config_check_utils import find_include --from os.path import join, dirname, basename -+from os.path import join, dirname, basename, samefile - from glob import glob - import re - -@@ -69,10 +69,11 @@ def CheckBoost(context, boost_lib, require_version = None, header_only = False): - header_name = boost_headers.get(boost_lib, boost_lib + ".hpp") - libname = "boost_" + boost_lib + env.get("boost_suffix", "") - -- if env["fast"]: -- env.AppendUnique(CXXFLAGS = ["-isystem", boostdir], LIBPATH = [boostlibdir]) -- else: -- env.AppendUnique(CPPPATH = [boostdir], LIBPATH = [boostlibdir]) -+ if not samefile(boostdir, "/usr/include"): -+ if env["fast"]: -+ env.AppendUnique(CXXFLAGS = ["-isystem", boostdir], LIBPATH = [boostlibdir]) -+ else: -+ env.AppendUnique(CPPPATH = [boostdir], LIBPATH = [boostlibdir]) - if not header_only: - env.AppendUnique(LIBS = [libname]) - if boost_lib == "thread" and env["PLATFORM"] == "posix":
\ No newline at end of file diff --git a/scons_patch.diff b/scons_patch.diff new file mode 100644 index 000000000000..cfc1905415e3 --- /dev/null +++ b/scons_patch.diff @@ -0,0 +1,15 @@ +diff --git a/SConstruct b/SConstruct +index 364e15ea175..64222f25afb 100755 +--- a/SConstruct ++++ b/SConstruct +@@ -767,8 +767,8 @@ if not access(fifodir, F_OK): + env.Alias("install-wesnothd", fifodir) + if env["systemd"]: + env.InstallData("prefix", "wesnothd", "#packaging/systemd/wesnothd.service", "lib/systemd/system") +- env.InstallData("prefix", "wesnothd", "#packaging/systemd/wesnothd/tmpfiles.conf", "lib/tmpfiles.d") +- env.InstallData("prefix", "wesnothd", "#packaging/systemd/wesnothd/sysusers.conf", "lib/sysusers.d") ++ env.InstallData("prefix", "wesnothd", "#packaging/systemd/wesnothd.tmpfiles.conf", "lib/tmpfiles.d") ++ env.InstallData("prefix", "wesnothd", "#packaging/systemd/wesnothd.sysusers.conf", "lib/sysusers.d") + + # Wesnoth campaign server + env.InstallBinary(campaignd) diff --git a/wesnoth-devel.appdata.xml b/wesnoth-devel.appdata.xml index 55f7c3ea191b..a331fa2da3b6 100644 --- a/wesnoth-devel.appdata.xml +++ b/wesnoth-devel.appdata.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<component type="desktop"> +<component type="desktop-application"> <id>wesnoth-devel.desktop</id> <metadata_license>GFDL-1.3</metadata_license> <project_license>GPL-2.0+</project_license> @@ -77,7 +77,7 @@ <image type="source" width="1280" height="768">https://www.wesnoth.org/images/sshots/wesnoth-1.13.6-1.jpg</image> </screenshot> </screenshots> - <launchable type="desktop-id">wesnoth-devel.desktop</launchable> + <launchable type="desktop-id">wesnoth-devel</launchable> <url type="homepage">https://www.wesnoth.org</url> <url type="faq">https://wiki.wesnoth.org/Play</url> <url type="help">https://wiki.wesnoth.org/WesnothManual</url> |