diff --git a/0001-build-add-cmake-option-to-skip-Lua-components-1175.patch b/0001-build-add-cmake-option-to-skip-Lua-components-1175.patch new file mode 100644 index 0000000..a618942 --- /dev/null +++ b/0001-build-add-cmake-option-to-skip-Lua-components-1175.patch @@ -0,0 +1,231 @@ +From a54f12b4c29e949458949d5bede2f74b1aa8a34a Mon Sep 17 00:00:00 2001 +From: jengelh +Date: Mon, 29 Jun 2020 03:43:01 +0200 +Subject: [PATCH] build: add cmake option to skip Lua components (#1175) + +sol.hpp has a lot of templates which, when building with -g +-fsanitize=address -fsanitize=undefined, incur long compile time and +high memory usage (~8500MB) [applies to Scripting/Export/Archive.cpp +and Scripting/Export/Graphics.cpp]. + +Add a cmake option so I can skip building some parts and focus on +the rest. + +Co-authored-by: Simon Judd +--- + src/Application/App.cpp | 8 ++++++++ + src/CMakeLists.txt | 11 ++++++++++- + src/MainEditor/UI/ArchivePanel.cpp | 10 ++++++++++ + src/MainEditor/UI/MainWindow.cpp | 2 ++ + src/MapEditor/UI/MapEditorWindow.cpp | 6 ++++++ + 5 files changed, 36 insertions(+), 1 deletion(-) + +Index: SLADE-3.1.12/src/Application/App.cpp +=================================================================== +--- SLADE-3.1.12.orig/src/Application/App.cpp ++++ SLADE-3.1.12/src/Application/App.cpp +@@ -450,8 +450,10 @@ bool App::init(vector& args, dou + SAction::setBaseWxId(26000); + SAction::initActions(); + ++#ifdef USE_LUA + // Init lua + Lua::init(); ++#endif + + // Init UI + UI::init(ui_scale); +@@ -515,8 +517,10 @@ bool App::init(vector& args, dou + Log::info("Loading game configurations"); + Game::init(); + ++#ifdef USE_LUA + // Init script manager + ScriptManager::init(); ++#endif + + // Show the main window + MainEditor::windowWx()->Show(true); +@@ -644,8 +648,10 @@ void App::exit(bool save_config) + // Save custom special presets + Game::saveCustomSpecialPresets(); + ++#ifdef USE_LUA + // Save custom scripts + ScriptManager::saveUserScripts(); ++#endif + } + + // Close all open archives +@@ -666,8 +672,10 @@ void App::exit(bool save_config) + files = temp.GetNext(&filename); + } + ++#ifdef USE_LUA + // Close lua + Lua::close(); ++#endif + + // Close DUMB + dumb_exit(); +Index: SLADE-3.1.12/src/CMakeLists.txt +=================================================================== +--- SLADE-3.1.12.orig/src/CMakeLists.txt ++++ SLADE-3.1.12/src/CMakeLists.txt +@@ -105,6 +105,9 @@ find_package(OpenGL REQUIRED) + find_package(GLEW REQUIRED) + find_package(Freetype REQUIRED) + find_package(CURL REQUIRED) ++if (NOT NO_LUA) ++ find_package(Lua REQUIRED) ++endif() + include_directories( + ${FREEIMAGE_INCLUDE_DIR} + ${SFML_INCLUDE_DIR} +@@ -133,6 +136,7 @@ endif () + + set(SLADE_SOURCES + ) ++set(SLADE_SCRIPTING_SOURCES) + # Don't include external libraries here as they should be compiled separately + file(GLOB_RECURSE SLADE_SOURCES + Application/*.cpp +@@ -147,9 +151,14 @@ file(GLOB_RECURSE SLADE_SOURCES + OpenGL/*.cpp + UI/*.cpp + Utility/*.cpp +- Scripting/*.cpp + TextEditor/*.cpp + ) ++if (NOT NO_LUA) ++ file(GLOB_RECURSE SLADE_SCRIPTING_SOURCES Scripting/*.cpp) ++ set(SLADE_SOURCES ${SLADE_SOURCES} ${SLADE_SCRIPTING_SOURCES}) ++ ADD_DEFINITIONS(-DUSE_LUA) ++else () ++endif () + set(SLADE_HEADERS + ) + file(GLOB_RECURSE SLADE_HEADERS *.h *.hpp) +Index: SLADE-3.1.12/src/MainEditor/UI/ArchivePanel.cpp +=================================================================== +--- SLADE-3.1.12.orig/src/MainEditor/UI/ArchivePanel.cpp ++++ SLADE-3.1.12/src/MainEditor/UI/ArchivePanel.cpp +@@ -522,7 +522,9 @@ void ArchivePanel::addMenus() + SAction::fromId("arch_replace_maps")->addToMenu(menu_clean); + menu_archive->AppendSubMenu(menu_clean, "&Maintenance"); + auto menu_scripts = new wxMenu(); ++#ifdef USE_LUA + ScriptManager::populateEditorScriptMenu(menu_scripts, ScriptManager::ScriptType::Archive, "arch_script"); ++#endif + menu_archive->AppendSubMenu(menu_scripts, "&Run Script"); + } + if (!menu_entry) +@@ -546,7 +548,9 @@ void ArchivePanel::addMenus() + menu_entry->AppendSeparator(); + SAction::fromId("arch_entry_bookmark")->addToMenu(menu_entry); + auto menu_scripts = new wxMenu(); ++#ifdef USE_LUA + ScriptManager::populateEditorScriptMenu(menu_scripts, ScriptManager::ScriptType::Entry, "arch_entry_script"); ++#endif + menu_entry->AppendSubMenu(menu_scripts, "&Run Script"); + } + +@@ -3189,9 +3193,11 @@ bool ArchivePanel::handleAction(string i + dlg.ShowModal(); + } + ++#ifdef USE_LUA + // Archive->Scripts->... + else if (id == "arch_script") + ScriptManager::runArchiveScript(archive_, wx_id_offset); ++#endif + + + // ------------------------------------------------------------------------ +@@ -3269,9 +3275,11 @@ bool ArchivePanel::handleAction(string i + else if (id == "arch_entry_openext") + openEntryExternal(); + ++#ifdef USE_LUA + // Entry->Run Script + else if (id == "arch_entry_script") + ScriptManager::runEntryScript(entry_list_->getSelectedEntries(), wx_id_offset, MainEditor::windowWx()); ++#endif + + + // Context menu actions +@@ -3785,6 +3793,7 @@ void ArchivePanel::onEntryListRightClick + #endif + } + ++#ifdef USE_LUA + // Entry scripts + if (!ScriptManager::editorScripts(ScriptManager::ScriptType::Entry).empty()) + { +@@ -3793,6 +3802,7 @@ void ArchivePanel::onEntryListRightClick + context.AppendSeparator(); + context.AppendSubMenu(menu_scripts, "Run &Script"); + } ++#endif + + // Popup the context menu + PopupMenu(&context); +Index: SLADE-3.1.12/src/MainEditor/UI/MainWindow.cpp +=================================================================== +--- SLADE-3.1.12.orig/src/MainEditor/UI/MainWindow.cpp ++++ SLADE-3.1.12/src/MainEditor/UI/MainWindow.cpp +@@ -661,12 +661,14 @@ bool MainWindow::handleAction(string id) + if (id == "main_showstartpage") + openStartPageTab(); + ++#ifdef USE_LUA + // Tools->Run Script + if (id == "main_runscript") + { + ScriptManager::open(); + return true; + } ++#endif + + // Help->About + if (id == "main_about") +Index: SLADE-3.1.12/src/MapEditor/UI/MapEditorWindow.cpp +=================================================================== +--- SLADE-3.1.12.orig/src/MapEditor/UI/MapEditorWindow.cpp ++++ SLADE-3.1.12/src/MapEditor/UI/MapEditorWindow.cpp +@@ -269,7 +269,9 @@ void MapEditorWindow::setupMenu() + // Tools menu + wxMenu* menu_tools = new wxMenu(""); + menu_scripts_ = new wxMenu(); ++#ifdef USE_LUA + ScriptManager::populateEditorScriptMenu(menu_scripts_, ScriptManager::ScriptType::Map, "mapw_script"); ++#endif + menu_tools->AppendSubMenu(menu_scripts_, "Run Script"); + SAction::fromId("mapw_runscript")->addToMenu(menu_tools); + menu->Append(menu_tools, "&Tools"); +@@ -1136,7 +1138,9 @@ void MapEditorWindow::reloadScriptsMenu( + while (menu_scripts_->FindItemByPosition(0)) + menu_scripts_->Delete(menu_scripts_->FindItemByPosition(0)); + ++#ifdef USE_LUA + ScriptManager::populateEditorScriptMenu(menu_scripts_, ScriptManager::ScriptType::Map, "mapw_script"); ++#endif + } + + // ---------------------------------------------------------------------------- +@@ -1436,6 +1440,7 @@ bool MapEditorWindow::handleAction(strin + return true; + } + ++#ifdef USE_LUA + // Tools->Run Script + else if (id == "mapw_script") + { +@@ -1449,6 +1454,7 @@ bool MapEditorWindow::handleAction(strin + ScriptManager::open(); + return true; + } ++#endif + + return false; + } diff --git a/0001-build-allow-deactivating-the-crash-handler-at-build-.patch b/0001-build-allow-deactivating-the-crash-handler-at-build-.patch new file mode 100644 index 0000000..4656521 --- /dev/null +++ b/0001-build-allow-deactivating-the-crash-handler-at-build-.patch @@ -0,0 +1,52 @@ +From 519a5a5f87527a344ab04efa0947d5d8e75294e5 Mon Sep 17 00:00:00 2001 +From: Jan Engelhardt +Date: Sun, 28 Jun 2020 12:38:40 +0200 +Subject: [PATCH] build: allow deactivating the crash handler at build time + (#1166) + +SLADE's own crash handler has two problems: + + * it inhibits the generation of a proper crashdump + + * it calls functions that not async-signal safe and/or re-entrant, + such as malloc (by way of backtrace(3)), which can lead to a hang + when the initial crash happened in malloc, + +Fixes: #1166 +--- + COMPILE.md | 1 + + src/Application/SLADEWxApp.cpp | 2 +- + src/CMakeLists.txt | 4 ++++ + 3 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/Application/SLADEWxApp.cpp b/src/Application/SLADEWxApp.cpp +index 375f62b8..d9196355 100644 +--- a/src/Application/SLADEWxApp.cpp ++++ b/src/Application/SLADEWxApp.cpp +@@ -523,7 +523,7 @@ bool SLADEWxApp::OnInit() + #endif + + // Handle exceptions using wxDebug stuff, but only in release mode +-#ifdef NDEBUG ++#if defined(USE_CRASHHANDLER) && defined(NDEBUG) + wxHandleFatalExceptions(true); + #endif + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 4ce2403d..5eabe4c7 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -132,6 +132,10 @@ if (NOT NO_FLUIDSYNTH) + include_directories(${FLUIDSYNTH_INCLUDE_DIR}) + endif() + ++if (NOT NO_CRASHHANDLER) ++ add_definitions(-DUSE_CRASHHANDLER) ++endif () ++ + set(SLADE_SOURCES + ) + # Don't include external libraries here as they should be compiled separately +-- +2.27.0 + diff --git a/clzma.diff b/clzma.diff new file mode 100644 index 0000000..535b786 --- /dev/null +++ b/clzma.diff @@ -0,0 +1,24 @@ +From: Jan Engelhardt +Date: 2020-06-22 21:16:10.343429323 +0200 + +Make use of the clzma library in openSUSE. +--- + src/External/CMakeLists.txt | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +Index: SLADE-3.1.12/src/External/CMakeLists.txt +=================================================================== +--- SLADE-3.1.12.orig/src/External/CMakeLists.txt ++++ SLADE-3.1.12/src/External/CMakeLists.txt +@@ -26,10 +26,9 @@ file(GLOB_RECURSE EXTERNAL_SOURCES + *.cxx + dumb/*.c + lua/*.c +- lzma/C/LzmaDec.c + ${SLADE_HEADERS} + ) + + add_library(external STATIC ${EXTERNAL_SOURCES}) +-target_link_libraries(external ${ZLIB_LIBRARY} ${wxWidgets_LIBRARIES}) ++target_link_libraries(external ${ZLIB_LIBRARY} ${wxWidgets_LIBRARIES} -lclzma) + set(EXTERNAL_LIBRARIES external PARENT_SCOPE) diff --git a/slade.changes b/slade.changes index 1492812..dae0559 100644 --- a/slade.changes +++ b/slade.changes @@ -1,3 +1,22 @@ +------------------------------------------------------------------- +Sun Oct 11 09:18:41 UTC 2020 - Jan Engelhardt + +- Disable Lua bindings as those fail to build +- Add 0001-build-add-cmake-option-to-skip-Lua-components-1175.patch + for Factory. + +------------------------------------------------------------------- +Sun Jun 28 10:44:36 UTC 2020 - Jan Engelhardt + +- Add 0001-build-allow-deactivating-the-crash-handler-at-build-.patch + Deactivate the crash handler, because it hangs. Let the kernel + generate a standard dump instead. + +------------------------------------------------------------------- +Mon Jun 22 20:16:13 UTC 2020 - Jan Engelhardt + +- Add clzma.diff to use system-provided clzma library. + ------------------------------------------------------------------- Tue May 26 08:26:11 UTC 2020 - Jan Engelhardt diff --git a/slade.spec b/slade.spec index 7a23529..6503eb2 100644 --- a/slade.spec +++ b/slade.spec @@ -28,16 +28,21 @@ Source2: slade.desktop Source100: slade.appdata.xml Patch1: basepk3.diff Patch2: wx.diff +Patch3: clzma.diff +Patch4: 0001-build-allow-deactivating-the-crash-handler-at-build-.patch Patch10: disable_sse.patch +Patch11: 0001-build-add-cmake-option-to-skip-Lua-components-1175.patch +# slade 3.2 will need gcc-c++>=8 and pkgconfig(fmt)>=6 BuildRequires: ImageMagick BuildRequires: cmake >= 3.1 BuildRequires: freeimage-devel BuildRequires: gcc-c++ >= 6 -BuildRequires: pkgconfig +BuildRequires: pkg-config BuildRequires: strip-nondeterminism BuildRequires: update-desktop-files BuildRequires: wxWidgets-3_0-devel BuildRequires: zip +BuildRequires: pkgconfig(clzma) BuildRequires: pkgconfig(fluidsynth) BuildRequires: pkgconfig(ftgl) BuildRequires: pkgconfig(gl) @@ -45,24 +50,31 @@ BuildRequires: pkgconfig(glew) BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(sfml-all) BuildRequires: pkgconfig(x11) +Provides: bundled(dumb) = 0.9.3 %description -SLADE3 is an editor for Doom-engine based games and source +SLADE is an editor for Doom-engine based games and source ports. It has the ability to view, modify, and write many different game-specific formats, and even convert between some of them, or from/to other generic formats such as PNG. %prep %setup -q -n SLADE-%version -%patch -P 1 -P 2 -p1 +%patch -P 1 -P 2 -P 3 -P 4 -p1 %ifnarch %ix86 x86_64 %patch10 -p0 %endif +%if 0%{?suse_version} >= 1550 +%patch -P 11 -p1 +%endif %build %define _lto_cflags %nil -%cmake -DNO_WEBVIEW=ON -DWX_GTK3=OFF -make %{?_smp_mflags} +%cmake -DNO_WEBVIEW=ON -DWX_GTK3=OFF -DNO_CRASHHANDLER=ON \ + -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING="%optflags" \ + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="%optflags" \ + -DNO_LUA:BOOL=TRUE +%cmake_build %install strip-nondeterminism build/slade.pk3 @@ -75,10 +87,10 @@ install -Dpm0644 "%name.png" "$b/%_datadir/pixmaps/%name.png" install -Dpm0644 %{SOURCE100} "$b/%_datadir/appdata/%name.appdata.xml" pushd misc -for txtfile in detect_functions.txt old-simage-formats.txt stuff.txt udmf11.txt \ - udmf_zdoom.txt usdf.txt usdf_zdoom.txt +for txtfile in detect_functions.txt old-simage-formats.txt stuff.txt \ + udmf11.txt udmf_zdoom.txt usdf.txt usdf_zdoom.txt do - install -Dm644 $txtfile "$b/%_datadir/slade3/misc/$txtfile" + install -Dm644 "$txtfile" "$b/%_datadir/slade3/misc/$txtfile" done popd