diff --git a/.gitignore b/.gitignore index b628ff6..a244285 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,11 @@ Widelands-Build14-src.7z /widelands-build18-src.tar.bz2 /widelands-build19-src-gcc7.tar.bz2 /widelands-build20.tar.bz2 +/widelands-build21.tar.gz +/widelands-1.0.tar.gz +/widelands-1.0.tar.gz.asc +/widelands-1.1.tar.gz +/widelands-1.2.tar.gz +/widelands-1.2.1.tar.gz +/widelands-1.3.tar.gz +/widelands-1.3.1.tar.gz diff --git a/sources b/sources index 2f2daee..aa0d658 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (widelands-build20.tar.bz2) = 25280db6a57adeb37d13db35ce9eb41a5478534b04772240f6228c180f5a41a55fc414dab66e724945442985cbbba7a8a59a582291aca176e0bd8ae6c08760e5 +SHA512 (widelands-1.3.1.tar.gz) = 47d72aabac1dc873dd6f6fa86ba0bf2b0dd13c298f10df89b47654397ab5b3a55c06d4e8cf6a0da807e3402a7bff0839b7b0b18a6f8611ee83d252b8e0d61f15 diff --git a/widelands-1.2-build20-gcc10.patch b/widelands-1.2-build20-gcc10.patch new file mode 100644 index 0000000..94c85fe --- /dev/null +++ b/widelands-1.2-build20-gcc10.patch @@ -0,0 +1,21 @@ +diff -uNr widelands-1.2.orig/src/ui_basic/box.cc widelands-1.2/src/ui_basic/box.cc +--- widelands-1.2.orig/src/ui_basic/box.cc 2024-03-28 11:12:05.000000000 +0100 ++++ widelands-1.2/src/ui_basic/box.cc 2024-08-25 12:02:46.697000000 +0200 +@@ -180,7 +180,7 @@ + int infspace_count = 0; + + for (size_t idx = 0; idx < items_.size(); ++idx) { +- int depth; ++ int depth = 0; + int unused = 0; + get_item_desired_size(idx, &depth, &unused); + totaldepth += depth; +@@ -274,7 +274,7 @@ + // Do not modify hidden items + continue; + } +- int depth; ++ int depth = 0; + int breadth = 0; + get_item_size(idx, &depth, &breadth); + diff --git a/widelands-1.2.1-disable-some-tests.patch b/widelands-1.2.1-disable-some-tests.patch new file mode 100644 index 0000000..d9473de --- /dev/null +++ b/widelands-1.2.1-disable-some-tests.patch @@ -0,0 +1,11 @@ +diff -uNr widelands.orig/src/base/test/CMakeLists.txt widelands/src/base/test/CMakeLists.txt +--- widelands.orig/src/base/test/CMakeLists.txt 2024-11-12 21:03:25.000000000 +0100 ++++ widelands/src/base/test/CMakeLists.txt 2025-02-16 12:21:07.246000000 +0100 +@@ -7,7 +7,6 @@ + test_times.cc + test_time_string.cc + test_utf8.cc +- test_string.cc + DEPENDS + base + base_crypto diff --git a/widelands-1.3-build19-ppc64le.patch b/widelands-1.3-build19-ppc64le.patch new file mode 100644 index 0000000..b660b63 --- /dev/null +++ b/widelands-1.3-build19-ppc64le.patch @@ -0,0 +1,12 @@ +diff -uNr widelands-1.3.orig/CMakeLists.txt widelands-1.3/CMakeLists.txt +--- widelands-1.3.orig/CMakeLists.txt 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/CMakeLists.txt 2025-12-21 13:08:24.503000000 +0100 +@@ -292,7 +292,7 @@ + wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Wno-disabled-macro-expansion") + endif() + elseif(MSVC) +- wl_add_flag(WL_GENERIC_CXX_FLAGS "/std:c++17") ++ wl_add_flag(WL_GENERIC_CXX_FLAGS "/std:gnu++17") + wl_add_flag(WL_GENERIC_C_LIBRARY_FLAGS "/std:c11") + # https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/ + # Disabled warnings that are overly verbose right now or just do not make sense. diff --git a/widelands-1.3-f37-sys-minizip-buildfix.patch b/widelands-1.3-f37-sys-minizip-buildfix.patch new file mode 100644 index 0000000..bdafc73 --- /dev/null +++ b/widelands-1.3-f37-sys-minizip-buildfix.patch @@ -0,0 +1,14 @@ +diff -uNr widelands-1.3.orig/cmake/WlFunctions.cmake widelands-1.3/cmake/WlFunctions.cmake +--- widelands-1.3.orig/cmake/WlFunctions.cmake 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/cmake/WlFunctions.cmake 2025-12-21 13:32:50.138000000 +0100 +@@ -93,7 +93,9 @@ + wl_include_directories(${NAME} ${CMAKE_SOURCE_DIR}/src) + wl_include_directories(${NAME} ${CMAKE_BINARY_DIR}/src) + if(MINIZIP_STATIC_LIBRARIES) +- wl_include_directories(${NAME} ${MINIZIP_INCLUDE_DIRS}) ++ if (MINIZIP_INCLUDE_DIRS) ++ wl_include_directories(${NAME} ${MINIZIP_INCLUDE_DIRS}) ++ endif() + target_compile_options(${NAME} PUBLIC ${MINIZIP_CFLAGS}) + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + include(CheckCXXCompilerFlag) diff --git a/widelands-1.3-gcc13.patch b/widelands-1.3-gcc13.patch new file mode 100644 index 0000000..b1ca776 --- /dev/null +++ b/widelands-1.3-gcc13.patch @@ -0,0 +1,180 @@ +diff -uNr widelands-1.3.orig/src/commands/cmd_queue.h widelands-1.3/src/commands/cmd_queue.h +--- widelands-1.3.orig/src/commands/cmd_queue.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/commands/cmd_queue.h 2025-12-21 13:22:54.968000000 +0100 +@@ -19,6 +19,7 @@ + #ifndef WL_COMMANDS_CMD_QUEUE_H + #define WL_COMMANDS_CMD_QUEUE_H + ++#include + #include + + #include "commands/command.h" +diff -uNr widelands-1.3.orig/src/io/filesystem/zip_filesystem.h widelands-1.3/src/io/filesystem/zip_filesystem.h +--- widelands-1.3.orig/src/io/filesystem/zip_filesystem.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/io/filesystem/zip_filesystem.h 2025-12-21 13:21:40.240000000 +0100 +@@ -23,6 +23,7 @@ + + #include + #include ++#include + + #include "io/filesystem/filesystem.h" + #include "io/streamread.h" +diff -uNr widelands-1.3.orig/src/logic/addons.h widelands-1.3/src/logic/addons.h +--- widelands-1.3.orig/src/logic/addons.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/addons.h 2025-12-21 13:22:00.559000000 +0100 +@@ -19,6 +19,7 @@ + #ifndef WL_LOGIC_ADDONS_H + #define WL_LOGIC_ADDONS_H + ++#include + #include + #include + #include +diff -uNr widelands-1.3.orig/src/logic/ai_dna_handler.h widelands-1.3/src/logic/ai_dna_handler.h +--- widelands-1.3.orig/src/logic/ai_dna_handler.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/ai_dna_handler.h 2025-12-21 13:22:21.467000000 +0100 +@@ -19,6 +19,8 @@ + #ifndef WL_LOGIC_AI_DNA_HANDLER_H + #define WL_LOGIC_AI_DNA_HANDLER_H + ++#include ++ + #include "logic/player.h" + + namespace Widelands { +diff -uNr widelands-1.3.orig/src/logic/game_controller.h widelands-1.3/src/logic/game_controller.h +--- widelands-1.3.orig/src/logic/game_controller.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/game_controller.h 2025-12-21 13:23:11.328000000 +0100 +@@ -19,6 +19,7 @@ + #ifndef WL_LOGIC_GAME_CONTROLLER_H + #define WL_LOGIC_GAME_CONTROLLER_H + ++#include + #include + + #include "base/times.h" +diff -uNr widelands-1.3.orig/src/logic/game.h widelands-1.3/src/logic/game.h +--- widelands-1.3.orig/src/logic/game.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/game.h 2025-12-21 13:23:32.586000000 +0100 +@@ -19,6 +19,7 @@ + #ifndef WL_LOGIC_GAME_H + #define WL_LOGIC_GAME_H + ++#include + #include + + #include "base/crypto.h" +diff -uNr widelands-1.3.orig/src/logic/game_settings.h widelands-1.3/src/logic/game_settings.h +--- widelands-1.3.orig/src/logic/game_settings.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/game_settings.h 2025-12-21 13:23:53.751000000 +0100 +@@ -19,6 +19,7 @@ + #ifndef WL_LOGIC_GAME_SETTINGS_H + #define WL_LOGIC_GAME_SETTINGS_H + ++#include + #include + #include + +diff -uNr widelands-1.3.orig/src/logic/mapastar.h widelands-1.3/src/logic/mapastar.h +--- widelands-1.3.orig/src/logic/mapastar.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/mapastar.h 2025-12-21 13:24:10.835000000 +0100 +@@ -19,6 +19,7 @@ + #ifndef WL_LOGIC_MAPASTAR_H + #define WL_LOGIC_MAPASTAR_H + ++#include + #include + + #include "logic/map.h" +diff -uNr widelands-1.3.orig/src/logic/map.h widelands-1.3/src/logic/map.h +--- widelands-1.3.orig/src/logic/map.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/map.h 2025-12-21 13:24:25.286000000 +0100 +@@ -19,6 +19,7 @@ + #ifndef WL_LOGIC_MAP_H + #define WL_LOGIC_MAP_H + ++#include + #include + #include + #include +diff -uNr widelands-1.3.orig/src/logic/maphollowregion.h widelands-1.3/src/logic/maphollowregion.h +--- widelands-1.3.orig/src/logic/maphollowregion.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/maphollowregion.h 2025-12-21 13:24:38.671000000 +0100 +@@ -19,6 +19,8 @@ + #ifndef WL_LOGIC_MAPHOLLOWREGION_H + #define WL_LOGIC_MAPHOLLOWREGION_H + ++#include ++ + #include "logic/map.h" + + namespace Widelands { +diff -uNr widelands-1.3.orig/src/logic/message_queue.h widelands-1.3/src/logic/message_queue.h +--- widelands-1.3.orig/src/logic/message_queue.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/message_queue.h 2025-12-21 13:24:53.770000000 +0100 +@@ -19,6 +19,7 @@ + #ifndef WL_LOGIC_MESSAGE_QUEUE_H + #define WL_LOGIC_MESSAGE_QUEUE_H + ++#include + #include + #include + +diff -uNr widelands-1.3.orig/src/logic/pathfield.h widelands-1.3/src/logic/pathfield.h +--- widelands-1.3.orig/src/logic/pathfield.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/pathfield.h 2025-12-21 13:25:10.868000000 +0100 +@@ -19,6 +19,7 @@ + #ifndef WL_LOGIC_PATHFIELD_H + #define WL_LOGIC_PATHFIELD_H + ++#include + #include + + #include "logic/cookie_priority_queue.h" +diff -uNr widelands-1.3.orig/src/logic/player.h widelands-1.3/src/logic/player.h +--- widelands-1.3.orig/src/logic/player.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/player.h 2025-12-21 13:27:20.228000000 +0100 +@@ -19,6 +19,7 @@ + #ifndef WL_LOGIC_PLAYER_H + #define WL_LOGIC_PLAYER_H + ++#include + #include + #include + #include +diff -uNr widelands-1.3.orig/src/logic/replay_game_controller.h widelands-1.3/src/logic/replay_game_controller.h +--- widelands-1.3.orig/src/logic/replay_game_controller.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/replay_game_controller.h 2025-12-21 13:28:10.806000000 +0100 +@@ -19,6 +19,7 @@ + #ifndef WL_LOGIC_REPLAY_GAME_CONTROLLER_H + #define WL_LOGIC_REPLAY_GAME_CONTROLLER_H + ++#include + #include + + #include "commands/command.h" +diff -uNr widelands-1.3.orig/src/logic/single_player_game_controller.h widelands-1.3/src/logic/single_player_game_controller.h +--- widelands-1.3.orig/src/logic/single_player_game_controller.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/single_player_game_controller.h 2025-12-21 13:28:30.527000000 +0100 +@@ -19,6 +19,8 @@ + #ifndef WL_LOGIC_SINGLE_PLAYER_GAME_CONTROLLER_H + #define WL_LOGIC_SINGLE_PLAYER_GAME_CONTROLLER_H + ++#include ++ + #include "ai/computer_player.h" + #include "logic/game_controller.h" + +diff -uNr widelands-1.3.orig/src/logic/single_player_game_settings_provider.h widelands-1.3/src/logic/single_player_game_settings_provider.h +--- widelands-1.3.orig/src/logic/single_player_game_settings_provider.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/single_player_game_settings_provider.h 2025-12-21 13:28:46.109000000 +0100 +@@ -19,6 +19,8 @@ + #ifndef WL_LOGIC_SINGLE_PLAYER_GAME_SETTINGS_PROVIDER_H + #define WL_LOGIC_SINGLE_PLAYER_GAME_SETTINGS_PROVIDER_H + ++#include ++ + #include "logic/game_settings.h" + + /** diff --git a/widelands-1.3-gcc15.patch b/widelands-1.3-gcc15.patch new file mode 100644 index 0000000..7f2478f --- /dev/null +++ b/widelands-1.3-gcc15.patch @@ -0,0 +1,29 @@ +diff -uNr widelands-1.3.orig/src/logic/map_objects/tribes/requirements.h widelands-1.3/src/logic/map_objects/tribes/requirements.h +--- widelands-1.3.orig/src/logic/map_objects/tribes/requirements.h 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/logic/map_objects/tribes/requirements.h 2025-12-21 13:36:41.437000000 +0100 +@@ -20,6 +20,7 @@ + #define WL_LOGIC_MAP_OBJECTS_TRIBES_REQUIREMENTS_H + + #include ++#include + #include + #include + #include +diff -uNr widelands-1.3.orig/src/third_party/eris/eris.c widelands-1.3/src/third_party/eris/eris.c +--- widelands-1.3.orig/src/third_party/eris/eris.c 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/third_party/eris/eris.c 2025-12-21 13:37:22.685000000 +0100 +@@ -27,13 +27,7 @@ + #include + #include + #include +- +-/* Not using stdbool because Visual Studio lives in the past... */ +-#ifndef __cplusplus +-typedef int bool; +-#define false 0 +-#define true 1 +-#endif ++#include + + /* Mark us as part of the Lua core to get access to what we need. */ + #define LUA_CORE diff --git a/widelands-1.3-make-sdl2-use-x11.patch b/widelands-1.3-make-sdl2-use-x11.patch new file mode 100644 index 0000000..80c3d65 --- /dev/null +++ b/widelands-1.3-make-sdl2-use-x11.patch @@ -0,0 +1,47 @@ +diff -uNr widelands-1.3.orig/src/graphic/text/test/render_richtext.cc widelands-1.3/src/graphic/text/test/render_richtext.cc +--- widelands-1.3.orig/src/graphic/text/test/render_richtext.cc 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/graphic/text/test/render_richtext.cc 2025-12-21 13:16:33.279000000 +0100 +@@ -114,6 +114,9 @@ + if (parse_arguments(argc, argv, &w, outname, inname, allowed_tags)) + return 0; + ++ // GLEW only supports glx atm, force use of X11 even under Wayland ++ // https://github.com/nigels-com/glew/issues/172 ++ setenv("SDL_VIDEODRIVER", "x11", 0); + if (SDL_Init(SDL_INIT_VIDEO) < 0) { + std::cerr << "SDLInit did not succeed: " << SDL_GetError() << std::endl; + return 1; +diff -uNr widelands-1.3.orig/src/website/website_common.cc widelands-1.3/src/website/website_common.cc +--- widelands-1.3.orig/src/website/website_common.cc 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/website/website_common.cc 2025-12-21 13:17:16.715000000 +0100 +@@ -18,6 +18,7 @@ + + #include "website/website_common.h" + ++#include + #include + + #include "base/i18n.h" +@@ -33,6 +34,9 @@ + set_initializer_thread(); + g_verbose = true; + ++ // GLEW only supports glx atm, force use of X11 even under Wayland ++ // https://github.com/nigels-com/glew/issues/172 ++ setenv("SDL_VIDEODRIVER", "x11", 0); + if (SDL_Init(SDL_INIT_VIDEO) != 0) { + // We sometimes run into a missing video driver in our CI environment, so we exit 0 to prevent + // too frequent failures +diff -uNr widelands-1.3.orig/src/wlapplication.cc widelands-1.3/src/wlapplication.cc +--- widelands-1.3.orig/src/wlapplication.cc 2025-12-18 19:19:33.000000000 +0100 ++++ widelands-1.3/src/wlapplication.cc 2025-12-21 13:17:48.848000000 +0100 +@@ -401,6 +401,9 @@ + #endif + + // Start the SDL core ++ // GLEW only supports glx atm, force use of X11 even under Wayland ++ // https://github.com/nigels-com/glew/issues/172 ++ setenv("SDL_VIDEODRIVER", "x11", 0); + if (SDL_Init(SDL_INIT_VIDEO) == -1) { + // We sometimes run into a missing video driver in our CI environment, so we exit 0 to prevent + // too frequent failures diff --git a/widelands-build19-ppc64le.patch b/widelands-build19-ppc64le.patch deleted file mode 100644 index e8ba79c..0000000 --- a/widelands-build19-ppc64le.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up widelands-build20/CMakeLists.txt~ widelands-build20/CMakeLists.txt ---- widelands-build20/CMakeLists.txt~ 2019-05-02 07:23:39.000000000 +0200 -+++ widelands-build20/CMakeLists.txt 2019-05-13 15:21:05.368834756 +0200 -@@ -167,7 +167,7 @@ else() - message(FATAL_ERROR "Unknown CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") - endif() - --wl_add_flag(WL_GENERIC_CXX_FLAGS "-std=c++11") -+wl_add_flag(WL_GENERIC_CXX_FLAGS "-std=gnu++11") - - if(OPTION_ASAN) - message(STATUS "Using AddressSanitizer http://clang.llvm.org/docs/AddressSanitizer.html") diff --git a/widelands-build20-gcc10.patch b/widelands-build20-gcc10.patch deleted file mode 100644 index 9ecdd86..0000000 --- a/widelands-build20-gcc10.patch +++ /dev/null @@ -1,39 +0,0 @@ -For some reason the s390x build (and only the s390x build) fails with: - -/builddir/build/BUILD/widelands-build20/src/ui_basic/box.cc: In member function 'virtual void UI::Box::layout()': -/builddir/build/BUILD/widelands-build20/src/ui_basic/box.cc:163:14: error: 'depth' may be used uninitialized in this function [-Werror=maybe-uninitialized] - 163 | totaldepth += depth; - | ~~~~~~~~~~~^~~~~~~~ -cc1plus: some warnings being treated as errors - -This fixes this. -diff -Nrup a/src/ui_basic/box.cc b/src/ui_basic/box.cc ---- a/src/ui_basic/box.cc 2019-05-01 23:23:39.000000000 -0600 -+++ b/src/ui_basic/box.cc 2019-11-12 16:10:28.893117299 -0700 -@@ -104,7 +104,7 @@ void Box::update_desired_size() { - int maxbreadth = mindesiredbreadth_; - - for (uint32_t idx = 0; idx < items_.size(); ++idx) { -- int depth, breadth = 0; -+ int depth = 0, breadth = 0; - get_item_desired_size(idx, &depth, &breadth); - - totaldepth += depth; -@@ -158,7 +158,7 @@ void Box::layout() { - int totaldepth = 0; - - for (size_t idx = 0; idx < items_.size(); ++idx) { -- int depth, unused = 0; -+ int depth = 0, unused = 0; - get_item_desired_size(idx, &depth, &unused); - totaldepth += depth; - } -@@ -243,7 +243,7 @@ void Box::update_positions() { - } - - for (uint32_t idx = 0; idx < items_.size(); ++idx) { -- int depth, breadth = 0; -+ int depth = 0, breadth = 0; - get_item_size(idx, &depth, &breadth); - - if (items_[idx].type == Item::ItemPanel) { diff --git a/widelands-build20-gcc91.patch b/widelands-build20-gcc91.patch deleted file mode 100644 index 5bb7a06..0000000 --- a/widelands-build20-gcc91.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -up widelands-build20/src/graphic/gl/fields_to_draw.h~ widelands-build20/src/graphic/gl/fields_to_draw.h ---- widelands-build20/src/graphic/gl/fields_to_draw.h~ 2019-05-02 07:23:39.000000000 +0200 -+++ widelands-build20/src/graphic/gl/fields_to_draw.h 2019-07-14 21:39:12.805869365 +0200 -@@ -102,15 +102,11 @@ private: - // coordinates in the map. Returns kInvalidIndex if this field is not in the - // fields_to_draw. - inline int calculate_index(int fx, int fy) const { -- uint16_t xidx = fx - min_fx_; -- if (xidx >= w_) { -+ if (fx < min_fx_ || fx > max_fx_ || -+ fy < min_fy_ || fy > max_fy_) { - return kInvalidIndex; - } -- uint16_t yidx = fy - min_fy_; -- if (yidx >= h_) { -- return kInvalidIndex; -- } -- return yidx * w_ + xidx; -+ return (fy - min_fy_) * w_ + (fx - min_fx_); - } - - // Minimum and maximum field coordinates (geometric) to render. Can be negative. diff --git a/widelands.appdata.xml b/widelands.appdata.xml deleted file mode 100644 index 706d681..0000000 --- a/widelands.appdata.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - widelands.desktop - CC0-1.0 - GPL-2.0+ - Widelands - Open source realtime-strategy game - -

- Widelands is a free, open source real-time strategy game with - singleplayer campaigns and a multiplayer mode. It is easy to get - started through playable tutorials. -

-

- In Widelands, you are the regent of a small clan. You start out with - nothing but your headquarters, where all your resources are stored. -

-

- In the course of the game, you will build an ever growing settlement. - Every member of your clan will do his or her part to produce more - resources - wood, food, iron, gold and more - to further this growth. - The economic network is complex and different in the three tribes - (Barbarians, Imperials, and Atlanteans). -

-
- https://wl.widelands.org/ - https://wl.widelands.org/wiki/Game%20Manual/ - - https://wl.widelands.org/wlmedia/wlscreens/screens/Build%2019/Dolomites.png - https://wl.widelands.org/wlmedia/wlscreens/screens/Build%2019/Barbarian%20Buildings.png - https://wl.widelands.org/wlmedia/wlscreens/screens/Build%2019/Worker%20Icons.png - - jwrdegoede_at_fedoraproject.org -
diff --git a/widelands.desktop b/widelands.desktop deleted file mode 100644 index c43ffec..0000000 --- a/widelands.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Type=Application -Name=Widelands -GenericName=Realtime Strategy Game -Comment=Build a growing settlement and rule the world -Icon=widelands -Exec=widelands -Categories=Game;StrategyGame; -Keywords=Game;RTS;Real-time;Strategy; diff --git a/widelands.rpmlintrc b/widelands.rpmlintrc new file mode 100644 index 0000000..0cbe0a8 --- /dev/null +++ b/widelands.rpmlintrc @@ -0,0 +1,4 @@ +# The symlinks to system fonts are dangling when only looking at this pkg +addFilter("dangling-symlink") +# Ignore new useless rpmlint warning +addFilter("files-duplicate") diff --git a/widelands.spec b/widelands.spec index 6d7d8a1..538e782 100644 --- a/widelands.spec +++ b/widelands.spec @@ -1,22 +1,31 @@ -%global buildno 20 -%global buildid build%{buildno} -# The game contains a copy of these fonts, we replaces these with symlinks to the system versions of these fonts -%global fonts font(amiri) font(dejavusans) font(dejavusansmono) font(dejavuserif) font(widelands) font(lklug) font(wenquanyimicrohei) +# The game contains a copy of these fonts, we replace these with symlinks to the system versions of these fonts +%global fonts font(amiri) font(dejavusans) font(dejavusansmono) font(dejavuserif) font(widelands) font(gargi) font(wenquanyimicrohei) font(frankruehlclm) Name: widelands -Version: 0 -Release: 0.77.%{buildid}%{?dist} +Version: 1.3.1 +Release: 3%{?dist} Summary: Open source realtime-strategy game -License: GPLv2+ +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later URL: http://www.widelands.org -Source0: https://launchpad.net/widelands/%{buildid}/%{buildid}/+download/widelands-%{buildid}.tar.bz2 -Source1: %{name}.desktop -Source2: %{name}.appdata.xml -Patch0: widelands-build19-ppc64le.patch -Patch1: widelands-build20-gcc91.patch -Patch2: widelands-build20-gcc10.patch +Source0: https://github.com/widelands/widelands/archive/v%{version}/%{name}-%{version}.tar.gz +# gnu++11 fix in CMakeLists.txt for PPC64 little-endian +Patch0: widelands-1.3-build19-ppc64le.patch +# Fix failures on s390x due to uninitialized variables +Patch1: widelands-1.2-build20-gcc10.patch +# widelands uses glew which atm is hardcoded to glx, see e.g.: +# https://github.com/nigels-com/glew/issues/172 +# This can be fixed cleaner by switching to glewContextInit once we are +# at glew 2.3, or maybe backport: +# https://github.com/nigels-com/glew/commit/715afa0ff56c0eb12c23938b80aa2813daa10d81 +Patch2: widelands-1.3-make-sdl2-use-x11.patch +Patch3: widelands-1.3-gcc13.patch +Patch4: widelands-1.3-f37-sys-minizip-buildfix.patch +Patch5: widelands-1.2.1-disable-some-tests.patch +Patch6: widelands-1.3-gcc15.patch +BuildRequires: asio-devel BuildRequires: SDL2-devel BuildRequires: SDL2_image-devel BuildRequires: SDL2_mixer-devel @@ -24,15 +33,19 @@ BuildRequires: SDL2_ttf-devel BuildRequires: boost-devel >= 1.48.0 BuildRequires: cmake BuildRequires: ctags -BuildRequires: desktop-file-utils libappstream-glib -BuildRequires: gettext +BuildRequires: desktop-file-utils +BuildRequires: libappstream-glib BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: glew-devel -BuildRequires: libpng-devel +BuildRequires: libpng-devel >= 1.6.0 +BuildRequires: libcurl-devel +BuildRequires: minizip-ng-compat-devel +BuildRequires: python3 # For the %%build part generating the symlinks BuildRequires: fontconfig %{fonts} -Requires: hicolor-icon-theme %{fonts} +Requires: hicolor-icon-theme +Requires: %{fonts} %description Widelands is an open source (GPLed), realtime-strategy game, using SDL and @@ -42,40 +55,40 @@ perhaps will have a thought, what Widelands is all about. %prep -%autosetup -p1 -n widelands-%{buildid} +%setup -q -n widelands +%patch -P0 -p1 +%patch -P1 -p1 +%patch -P2 -p1 +%patch -P3 -p1 +%patch -P4 -p1 +%ifarch s390x +%patch -P5 -p1 +%endif +%patch -P6 -p1 %build -mkdir build -pushd build -LDFLAGS=-lGL %cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=%{_bindir} \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DWL_INSTALL_BASEDIR=%{_prefix}/share/%{name} \ -DWL_INSTALL_DATADIR=%{_prefix}/share/%{name} \ -DOPTION_BUILD_WEBSITE_TOOLS=OFF \ - .. -make %{?_smp_mflags} -popd + %{nil} +%cmake_build %install -pushd build -%make_install -popd +%cmake_install -for i in 16 32 48 64 128; do - mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${i}x${i}/apps - ln -s /usr/share/%{name}/images/logos/wl-ico-${i}.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${i}x${i}/apps/%{name}.png -done +mkdir -p $RPM_BUILD_ROOT%{_bindir} +mv $RPM_BUILD_ROOT%{_prefix}/games/%{name} \ + $RPM_BUILD_ROOT%{_bindir}/%{name} -mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications -desktop-file-install --dir $RPM_BUILD_ROOT%{_datadir}/applications %{SOURCE1} -mkdir -p $RPM_BUILD_ROOT%{_datadir}/appdata -install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/appdata -appstream-util validate-relax --nonet \ - $RPM_BUILD_ROOT%{_datadir}/appdata/%{name}.appdata.xml +# Validate desktop file (provided by upstream) +desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/*.desktop + +# Validate appdata (provided by upstream) +appstream-util validate-relax --nonet $RPM_BUILD_ROOT%{_metainfodir}/*.metainfo.xml pushd $RPM_BUILD_ROOT # Replace fonts with system fonts. We used to have symlinks directly from @@ -131,46 +144,196 @@ ln -s $(fc-match -f "%{file}" "monospace:italic") \ usr/share/%{name}/i18n/fonts/dejavu-fonts/DejaVuSansMono-Oblique.ttf ln -s $(fc-match -f "%{file}" "monospace:bold:italic") \ usr/share/%{name}/i18n/fonts/dejavu-fonts/DejaVuSansMono-BoldOblique.ttf +ln -s $(fc-match -f "%{file}" "DejaVuSansCondensed") \ + usr/share/%{name}/i18n/fonts/dejavu-fonts/DejaVuSansCondensed.ttf +ln -s $(fc-match -f "%{file}" "DejaVuSansCondensed:bold") \ + usr/share/%{name}/i18n/fonts/dejavu-fonts/DejaVuSansCondensed-Bold.ttf +ln -s $(fc-match -f "%{file}" "DejaVuSansCondensed:italic") \ + usr/share/%{name}/i18n/fonts/dejavu-fonts/DejaVuSansCondensed-Oblique.ttf +ln -s $(fc-match -f "%{file}" "DejaVuSansCondensed:bold:italic") \ + usr/share/%{name}/i18n/fonts/dejavu-fonts/DejaVuSansCondensed-BoldOblique.ttf +# Chinese fonts rm -r usr/share/%{name}/i18n/fonts/MicroHei mkdir usr/share/%{name}/i18n/fonts/wqy-microhei-fonts ln -s wqy-microhei-fonts usr/share/%{name}/i18n/fonts/MicroHei ln -s $(fc-match -f "%{file}" "wenquanyimicrohei") \ usr/share/%{name}/i18n/fonts/wqy-microhei-fonts/wqy-microhei.ttc -rm -r usr/share/%{name}/i18n/fonts/Sinhala -mkdir usr/share/%{name}/i18n/fonts/lklug-fonts -ln -s lklug-fonts usr/share/%{name}/i18n/fonts/Sinhala -ln -s $(fc-match -f "%{file}" "lklug") \ - usr/share/%{name}/i18n/fonts/lklug-fonts/lklug.ttf +### IMPORTANT NOTE ### +# The fonts below never had a symlink to another font-dir shipped, so here we need +# to keep the usr/share/%%{name}/i18n/fonts/foo dir, rather then replace it with a link +# Devanagari (Hindu) fonts +# Fedora doesn't ship Nakula, but other Devanagari font sets. +# Gargi is a TTF font set and should be compatible. +rm -r usr/share/%{name}/i18n/fonts/Nakula/* +ln -s $(fc-match -f "%{file}" "gargi") \ + usr/share/%{name}/i18n/fonts/Nakula/nakula.ttf + +# Hebrew fonts +rm -r usr/share/%{name}/i18n/fonts/Culmus/* +ln -s $(fc-match -f "%{file}" "frankruehlclm:bold") \ + usr/share/%{name}/i18n/fonts/Culmus/TaameyFrankCLM-Bold.ttf +ln -s $(fc-match -f "%{file}" "frankruehlclm:bold:italic") \ + usr/share/%{name}/i18n/fonts/Culmus/TaameyFrankCLM-BoldOblique.ttf +ln -s $(fc-match -f "%{file}" "frankruehlclm:medium") \ + usr/share/%{name}/i18n/fonts/Culmus/TaameyFrankCLM-Medium.ttf +ln -s $(fc-match -f "%{file}" "frankruehlclm:medium:italic") \ + usr/share/%{name}/i18n/fonts/Culmus/TaameyFrankCLM-MediumOblique.ttf + +# In-game Latin fonts - shipped as a separate package rm -r usr/share/%{name}/i18n/fonts/Widelands/* ln -s $(fc-match -f "%{file}" "widelands") \ usr/share/%{name}/i18n/fonts/Widelands/Widelands.ttf + # Scripting magic to add proper %%lang() markings to the locale files -find usr/share/widelands/locale/ -maxdepth 1 -type d -name \*_\* | sed -n 's#\(usr/share/widelands/locale/\(.*\)_.*\)#%lang(\2) /\1#p' > %{_builddir}/widelands-%{buildid}/%{name}.files -find usr/share/widelands/locale/ -maxdepth 1 -type d ! -name "*_*" | sed -n -e 's#\(usr/share/widelands/locale/\(.\+\)\)#%lang(\2) /\1#p' >> %{_builddir}/widelands-%{buildid}/%{name}.files -find usr/share/widelands/ -mindepth 1 -maxdepth 1 -not -name locale | sed -n 's#\(usr/share/widelands/*\)#/\1#p' >> %{_builddir}/widelands-%{buildid}/%{name}.files +find usr/share/widelands/i18n/translations/ -maxdepth 2 -type f -name \*_\*.po | sed -n 's#\(usr/share/widelands/i18n/translations/.*/\([^/]*\)_[^/]*\.po\)#%lang(\2) /\1#p' > %{_builddir}/%{?buildsubdir}/%{name}.files +find usr/share/widelands/i18n/translations/ -maxdepth 2 -type f -name \*.po -and ! -name "*_*.po" | sed -n -e 's#\(usr/share/widelands/i18n/translations/.*/\([^/]\+\)\.po\)#%lang(\2) /\1#p' >> %{_builddir}/%{?buildsubdir}/%{name}.files +find usr/share/widelands/ -mindepth 1 -maxdepth 1 -not -name i18n | sed -n 's#\(usr/share/widelands/*\)#/\1#p' >> %{_builddir}/%{?buildsubdir}/%{name}.files popd %files -f %{name}.files %doc ChangeLog CREDITS %license COPYING +%{_mandir}/man6/widelands.6.gz %{_bindir}/%{name} -%{_datadir}/icons/hicolor/16x16/apps/%{name}.png -%{_datadir}/icons/hicolor/32x32/apps/%{name}.png -%{_datadir}/icons/hicolor/48x48/apps/%{name}.png -%{_datadir}/icons/hicolor/64x64/apps/%{name}.png -%{_datadir}/icons/hicolor/128x128/apps/%{name}.png -%{_datadir}/appdata/%{name}.appdata.xml -%{_datadir}/applications/%{name}.desktop +%{_datadir}/icons/hicolor/*/apps/*.png +%{_metainfodir}/*.metainfo.xml +%{_datadir}/applications/*.desktop %dir %{_datadir}/%{name} -%dir %{_datadir}/%{name}/locale +%{_datadir}/%{name}/i18n/fonts.lua +%{_datadir}/%{name}/i18n/fonts +%{_datadir}/%{name}/i18n/locales.lua +%{_datadir}/%{name}/i18n/locales/*.json +%{_datadir}/%{name}/i18n/translation_stats.conf +%{_datadir}/%{name}/i18n/translations/*/*.pot %changelog +* Fri Jul 17 2026 Fedora Release Engineering - 1.3.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Mon Jun 08 2026 František Zatloukal - 1.3.1-2 +- Rebuilt for icu 78.3 + +* Sun Feb 22 2026 Peter Hanecak - 1.3.1-1 +- New upstream release 1.3.1 (rhbz#2440036) + +* Sat Jan 17 2026 Fedora Release Engineering - 1.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Sun Dec 21 2025 Peter Hanecak - 1.3-1 +- New upstream release 1.3 (rhbz#2422054) + +* Wed Aug 06 2025 František Zatloukal - 1.2.1-3 +- Rebuilt for icu 77.1 + +* Fri Jul 25 2025 Fedora Release Engineering - 1.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Sun Feb 16 2025 Peter Hanecak - 1.2.1-1 +- New upstream release 1.2 (rhbz#2322776) +- Generate font file symlinks also for DejaVuSansCondensed (rhbz#2334803) + +* Sun Jan 19 2025 Fedora Release Engineering - 1.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sun Dec 08 2024 Pete Walter - 1.2-2 +- Rebuild for ICU 76 + +* Sun Aug 25 2024 Peter Hanecak - 1.2-1 +- New upstream release 1.2 (rhbz#2271240) + +* Wed Aug 07 2024 Miroslav Suchý - 1.1-8 +- convert license to SPDX + +* Sat Jul 20 2024 Fedora Release Engineering - 1.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed Jan 31 2024 Pete Walter - 1.1-6 +- Rebuild for ICU 74 + +* Sat Jan 27 2024 Fedora Release Engineering - 1.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Dec 04 2023 Lukas Javorsky - 1.1-4 +- Rebuilt for minizip-ng transition Fedora change +- Fedora Change: https://fedoraproject.org/wiki/Changes/MinizipNGTransition + +* Sat Jul 22 2023 Fedora Release Engineering - 1.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jul 11 2023 František Zatloukal - 1.1-2 +- Rebuilt for ICU 73.2 + +* Mon Mar 27 2023 Hans de Goede - 1.1-1 +- New upstream release 1.1 (rhbz#2135131) +- Fix FTBFS (rhbz#2171759) + +* Sat Jan 21 2023 Fedora Release Engineering - 1.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Dec 31 2022 Pete Walter - 1.0-5 +- Rebuild for ICU 72 + +* Sun Aug 14 2022 Hans de Goede - 1.0-4 +- Fix FTBFS (rhbz#2114565) + +* Mon Aug 01 2022 Frantisek Zatloukal - 1.0-3 +- Rebuilt for ICU 71.1 + +* Sat Jul 23 2022 Fedora Release Engineering - 1.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sun Mar 6 2022 Hans de Goede - 1.0-1 +- New upstream release 1.0 (rhbz1974007) +- Fix FTBFS (rhbz2047116) + +* Thu Feb 10 2022 Orion Poplawski - 0-0.89.build21 +- Rebuild for glew 2.2 + +* Sat Jan 22 2022 Fedora Release Engineering - 0-0.88.build21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Sat Aug 07 2021 Jonathan Wakely - 0-0.87.build21 +- Rebuilt for Boost 1.76 + +* Fri Jul 23 2021 Fedora Release Engineering - 0-0.86.build21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu May 20 2021 Pete Walter - 0-0.85.build21 +- Rebuild for ICU 69 + +* Mon Apr 19 2021 Hans de Goede - 0-0.84.build21 +- Stop replacing dirs with symlinks this breaks upgrades again (rhbz 1947182) + +* Sun Feb 7 2021 Andy Mender - 0-0.83.build21 +- Unbundle Culmus fonts +- Update to build21 +- Clean up patches +- Point Source0 to GitHub release tarballs +- Fix new issues with fonts +- Use appdata and desktop file provided by upstream +- Update records in %%files section + +* Wed Jan 27 2021 Fedora Release Engineering - 0-0.82.build20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Fri Jan 22 2021 Jonathan Wakely - 0-0.81.build20 +- Rebuilt for Boost 1.75 + +* Wed Jul 29 2020 Fedora Release Engineering - 0-0.80.build20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jun 03 2020 Jonathan Wakely - 0-0.79.build20 +- Rebuilt for Boost 1.73 + +* Sat May 16 2020 Pete Walter - 0-0.78.build20 +- Rebuild for ICU 67 + * Thu Mar 19 2020 Hans de Goede - 0-0.77.build20 - Stop replacing symlinks with dirs this breaks upgrades (rhbz 1806272) - Use fc-match to generate font file symlinks to future proof the package