Skip to content

Commit

Permalink
[new package] luanti 5.11.0
Browse files Browse the repository at this point in the history
  • Loading branch information
podsvirov committed Mar 9, 2025
1 parent 36eec35 commit 5ba468e
Show file tree
Hide file tree
Showing 2 changed files with 211 additions and 0 deletions.
51 changes: 51 additions & 0 deletions mingw-w64-luanti/0001-luanti-5.11.0-install-as-unix.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
diff -Naur luanti-5.11.0.orig/CMakeLists.txt luanti-5.11.0/CMakeLists.txt
--- luanti-5.11.0.orig/CMakeLists.txt 2025-03-10 01:29:22.793169700 +0300
+++ luanti-5.11.0/CMakeLists.txt 2025-03-10 01:29:40.614933400 +0300
@@ -139,7 +139,7 @@

# Installation

-if(WIN32)
+if(WIN32 AND FALSE)
set(SHAREDIR ".")
set(BINDIR "bin")
set(DOCDIR "doc")
@@ -153,7 +153,7 @@
set(DOCDIR "${SHAREDIR}/${PROJECT_NAME}")
set(EXAMPLE_CONF_DIR ${DOCDIR})
set(LOCALEDIR "${SHAREDIR}/locale")
-elseif(UNIX) # Linux, BSD etc
+elseif(UNIX OR TRUE) # Linux, BSD etc
if(RUN_IN_PLACE)
set(SHAREDIR ".")
set(BINDIR "bin")
@@ -260,7 +260,7 @@
install(FILES "doc/world_format.md" DESTINATION "${DOCDIR}" COMPONENT "Docs")
install(FILES "minetest.conf.example" DESTINATION "${EXAMPLE_CONF_DIR}")

-if(UNIX AND NOT APPLE)
+if(UNIX OR TRUE)
install(FILES "doc/luanti.6" "doc/luantiserver.6" DESTINATION "${MANDIR}/man6")
install(FILES "misc/net.minetest.minetest.desktop" DESTINATION "${XDG_APPS_DIR}")
install(FILES "misc/net.minetest.minetest.metainfo.xml" DESTINATION "${METAINFODIR}")
@@ -314,7 +314,7 @@
DESCRIPTION "Documentation about ${PROJECT_NAME_CAPITALIZED} and ${PROJECT_NAME_CAPITALIZED} modding"
)

-if(WIN32)
+if(WIN32 AND FALSE)
# Include all dynamically linked runtime libraries such as MSVCRxxx.dll
include(InstallRequiredSystemLibraries)

diff -Naur luanti-5.11.0.orig/src/porting.cpp luanti-5.11.0/src/porting.cpp
--- luanti-5.11.0.orig/src/porting.cpp 2025-03-10 01:29:20.011816900 +0300
+++ luanti-5.11.0/src/porting.cpp 2025-03-10 01:34:56.160046100 +0300
@@ -435,7 +435,7 @@
std::string exepath(buf);

// Use ".\bin\.."
- path_share = exepath + "\\..";
+ path_share = exepath + DIR_DELIM ".." DIR_DELIM "share" DIR_DELIM + PROJECT_NAME;
if (detectMSVCBuildDir(exepath)) {
// The msvc build dir schould normaly not be present if properly installed,
// but its useful for debugging.
160 changes: 160 additions & 0 deletions mingw-w64-luanti/PKGBUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
# Maintainer: Konstantin Podsvirov <[email protected]>

_realname=luanti
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
"${MINGW_PACKAGE_PREFIX}-${_realname}-common"
"${MINGW_PACKAGE_PREFIX}-${_realname}-server")
pkgver=5.11.0
pkgrel=1
pkgdesc='Multiplayer infinite-world block sandbox game (mingw-w64)'
arch=('any')
mingw_arch=('clang64' 'clangarm64')
url='https://www.luanti.org/'
msys2_repository_url='https://github.com/luanti-org/luanti'
license=('spdx:LGPL')
makedepends=("${MINGW_PACKAGE_PREFIX}-sqlite"
"${MINGW_PACKAGE_PREFIX}-freetype"
"${MINGW_PACKAGE_PREFIX}-leveldb"
"${MINGW_PACKAGE_PREFIX}-postgresql"
"${MINGW_PACKAGE_PREFIX}-spatialindex"
"${MINGW_PACKAGE_PREFIX}-openal"
"${MINGW_PACKAGE_PREFIX}-libvorbis"
"${MINGW_PACKAGE_PREFIX}-curl"
"${MINGW_PACKAGE_PREFIX}-hicolor-icon-theme"
"${MINGW_PACKAGE_PREFIX}-hiredis"
"${MINGW_PACKAGE_PREFIX}-luajit"
"${MINGW_PACKAGE_PREFIX}-jsoncpp"
"${MINGW_PACKAGE_PREFIX}-libjpeg-turbo"
"${MINGW_PACKAGE_PREFIX}-cmake"
"${MINGW_PACKAGE_PREFIX}-ninja"
"${MINGW_PACKAGE_PREFIX}-cc")
source=("${msys2_repository_url}/archive/${pkgver}/${_realname}-${pkgver}.tar.gz"
'0001-luanti-5.11.0-install-as-unix.patch')
noextract=("${_realname}-${pkgver}.tar.gz")
sha256sums=('70e531d0776988ce6e579ea5490fdf6be3e349a4ade5281f5111aa4fdd8ee510'
'67d0e5332eb77bec4337c0b6b367b859b691e9552c3520f8eeeb532aae42f015')

prepare() {
tar -xf "${_realname}-${pkgver}.tar.gz" || true

cd "${_realname}-${pkgver}"

patch -Np1 -i "${srcdir}"/0001-luanti-5.11.0-install-as-unix.patch
}

build() {
declare -a extra_config
if check_option "debug" "n"; then
extra_config+=("-DCMAKE_BUILD_TYPE=Release")
else
extra_config+=("-DCMAKE_BUILD_TYPE=Debug")
fi
extra_config+=("-DRUN_IN_PLACE=OFF")

MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
cmake \
-GNinja \
-DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \
"${extra_config[@]}" \
-DBUILD_{SHARED,STATIC}_LIBS=ON \
-DBUILD_CLIENT=ON \
-DENABLE_GETTEXT=ON \
-DENABLE_LEVELDB=OFF \
-DENABLE_POSTGRESQL=ON \
-DENABLE_SPATIAL=ON \
-DENABLE_REDIS=OFF \
-S "${_realname}-${pkgver}" \
-B "build-${MSYSTEM}-client"

cmake --build "build-${MSYSTEM}-client"

MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
cmake \
-GNinja \
-DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \
"${extra_config[@]}" \
-DBUILD_{SHARED,STATIC}_LIBS=ON \
-DBUILD_CLIENT=OFF \
-DBUILD_SERVER=ON \
-DENABLE_LEVELDB=ON \
-DENABLE_POSTGRESQL=ON \
-DENABLE_SPATIAL=ON \
-DENABLE_REDIS=ON \
-S "${_realname}-${pkgver}" \
-B "build-${MSYSTEM}-server"

cmake --build "build-${MSYSTEM}-server"
}

package_luanti() {
depends=("${MINGW_PACKAGE_PREFIX}-luanti-common=${pkgver}"
"${MINGW_PACKAGE_PREFIX}-sqlite"
"${MINGW_PACKAGE_PREFIX}-freetype"
"${MINGW_PACKAGE_PREFIX}-postgresql"
"${MINGW_PACKAGE_PREFIX}-spatialindex"
"${MINGW_PACKAGE_PREFIX}-openal"
"${MINGW_PACKAGE_PREFIX}-libvorbis"
"${MINGW_PACKAGE_PREFIX}-curl"
"${MINGW_PACKAGE_PREFIX}-hicolor-icon-theme"
"${MINGW_PACKAGE_PREFIX}-luajit"
"${MINGW_PACKAGE_PREFIX}-jsoncpp"
"${MINGW_PACKAGE_PREFIX}-libjpeg-turbo")

DESTDIR="${pkgdir}" cmake --install "build-${MSYSTEM}-client"

rm "${pkgdir}${MINGW_PREFIX}"/bin/libcurl-4.dll
rm -rf "${pkgdir}${MINGW_PREFIX}/share"/{luanti,doc}
rm "${pkgdir}${MINGW_PREFIX}"/share/man/man6/luantiserver.6

install -Dm644 "${srcdir}/${_realname}-${pkgver}/LICENSE.txt" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE.txt"
}

package_luanti-server() {
pkgdesc='Server of infinite-world block sandbox game (mingw-w64)'
depends=("${MINGW_PACKAGE_PREFIX}-luanti-common=${pkgver}"
"${MINGW_PACKAGE_PREFIX}-sqlite"
"${MINGW_PACKAGE_PREFIX}-leveldb"
"${MINGW_PACKAGE_PREFIX}-postgresql"
"${MINGW_PACKAGE_PREFIX}-spatialindex"
"${MINGW_PACKAGE_PREFIX}-curl"
"${MINGW_PACKAGE_PREFIX}-luajit"
"${MINGW_PACKAGE_PREFIX}-jsoncpp"
"${MINGW_PACKAGE_PREFIX}-hiredis")

DESTDIR="${pkgdir}" cmake --install "build-${MSYSTEM}-server"

rm "${pkgdir}${MINGW_PREFIX}"/bin/libcurl-4.dll
rm -rf "${pkgdir}${MINGW_PREFIX}"/share/{luanti,metainfo,appdata,applications,icons,doc}
rm "${pkgdir}${MINGW_PREFIX}"/share/man/man6/luanti.6

install -Dm644 "${srcdir}/${_realname}-${pkgver}/LICENSE.txt" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}-server/LICENSE.txt"
}

package_luanti-common() {
pkgdesc='Common data files for luanti and luanti-server (mingw-w64)'

cd "${_realname}-${pkgver}"

install -d "${pkgdir}${MINGW_PREFIX}"/share/luanti

cp -r builtin client fonts textures "${pkgdir}${MINGW_PREFIX}"/share/luanti/
cp -r "${srcdir}/build-${MSYSTEM}-client"/locale "${pkgdir}${MINGW_PREFIX}"/share/luanti/

for file in doc/{fst_api,lua_api,menu_lua_api,protocol,world_format}.*; do
install -Dm644 $file "${pkgdir}${MINGW_PREFIX}"/share/luanti/doc/$(basename $file)
done

install -Dm644 "${srcdir}/${_realname}-${pkgver}/LICENSE.txt" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}-common/LICENSE.txt"
}

# template start; name=mingw-w64-splitpkg-wrappers; version=1.0;
# vim: set ft=bash :

# generate wrappers
for _name in "${pkgname[@]}"; do
_short="package_${_name#${MINGW_PACKAGE_PREFIX}-}"
_func="$(declare -f "${_short}")"
eval "${_func/#${_short}/package_${_name}}"
done
# template end;

0 comments on commit 5ba468e

Please sign in to comment.