Accepting request 841069 from games:tools

- Disable Lua bindings as those fail to build

OBS-URL: https://build.opensuse.org/request/show/841069
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/slade?expand=0&rev=11
This commit is contained in:
Dominique Leuenberger 2020-10-12 11:59:08 +00:00 committed by Git OBS Bridge
commit c870977e9f
5 changed files with 346 additions and 8 deletions

View File

@ -0,0 +1,231 @@
From a54f12b4c29e949458949d5bede2f74b1aa8a34a Mon Sep 17 00:00:00 2001
From: jengelh <jengelh@inai.de>
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 <sirjuddington@gmail.com>
---
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<string>& 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<string>& 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;
}

View File

@ -0,0 +1,52 @@
From 519a5a5f87527a344ab04efa0947d5d8e75294e5 Mon Sep 17 00:00:00 2001
From: Jan Engelhardt <jengelh@inai.de>
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

24
clzma.diff Normal file
View File

@ -0,0 +1,24 @@
From: Jan Engelhardt <jengelh@inai.de>
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)

View File

@ -1,3 +1,22 @@
-------------------------------------------------------------------
Sun Oct 11 09:18:41 UTC 2020 - Jan Engelhardt <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- Add clzma.diff to use system-provided clzma library.
-------------------------------------------------------------------
Tue May 26 08:26:11 UTC 2020 - Jan Engelhardt <jengelh@inai.de>

View File

@ -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