[Buildroot] [PATCH v3 1/1] package: add smpq and stormlib

Gleb Mazovetskiy glex.spb at gmail.com
Mon Oct 11 21:02:41 UTC 2021


SMPQ is a utility for working with Blizzard MPQ archives and StormLib is
the library for doing this that it depends on.

SMPQ/StormLib is a runtime and/or build-time dependency of several
source ports / reimplementations of Blizzard games, such as DevilutionX.

These packages are already available in other distros, such as Debian.

Signed-off-by: Gleb Mazovetskiy <glex.spb at gmail.com>

---
Changes v2 -> v3:

  - Added missing patch files.

Changes v1 -> v2 (Sugested by Yann E. MORIN):

  - Converted sed substitutions to patch files.
  - Re-ordered mk variables per the suggested ordered.

Signed-off-by: Gleb Mazovetskiy <glex.spb at gmail.com>
---
 package/Config.in                             |  2 +
 .../smpq/0001-CMake-Set-language-to-C.patch   | 29 +++++++++++++++
 .../0002-CMake-Disable-version-check.patch    | 32 ++++++++++++++++
 ...0003-CMake-Disable-manual-generation.patch | 37 +++++++++++++++++++
 package/smpq/Config.in                        | 11 ++++++
 package/smpq/smpq.hash                        |  3 ++
 package/smpq/smpq.mk                          | 19 ++++++++++
 package/stormlib/Config.in                    |  8 ++++
 package/stormlib/stormlib.hash                |  3 ++
 package/stormlib/stormlib.mk                  | 16 ++++++++
 10 files changed, 160 insertions(+)
 create mode 100644 package/smpq/0001-CMake-Set-language-to-C.patch
 create mode 100644 package/smpq/0002-CMake-Disable-version-check.patch
 create mode 100644 package/smpq/0003-CMake-Disable-manual-generation.patch
 create mode 100644 package/smpq/Config.in
 create mode 100644 package/smpq/smpq.hash
 create mode 100644 package/smpq/smpq.mk
 create mode 100644 package/stormlib/Config.in
 create mode 100644 package/stormlib/stormlib.hash
 create mode 100644 package/stormlib/stormlib.mk

diff --git a/package/Config.in b/package/Config.in
index 9fed0ab4cb..890a6be135 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -74,6 +74,7 @@ menu "Compressors and decompressors"
 	source "package/p7zip/Config.in"
 	source "package/pigz/Config.in"
 	source "package/pixz/Config.in"
+	source "package/smpq/Config.in"
 	source "package/unrar/Config.in"
 	source "package/unzip/Config.in"
 	source "package/xz/Config.in"
@@ -1360,6 +1361,7 @@ menu "Compression and decompression"
 	source "package/lzo/Config.in"
 	source "package/minizip/Config.in"
 	source "package/snappy/Config.in"
+	source "package/stormlib/Config.in"
 	source "package/szip/Config.in"
 	source "package/zlib/Config.in"
 	source "package/zziplib/Config.in"
diff --git a/package/smpq/0001-CMake-Set-language-to-C.patch b/package/smpq/0001-CMake-Set-language-to-C.patch
new file mode 100644
index 0000000000..30624cc590
--- /dev/null
+++ b/package/smpq/0001-CMake-Set-language-to-C.patch
@@ -0,0 +1,29 @@
+From 70e43a4323f43d58a1b6c21bf251e7e8fe4cb345 Mon Sep 17 00:00:00 2001
+From: Gleb Mazovetskiy <glex.spb at gmail.com>
+Date: Mon, 11 Oct 2021 21:48:00 +0100
+Subject: [PATCH 1/3] CMake: Set language to C++
+
+Signed-off-by: Gleb Mazovetskiy <glex.spb at gmail.com>
+---
+ CMakeLists.txt | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 291bf7f..71fb61f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -18,6 +18,11 @@
+ #
+ 
+ project(SMPQ)
++
++# StormLib is C++ and must be linked with a C++ linker (e.g. via g++ instead of gcc).
++file(GLOB_RECURSE CFILES "${CMAKE_SOURCE_DIR}/*.c")
++SET_SOURCE_FILES_PROPERTIES(${CFILES} PROPERTIES LANGUAGE CXX)
++
+ set(VERSION 1.6)
+ cmake_minimum_required(VERSION 2.6)
+ 
+-- 
+2.30.2
+
diff --git a/package/smpq/0002-CMake-Disable-version-check.patch b/package/smpq/0002-CMake-Disable-version-check.patch
new file mode 100644
index 0000000000..6333595849
--- /dev/null
+++ b/package/smpq/0002-CMake-Disable-version-check.patch
@@ -0,0 +1,32 @@
+From bce50c41d461dc53d304cd41efc561bc9fa01327 Mon Sep 17 00:00:00 2001
+From: Gleb Mazovetskiy <glex.spb at gmail.com>
+Date: Mon, 11 Oct 2021 21:48:32 +0100
+Subject: [PATCH 2/3] CMake: Disable version check
+
+Version check is currently broken. Disable it.
+
+Signed-off-by: Gleb Mazovetskiy <glex.spb at gmail.com>
+---
+ CMakeLists.txt | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 71fb61f..2375b36 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -46,12 +46,6 @@ if(NOT STORMLIB_INCLUDE_DIR OR NOT STORMLIB_LIBRARY)
+ 		message(FATAL_ERROR "StormLib or storm library not found")
+ 	endif(NOT STORMLIB_LIBRARY)
+
+-	try_compile(CHECK ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/check.c COMPILE_DEFINITIONS -I${STORMLIB_INCLUDE_DIR})
+-
+-	if(NOT CHECK)
+-		message(FATAL_ERROR "Found old StormLib version")
+-	endif(NOT CHECK)
+-
+ 	message(STATUS "Found StormLib header: ${STORMLIB_INCLUDE_DIR}/StormLib.h")
+ 	message(STATUS "Found StormLib library: ${STORMLIB_LIBRARY}")
+
+--
+2.30.2
+
diff --git a/package/smpq/0003-CMake-Disable-manual-generation.patch b/package/smpq/0003-CMake-Disable-manual-generation.patch
new file mode 100644
index 0000000000..c293237cc9
--- /dev/null
+++ b/package/smpq/0003-CMake-Disable-manual-generation.patch
@@ -0,0 +1,37 @@
+From 6102660ba5ad0e8217e617fc53a6fc3d1bb12966 Mon Sep 17 00:00:00 2001
+From: Gleb Mazovetskiy <glex.spb at gmail.com>
+Date: Mon, 11 Oct 2021 21:49:57 +0100
+Subject: [PATCH 3/3] CMake: Disable manual generation
+
+We do not need the manual in buildroot and there is currently no
+dedicated way to disable it.
+
+Signed-off-by: Gleb Mazovetskiy <glex.spb at gmail.com>
+---
+ CMakeLists.txt | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2375b36..3a8b7c2 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -101,16 +101,6 @@ if(WITH_CMD)
+ 
+ 	install(TARGETS smpq DESTINATION bin)
+ 
+-	if(NOT CMAKE_CROSSCOMPILING)
+-
+-		add_executable(mangen ${MANGEN_SRCS})
+-		add_custom_command(OUTPUT smpq.1 COMMAND mangen > smpq.1 DEPENDS mangen)
+-		add_custom_target(man ALL DEPENDS smpq.1)
+-
+-		install(FILES ${CMAKE_CURRENT_BINARY_DIR}/smpq.1 DESTINATION share/man/man1)
+-
+-	endif(NOT CMAKE_CROSSCOMPILING)
+-
+ 	if(WIN32 AND WITH_NSIS)
+ 
+ 		find_package(SelfPackers REQUIRED)
+-- 
+2.30.2
+
diff --git a/package/smpq/Config.in b/package/smpq/Config.in
new file mode 100644
index 0000000000..589f5cf834
--- /dev/null
+++ b/package/smpq/Config.in
@@ -0,0 +1,11 @@
+config BR2_PACKAGE_SMPQ
+	bool "smpq"
+	select BR2_PACKAGE_SMPQ
+	help
+	  StormLib MPQ archiving utility
+
+	  This utility manipulates Blizzard MPQ archives.
+	  It supports extracting, appending, renaming and deleting files
+	  in MPQ archives, and creating new MPQ archives.
+
+	  https://launchpad.net/smpq
diff --git a/package/smpq/smpq.hash b/package/smpq/smpq.hash
new file mode 100644
index 0000000000..f14eaef49b
--- /dev/null
+++ b/package/smpq/smpq.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256  b5d2dc8a5de8629b71ee5d3612b6e84d88418b86c5cd39ba315e9eb0462f18cb  smpq_1.6.orig.tar.gz
+sha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING
diff --git a/package/smpq/smpq.mk b/package/smpq/smpq.mk
new file mode 100644
index 0000000000..34f87f7f45
--- /dev/null
+++ b/package/smpq/smpq.mk
@@ -0,0 +1,19 @@
+################################################################################
+#
+# smpq
+#
+################################################################################
+
+SMPQ_VERSION = 1.6
+SMPQ_SOURCE = smpq_$(SMPQ_VERSION).orig.tar.gz
+SMPQ_SITE = https://launchpad.net/smpq/trunk/$(SMPQ_VERSION)/+download
+SMPQ_LICENSE = GPL-3.0+
+SMPQ_LICENSE_FILES = LICENSE
+SMPQ_DEPENDENCIES = stormlib
+HOST_SMPQ_DEPENDENCIES = host-stormlib
+SMPQ_CONF_OPTS += -DWITH_KDE=OFF
+HOST_SMPQ_CONF_OPTS += -DWITH_KDE=OFF
+SMPQ_INSTALL_STAGING = YES
+
+$(eval $(cmake-package))
+$(eval $(host-cmake-package))
diff --git a/package/stormlib/Config.in b/package/stormlib/Config.in
new file mode 100644
index 0000000000..b2e4df3c62
--- /dev/null
+++ b/package/stormlib/Config.in
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_STORMLIB
+	bool "stormlib"
+	select BR2_PACKAGE_BZIP2
+	select BR2_PACKAGE_ZLIB
+	help
+	  StormLib is a library that reads and writes Blizzard MPQ archives.
+
+	  https://github.com/ladislav-zezula/StormLib
diff --git a/package/stormlib/stormlib.hash b/package/stormlib/stormlib.hash
new file mode 100644
index 0000000000..dc5370b03d
--- /dev/null
+++ b/package/stormlib/stormlib.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256  53b8befda3855a922e57a27f78c36feba7e9a32804da4b6592a3670c4e9cec98  stormlib-5ab093b7a57b8779dff06a08fac19d46c40b3329.tar.gz
+sha256  50b128e6750ed9d887e7a5748a6021238bb2f3bf34a5dd2768c410d932069e35  LICENSE
diff --git a/package/stormlib/stormlib.mk b/package/stormlib/stormlib.mk
new file mode 100644
index 0000000000..f2f7522002
--- /dev/null
+++ b/package/stormlib/stormlib.mk
@@ -0,0 +1,16 @@
+################################################################################
+#
+# stormlib
+#
+################################################################################
+
+STORMLIB_VERSION = 5ab093b7a57b8779dff06a08fac19d46c40b3329
+STORMLIB_SITE = $(call github,ladislav-zezula,StormLib,$(STORMLIB_VERSION))
+STORMLIB_LICENSE = MIT
+STORMLIB_LICENSE_FILES = LICENSE
+STORMLIB_DEPENDENCIES = zlib bzip2
+HOST_STORMLIB_DEPENDENCIES = host-zlib host-bzip2
+STORMLIB_INSTALL_STAGING = YES
+
+$(eval $(cmake-package))
+$(eval $(host-cmake-package))
-- 
2.30.2



More information about the buildroot mailing list