aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorMinetest-j45 <55553015+Minetest-j45@users.noreply.github.com>2021-08-30 15:22:40 +0100
committerGitHub <noreply@github.com>2021-08-30 15:22:40 +0100
commit7824a4956bf489b4e2cc35e0c97272eee06be6ba (patch)
tree70243765dc1743a83596f9c6eec122fb417ef92c /util
parent607add326feb44e078b843464ce4a8de09f28743 (diff)
parent35445d24f425c6291a0580b468919ca83de716fd (diff)
downloaddragonfireclient-7824a4956bf489b4e2cc35e0c97272eee06be6ba.tar.xz
Merge pull request #1 from EliasFleckenstein03/master
update
Diffstat (limited to 'util')
-rwxr-xr-xutil/buildbot/buildwin32.sh153
-rwxr-xr-xutil/buildbot/buildwin64.sh144
-rw-r--r--util/buildbot/toolchain_i686-w64-mingw32-posix.cmake (renamed from util/buildbot/toolchain_i586-mingw32msvc.cmake)10
-rw-r--r--util/buildbot/toolchain_i686-w64-mingw32.cmake (renamed from util/buildbot/toolchain_i646-w64-mingw32.cmake)0
-rwxr-xr-xutil/bump_version.sh22
-rwxr-xr-xutil/ci/clang-format.sh (renamed from util/ci/lint.sh)25
-rw-r--r--util/ci/common.sh15
-rw-r--r--util/ci/lint_autocorrect.sh45
-rwxr-xr-xutil/fix_format.sh5
-rwxr-xr-xutil/gather_git_credits.py67
-rwxr-xr-xutil/test_multiplayer.sh91
-rwxr-xr-xutil/updatepo.sh1
-rw-r--r--util/wireshark/minetest.lua35
13 files changed, 326 insertions, 287 deletions
diff --git a/util/buildbot/buildwin32.sh b/util/buildbot/buildwin32.sh
index a4238fbd8..1b0a997a8 100755
--- a/util/buildbot/buildwin32.sh
+++ b/util/buildbot/buildwin32.sh
@@ -4,9 +4,9 @@ set -e
CORE_GIT=https://github.com/EliasFleckenstein03/dragonfireclient
CORE_BRANCH=master
CORE_NAME=dragonfireclient
-GAME_GIT=https://git.minetest.land/Wuzzy/MineClone2
+GAME_GIT=https://git.minetest.land/MineClone2/MineClone2
GAME_BRANCH=master
-GAME_NAME=mineclone2
+GAME_NAME=MineClone2
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [ $# -ne 1 ]; then
@@ -16,12 +16,13 @@ fi
builddir=$1
mkdir -p $builddir
builddir="$( cd "$builddir" && pwd )"
-packagedir=$builddir/packages
libdir=$builddir/libs
# Test which win32 compiler is present
-which i586-mingw32msvc-windres &>/dev/null && toolchain_file=$dir/toolchain_i586-mingw32msvc.cmake
-which i686-w64-mingw32-windres &>/dev/null && toolchain_file=$dir/toolchain_i646-w64-mingw32.cmake
+which i686-w64-mingw32-gcc &>/dev/null &&
+ toolchain_file=$dir/toolchain_i686-w64-mingw32.cmake
+which i686-w64-mingw32-gcc-posix &>/dev/null &&
+ toolchain_file=$dir/toolchain_i686-w64-mingw32-posix.cmake
if [ -z "$toolchain_file" ]; then
echo "Unable to determine which mingw32 compiler to use"
@@ -29,86 +30,82 @@ if [ -z "$toolchain_file" ]; then
fi
echo "Using $toolchain_file"
-irrlicht_version=1.8.4
-ogg_version=1.3.2
-vorbis_version=1.3.5
-curl_version=7.65.3
+irrlicht_version=1.9.0mt1
+ogg_version=1.3.4
+vorbis_version=1.3.7
+curl_version=7.76.1
gettext_version=0.20.1
-freetype_version=2.10.1
-sqlite3_version=3.27.2
+freetype_version=2.10.4
+sqlite3_version=3.35.5
luajit_version=2.1.0-beta3
-leveldb_version=1.22
+leveldb_version=1.23
zlib_version=1.2.11
-mkdir -p $packagedir
mkdir -p $libdir
-cd $builddir
+download () {
+ local url=$1
+ local filename=$2
+ [ -z "$filename" ] && filename=${url##*/}
+ local foldername=${filename%%[.-]*}
+ local extract=$3
+ [ -z "$extract" ] && extract=unzip
+
+ [ -d "./$foldername" ] && return 0
+ wget "$url" -c -O "./$filename"
+ if [ "$extract" = "unzip" ]; then
+ unzip -o "$filename" -d "$foldername"
+ elif [ "$extract" = "unzip_nofolder" ]; then
+ unzip -o "$filename"
+ else
+ return 1
+ fi
+}
# Get stuff
-[ -e $packagedir/irrlicht-$irrlicht_version.zip ] || wget http://minetest.kitsunemimi.pw/irrlicht-$irrlicht_version-win32.zip \
- -c -O $packagedir/irrlicht-$irrlicht_version.zip
-[ -e $packagedir/zlib-$zlib_version.zip ] || wget http://minetest.kitsunemimi.pw/zlib-$zlib_version-win32.zip \
- -c -O $packagedir/zlib-$zlib_version.zip
-[ -e $packagedir/libogg-$ogg_version.zip ] || wget http://minetest.kitsunemimi.pw/libogg-$ogg_version-win32.zip \
- -c -O $packagedir/libogg-$ogg_version.zip
-[ -e $packagedir/libvorbis-$vorbis_version.zip ] || wget http://minetest.kitsunemimi.pw/libvorbis-$vorbis_version-win32.zip \
- -c -O $packagedir/libvorbis-$vorbis_version.zip
-[ -e $packagedir/curl-$curl_version.zip ] || wget http://minetest.kitsunemimi.pw/curl-$curl_version-win32.zip \
- -c -O $packagedir/curl-$curl_version.zip
-[ -e $packagedir/gettext-$gettext_version.zip ] || wget http://minetest.kitsunemimi.pw/gettext-$gettext_version-win32.zip \
- -c -O $packagedir/gettext-$gettext_version.zip
-[ -e $packagedir/freetype2-$freetype_version.zip ] || wget http://minetest.kitsunemimi.pw/freetype2-$freetype_version-win32.zip \
- -c -O $packagedir/freetype2-$freetype_version.zip
-[ -e $packagedir/sqlite3-$sqlite3_version.zip ] || wget http://minetest.kitsunemimi.pw/sqlite3-$sqlite3_version-win32.zip \
- -c -O $packagedir/sqlite3-$sqlite3_version.zip
-[ -e $packagedir/luajit-$luajit_version.zip ] || wget http://minetest.kitsunemimi.pw/luajit-$luajit_version-win32.zip \
- -c -O $packagedir/luajit-$luajit_version.zip
-[ -e $packagedir/libleveldb-$leveldb_version.zip ] || wget http://minetest.kitsunemimi.pw/libleveldb-$leveldb_version-win32.zip \
- -c -O $packagedir/libleveldb-$leveldb_version.zip
-[ -e $packagedir/openal_stripped.zip ] || wget http://minetest.kitsunemimi.pw/openal_stripped.zip \
- -c -O $packagedir/openal_stripped.zip
-
-# Extract stuff
cd $libdir
-[ -d irrlicht ] || unzip -o $packagedir/irrlicht-$irrlicht_version.zip -d irrlicht
-[ -d zlib ] || unzip -o $packagedir/zlib-$zlib_version.zip -d zlib
-[ -d libogg ] || unzip -o $packagedir/libogg-$ogg_version.zip -d libogg
-[ -d libvorbis ] || unzip -o $packagedir/libvorbis-$vorbis_version.zip -d libvorbis
-[ -d libcurl ] || unzip -o $packagedir/curl-$curl_version.zip -d libcurl
-[ -d gettext ] || unzip -o $packagedir/gettext-$gettext_version.zip -d gettext
-[ -d freetype ] || unzip -o $packagedir/freetype2-$freetype_version.zip -d freetype
-[ -d sqlite3 ] || unzip -o $packagedir/sqlite3-$sqlite3_version.zip -d sqlite3
-[ -d openal_stripped ] || unzip -o $packagedir/openal_stripped.zip
-[ -d luajit ] || unzip -o $packagedir/luajit-$luajit_version.zip -d luajit
-[ -d leveldb ] || unzip -o $packagedir/libleveldb-$leveldb_version.zip -d leveldb
-
-# Get minetest
-cd $builddir
-if [ ! "x$EXISTING_MINETEST_DIR" = "x" ]; then
- cd /$EXISTING_MINETEST_DIR # must be absolute path
+download "https://github.com/minetest/irrlicht/releases/download/$irrlicht_version/win32.zip" irrlicht-$irrlicht_version.zip
+download "http://minetest.kitsunemimi.pw/zlib-$zlib_version-win32.zip"
+download "http://minetest.kitsunemimi.pw/libogg-$ogg_version-win32.zip"
+download "http://minetest.kitsunemimi.pw/libvorbis-$vorbis_version-win32.zip"
+download "http://minetest.kitsunemimi.pw/curl-$curl_version-win32.zip"
+download "http://minetest.kitsunemimi.pw/gettext-$gettext_version-win32.zip"
+download "http://minetest.kitsunemimi.pw/freetype2-$freetype_version-win32.zip" freetype-$freetype_version.zip
+download "http://minetest.kitsunemimi.pw/sqlite3-$sqlite3_version-win32.zip"
+download "http://minetest.kitsunemimi.pw/luajit-$luajit_version-win32.zip"
+download "http://minetest.kitsunemimi.pw/libleveldb-$leveldb_version-win32.zip" leveldb-$leveldb_version.zip
+download "http://minetest.kitsunemimi.pw/openal_stripped.zip" '' unzip_nofolder
+
+# Set source dir, downloading Minetest as needed
+if [ -n "$EXISTING_MINETEST_DIR" ]; then
+ sourcedir="$( cd "$EXISTING_MINETEST_DIR" && pwd )"
else
- [ -d $CORE_NAME ] && (cd $CORE_NAME && git pull) || (git clone -b $CORE_BRANCH $CORE_GIT)
- cd $CORE_NAME
+ sourcedir=$PWD/$CORE_NAME
+ [ -d $CORE_NAME ] && { pushd $CORE_NAME; git pull; popd; } || \
+ git clone -b $CORE_BRANCH $CORE_GIT $CORE_NAME
+ if [ -z "$NO_MINETEST_GAME" ]; then
+ [ -d games/$GAME_NAME ] && { pushd games/$GAME_NAME; git pull; popd; } || \
+ git clone -b $GAME_BRANCH $GAME_GIT games/$GAME_NAME
+ fi
fi
-git_hash=$(git rev-parse --short HEAD)
-# Get minetest_game
-if [ "x$NO_MINETEST_GAME" = "x" ]; then
- cd games
- [ -d $GAME_NAME ] && (cd $GAME_NAME && git pull) || (git clone -b $GAME_BRANCH $GAME_GIT)
- cd ..
-fi
+git_hash=$(cd $sourcedir && git rev-parse --short HEAD)
# Build the thing
-[ -d _build ] && rm -Rf _build/
-mkdir _build
-cd _build
-cmake .. \
+cd $builddir
+[ -d build ] && rm -rf build
+mkdir build
+cd build
+
+irr_dlls=$(echo $libdir/irrlicht/bin/*.dll | tr ' ' ';')
+vorbis_dlls=$(echo $libdir/libvorbis/bin/libvorbis{,file}-*.dll | tr ' ' ';')
+gettext_dlls=$(echo $libdir/gettext/bin/lib{intl,iconv}-*.dll | tr ' ' ';')
+
+cmake -S $sourcedir -B . \
+ -DCMAKE_TOOLCHAIN_FILE=$toolchain_file \
-DCMAKE_INSTALL_PREFIX=/tmp \
-DVERSION_EXTRA=$git_hash \
-DBUILD_CLIENT=1 -DBUILD_SERVER=0 \
- -DCMAKE_TOOLCHAIN_FILE=$toolchain_file \
\
-DENABLE_SOUND=1 \
-DENABLE_CURL=1 \
@@ -116,9 +113,9 @@ cmake .. \
-DENABLE_FREETYPE=1 \
-DENABLE_LEVELDB=1 \
\
- -DIRRLICHT_INCLUDE_DIR=$libdir/irrlicht/include \
- -DIRRLICHT_LIBRARY=$libdir/irrlicht/lib/Win32-gcc/libIrrlicht.dll.a \
- -DIRRLICHT_DLL=$libdir/irrlicht/bin/Win32-gcc/Irrlicht.dll \
+ -DIRRLICHT_INCLUDE_DIR=$libdir/irrlicht/include/irrlichtmt \
+ -DIRRLICHT_LIBRARY=$libdir/irrlicht/lib/libIrrlichtMt.dll.a \
+ -DIRRLICHT_DLL="$irr_dlls" \
\
-DZLIB_INCLUDE_DIR=$libdir/zlib/include \
-DZLIB_LIBRARIES=$libdir/zlib/lib/libz.dll.a \
@@ -133,21 +130,19 @@ cmake .. \
\
-DVORBIS_INCLUDE_DIR=$libdir/libvorbis/include \
-DVORBIS_LIBRARY=$libdir/libvorbis/lib/libvorbis.dll.a \
- -DVORBIS_DLL=$libdir/libvorbis/bin/libvorbis-0.dll \
+ -DVORBIS_DLL="$vorbis_dlls" \
-DVORBISFILE_LIBRARY=$libdir/libvorbis/lib/libvorbisfile.dll.a \
- -DVORBISFILE_DLL=$libdir/libvorbis/bin/libvorbisfile-3.dll \
\
-DOPENAL_INCLUDE_DIR=$libdir/openal_stripped/include/AL \
-DOPENAL_LIBRARY=$libdir/openal_stripped/lib/libOpenAL32.dll.a \
-DOPENAL_DLL=$libdir/openal_stripped/bin/OpenAL32.dll \
\
- -DCURL_DLL=$libdir/libcurl/bin/libcurl-4.dll \
- -DCURL_INCLUDE_DIR=$libdir/libcurl/include \
- -DCURL_LIBRARY=$libdir/libcurl/lib/libcurl.dll.a \
+ -DCURL_DLL=$libdir/curl/bin/libcurl-4.dll \
+ -DCURL_INCLUDE_DIR=$libdir/curl/include \
+ -DCURL_LIBRARY=$libdir/curl/lib/libcurl.dll.a \
\
-DGETTEXT_MSGFMT=`which msgfmt` \
- -DGETTEXT_DLL=$libdir/gettext/bin/libintl-8.dll \
- -DGETTEXT_ICONV_DLL=$libdir/gettext/bin/libiconv-2.dll \
+ -DGETTEXT_DLL="$gettext_dlls" \
-DGETTEXT_INCLUDE_DIR=$libdir/gettext/include \
-DGETTEXT_LIBRARY=$libdir/gettext/lib/libintl.dll.a \
\
@@ -166,7 +161,7 @@ cmake .. \
make -j$(nproc)
-[ "x$NO_PACKAGE" = "x" ] && make package
+[ -z "$NO_PACKAGE" ] && make package
exit 0
# EOF
diff --git a/util/buildbot/buildwin64.sh b/util/buildbot/buildwin64.sh
index 1b680cf5b..a352cc8db 100755
--- a/util/buildbot/buildwin64.sh
+++ b/util/buildbot/buildwin64.sh
@@ -4,9 +4,9 @@ set -e
CORE_GIT=https://github.com/EliasFleckenstein03/dragonfireclient
CORE_BRANCH=master
CORE_NAME=dragonfireclient
-GAME_GIT=https://git.minetest.land/Wuzzy/MineClone2
+GAME_GIT=https://git.minetest.land/MineClone2/MineClone2
GAME_BRANCH=master
-GAME_NAME=mineclone2
+GAME_NAME=MineClone2
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [ $# -ne 1 ]; then
@@ -16,87 +16,81 @@ fi
builddir=$1
mkdir -p $builddir
builddir="$( cd "$builddir" && pwd )"
-packagedir=$builddir/packages
libdir=$builddir/libs
toolchain_file=$dir/toolchain_x86_64-w64-mingw32.cmake
-irrlicht_version=1.8.4
-ogg_version=1.3.2
-vorbis_version=1.3.5
-curl_version=7.65.3
+irrlicht_version=1.9.0mt1
+ogg_version=1.3.4
+vorbis_version=1.3.7
+curl_version=7.76.1
gettext_version=0.20.1
-freetype_version=2.10.1
-sqlite3_version=3.27.2
+freetype_version=2.10.4
+sqlite3_version=3.35.5
luajit_version=2.1.0-beta3
-leveldb_version=1.22
+leveldb_version=1.23
zlib_version=1.2.11
-mkdir -p $packagedir
mkdir -p $libdir
-cd $builddir
-
-# Get stuff
-[ -e $packagedir/irrlicht-$irrlicht_version.zip ] || wget http://minetest.kitsunemimi.pw/irrlicht-$irrlicht_version-win64.zip \
- -c -O $packagedir/irrlicht-$irrlicht_version.zip
-[ -e $packagedir/zlib-$zlib_version.zip ] || wget http://minetest.kitsunemimi.pw/zlib-$zlib_version-win64.zip \
- -c -O $packagedir/zlib-$zlib_version.zip
-[ -e $packagedir/libogg-$ogg_version.zip ] || wget http://minetest.kitsunemimi.pw/libogg-$ogg_version-win64.zip \
- -c -O $packagedir/libogg-$ogg_version.zip
-[ -e $packagedir/libvorbis-$vorbis_version.zip ] || wget http://minetest.kitsunemimi.pw/libvorbis-$vorbis_version-win64.zip \
- -c -O $packagedir/libvorbis-$vorbis_version.zip
-[ -e $packagedir/curl-$curl_version.zip ] || wget http://minetest.kitsunemimi.pw/curl-$curl_version-win64.zip \
- -c -O $packagedir/curl-$curl_version.zip
-[ -e $packagedir/gettext-$gettext_version.zip ] || wget http://minetest.kitsunemimi.pw/gettext-$gettext_version-win64.zip \
- -c -O $packagedir/gettext-$gettext_version.zip
-[ -e $packagedir/freetype2-$freetype_version.zip ] || wget http://minetest.kitsunemimi.pw/freetype2-$freetype_version-win64.zip \
- -c -O $packagedir/freetype2-$freetype_version.zip
-[ -e $packagedir/sqlite3-$sqlite3_version.zip ] || wget http://minetest.kitsunemimi.pw/sqlite3-$sqlite3_version-win64.zip \
- -c -O $packagedir/sqlite3-$sqlite3_version.zip
-[ -e $packagedir/luajit-$luajit_version.zip ] || wget http://minetest.kitsunemimi.pw/luajit-$luajit_version-win64.zip \
- -c -O $packagedir/luajit-$luajit_version.zip
-[ -e $packagedir/libleveldb-$leveldb_version.zip ] || wget http://minetest.kitsunemimi.pw/libleveldb-$leveldb_version-win64.zip \
- -c -O $packagedir/libleveldb-$leveldb_version.zip
-[ -e $packagedir/openal_stripped.zip ] || wget http://minetest.kitsunemimi.pw/openal_stripped64.zip \
- -c -O $packagedir/openal_stripped.zip
+download () {
+ local url=$1
+ local filename=$2
+ [ -z "$filename" ] && filename=${url##*/}
+ local foldername=${filename%%[.-]*}
+ local extract=$3
+ [ -z "$extract" ] && extract=unzip
+ [ -d "./$foldername" ] && return 0
+ wget "$url" -c -O "./$filename"
+ if [ "$extract" = "unzip" ]; then
+ unzip -o "$filename" -d "$foldername"
+ elif [ "$extract" = "unzip_nofolder" ]; then
+ unzip -o "$filename"
+ else
+ return 1
+ fi
+}
-# Extract stuff
+# Get stuff
cd $libdir
-[ -d irrlicht ] || unzip -o $packagedir/irrlicht-$irrlicht_version.zip -d irrlicht
-[ -d zlib ] || unzip -o $packagedir/zlib-$zlib_version.zip -d zlib
-[ -d libogg ] || unzip -o $packagedir/libogg-$ogg_version.zip -d libogg
-[ -d libvorbis ] || unzip -o $packagedir/libvorbis-$vorbis_version.zip -d libvorbis
-[ -d libcurl ] || unzip -o $packagedir/curl-$curl_version.zip -d libcurl
-[ -d gettext ] || unzip -o $packagedir/gettext-$gettext_version.zip -d gettext
-[ -d freetype ] || unzip -o $packagedir/freetype2-$freetype_version.zip -d freetype
-[ -d sqlite3 ] || unzip -o $packagedir/sqlite3-$sqlite3_version.zip -d sqlite3
-[ -d openal_stripped ] || unzip -o $packagedir/openal_stripped.zip
-[ -d luajit ] || unzip -o $packagedir/luajit-$luajit_version.zip -d luajit
-[ -d leveldb ] || unzip -o $packagedir/libleveldb-$leveldb_version.zip -d leveldb
+download "https://github.com/minetest/irrlicht/releases/download/$irrlicht_version/win64.zip" irrlicht-$irrlicht_version.zip
+download "http://minetest.kitsunemimi.pw/zlib-$zlib_version-win64.zip"
+download "http://minetest.kitsunemimi.pw/libogg-$ogg_version-win64.zip"
+download "http://minetest.kitsunemimi.pw/libvorbis-$vorbis_version-win64.zip"
+download "http://minetest.kitsunemimi.pw/curl-$curl_version-win64.zip"
+download "http://minetest.kitsunemimi.pw/gettext-$gettext_version-win64.zip"
+download "http://minetest.kitsunemimi.pw/freetype2-$freetype_version-win64.zip" freetype-$freetype_version.zip
+download "http://minetest.kitsunemimi.pw/sqlite3-$sqlite3_version-win64.zip"
+download "http://minetest.kitsunemimi.pw/luajit-$luajit_version-win64.zip"
+download "http://minetest.kitsunemimi.pw/libleveldb-$leveldb_version-win64.zip" leveldb-$leveldb_version.zip
+download "http://minetest.kitsunemimi.pw/openal_stripped64.zip" 'openal_stripped.zip' unzip_nofolder
-# Get minetest
-cd $builddir
-if [ ! "x$EXISTING_MINETEST_DIR" = "x" ]; then
- cd /$EXISTING_MINETEST_DIR # must be absolute path
+# Set source dir, downloading Minetest as needed
+if [ -n "$EXISTING_MINETEST_DIR" ]; then
+ sourcedir="$( cd "$EXISTING_MINETEST_DIR" && pwd )"
else
- [ -d $CORE_NAME ] && (cd $CORE_NAME && git pull) || (git clone -b $CORE_BRANCH $CORE_GIT)
- cd $CORE_NAME
+ sourcedir=$PWD/$CORE_NAME
+ [ -d $CORE_NAME ] && { pushd $CORE_NAME; git pull; popd; } || \
+ git clone -b $CORE_BRANCH $CORE_GIT $CORE_NAME
+ if [ -z "$NO_MINETEST_GAME" ]; then
+ [ -d games/$GAME_NAME ] && { pushd games/$GAME_NAME; git pull; popd; } || \
+ git clone -b $GAME_BRANCH $GAME_GIT games/$GAME_NAME
+ fi
fi
-git_hash=$(git rev-parse --short HEAD)
-# Get minetest_game
-if [ "x$NO_MINETEST_GAME" = "x" ]; then
- cd games
- [ -d $GAME_NAME ] && (cd $GAME_NAME && git pull) || (git clone -b $GAME_BRANCH $GAME_GIT)
- cd ..
-fi
+git_hash=$(cd $sourcedir && git rev-parse --short HEAD)
# Build the thing
-[ -d _build ] && rm -Rf _build/
-mkdir _build
-cd _build
-cmake .. \
+cd $builddir
+[ -d build ] && rm -rf build
+mkdir build
+cd build
+
+irr_dlls=$(echo $libdir/irrlicht/bin/*.dll | tr ' ' ';')
+vorbis_dlls=$(echo $libdir/libvorbis/bin/libvorbis{,file}-*.dll | tr ' ' ';')
+gettext_dlls=$(echo $libdir/gettext/bin/lib{intl,iconv}-*.dll | tr ' ' ';')
+
+cmake -S $sourcedir -B . \
-DCMAKE_TOOLCHAIN_FILE=$toolchain_file \
-DCMAKE_INSTALL_PREFIX=/tmp \
-DVERSION_EXTRA=$git_hash \
@@ -108,9 +102,9 @@ cmake .. \
-DENABLE_FREETYPE=1 \
-DENABLE_LEVELDB=1 \
\
- -DIRRLICHT_INCLUDE_DIR=$libdir/irrlicht/include \
- -DIRRLICHT_LIBRARY=$libdir/irrlicht/lib/Win64-gcc/libIrrlicht.dll.a \
- -DIRRLICHT_DLL=$libdir/irrlicht/bin/Win64-gcc/Irrlicht.dll \
+ -DIRRLICHT_INCLUDE_DIR=$libdir/irrlicht/include/irrlichtmt \
+ -DIRRLICHT_LIBRARY=$libdir/irrlicht/lib/libIrrlichtMt.dll.a \
+ -DIRRLICHT_DLL="$irr_dlls" \
\
-DZLIB_INCLUDE_DIR=$libdir/zlib/include \
-DZLIB_LIBRARIES=$libdir/zlib/lib/libz.dll.a \
@@ -125,21 +119,19 @@ cmake .. \
\
-DVORBIS_INCLUDE_DIR=$libdir/libvorbis/include \
-DVORBIS_LIBRARY=$libdir/libvorbis/lib/libvorbis.dll.a \
- -DVORBIS_DLL=$libdir/libvorbis/bin/libvorbis-0.dll \
+ -DVORBIS_DLL="$vorbis_dlls" \
-DVORBISFILE_LIBRARY=$libdir/libvorbis/lib/libvorbisfile.dll.a \
- -DVORBISFILE_DLL=$libdir/libvorbis/bin/libvorbisfile-3.dll \
\
-DOPENAL_INCLUDE_DIR=$libdir/openal_stripped/include/AL \
-DOPENAL_LIBRARY=$libdir/openal_stripped/lib/libOpenAL32.dll.a \
-DOPENAL_DLL=$libdir/openal_stripped/bin/OpenAL32.dll \
\
- -DCURL_DLL=$libdir/libcurl/bin/libcurl-4.dll \
- -DCURL_INCLUDE_DIR=$libdir/libcurl/include \
- -DCURL_LIBRARY=$libdir/libcurl/lib/libcurl.dll.a \
+ -DCURL_DLL=$libdir/curl/bin/libcurl-4.dll \
+ -DCURL_INCLUDE_DIR=$libdir/curl/include \
+ -DCURL_LIBRARY=$libdir/curl/lib/libcurl.dll.a \
\
-DGETTEXT_MSGFMT=`which msgfmt` \
- -DGETTEXT_DLL=$libdir/gettext/bin/libintl-8.dll \
- -DGETTEXT_ICONV_DLL=$libdir/gettext/bin/libiconv-2.dll \
+ -DGETTEXT_DLL="$gettext_dlls" \
-DGETTEXT_INCLUDE_DIR=$libdir/gettext/include \
-DGETTEXT_LIBRARY=$libdir/gettext/lib/libintl.dll.a \
\
@@ -158,7 +150,7 @@ cmake .. \
make -j$(nproc)
-[ "x$NO_PACKAGE" = "x" ] && make package
+[ -z "$NO_PACKAGE" ] && make package
exit 0
# EOF
diff --git a/util/buildbot/toolchain_i586-mingw32msvc.cmake b/util/buildbot/toolchain_i686-w64-mingw32-posix.cmake
index 0eeefb84d..b5d9ba5c4 100644
--- a/util/buildbot/toolchain_i586-mingw32msvc.cmake
+++ b/util/buildbot/toolchain_i686-w64-mingw32-posix.cmake
@@ -2,12 +2,14 @@
SET(CMAKE_SYSTEM_NAME Windows)
# which compilers to use for C and C++
-SET(CMAKE_C_COMPILER i586-mingw32msvc-gcc)
-SET(CMAKE_CXX_COMPILER i586-mingw32msvc-g++)
-SET(CMAKE_RC_COMPILER i586-mingw32msvc-windres)
+# *-posix is Ubuntu's naming for the MinGW variant that comes with support
+# for pthreads / std::thread (required by MT)
+SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc-posix)
+SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++-posix)
+SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres)
# here is the target environment located
-SET(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc)
+SET(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32)
# adjust the default behaviour of the FIND_XXX() commands:
# search headers and libraries in the target environment, search
diff --git a/util/buildbot/toolchain_i646-w64-mingw32.cmake b/util/buildbot/toolchain_i686-w64-mingw32.cmake
index 015baa210..015baa210 100644
--- a/util/buildbot/toolchain_i646-w64-mingw32.cmake
+++ b/util/buildbot/toolchain_i686-w64-mingw32.cmake
diff --git a/util/bump_version.sh b/util/bump_version.sh
index 996962199..4b12935bd 100755
--- a/util/bump_version.sh
+++ b/util/bump_version.sh
@@ -21,14 +21,14 @@ prompt_for_number() {
# * Commit the changes
# * Tag with current version
perform_release() {
+ RELEASE_DATE=$(date +%Y-%m-%d)
+
sed -i -re "s/^set\(DEVELOPMENT_BUILD TRUE\)$/set(DEVELOPMENT_BUILD FALSE)/" CMakeLists.txt
+ sed -i 's/project.ext.set("versionExtra", "-dev")/project.ext.set("versionExtra", "")/' build/android/build.gradle
sed -i -re "s/\"versionCode\", [0-9]+/\"versionCode\", $NEW_ANDROID_VERSION_CODE/" build/android/build.gradle
sed -i '/\<release/s/\(version\)="[^"]*"/\1="'"$RELEASE_VERSION"'"/' misc/net.minetest.minetest.appdata.xml
-
- RELEASE_DATE=`date +%Y-%m-%d`
-
sed -i 's/\(<release date\)="[^"]*"/\1="'"$RELEASE_DATE"'"/' misc/net.minetest.minetest.appdata.xml
git add -f CMakeLists.txt build/android/build.gradle misc/net.minetest.minetest.appdata.xml
@@ -47,20 +47,24 @@ perform_release() {
back_to_devel() {
echo 'Creating "return back to development" commit'
+ # Update CMakeList.txt versions
sed -i -re 's/^set\(DEVELOPMENT_BUILD FALSE\)$/set(DEVELOPMENT_BUILD TRUE)/' CMakeLists.txt
-
sed -i -re "s/^set\(VERSION_MAJOR [0-9]+\)$/set(VERSION_MAJOR $NEXT_VERSION_MAJOR)/" CMakeLists.txt
-
sed -i -re "s/^set\(VERSION_MINOR [0-9]+\)$/set(VERSION_MINOR $NEXT_VERSION_MINOR)/" CMakeLists.txt
-
sed -i -re "s/^set\(VERSION_PATCH [0-9]+\)$/set(VERSION_PATCH $NEXT_VERSION_PATCH)/" CMakeLists.txt
- sed -i -re "1s/[0-9]+\.[0-9]+\.[0-9]+/$NEXT_VERSION/g" doc/menu_lua_api.txt
+ # Update Android versions
+ sed -i 's/set("versionExtra", "")/set("versionExtra", "-dev")/' build/android/build.gradle
+ sed -i -re "s/set\(\"versionMajor\", [0-9]+\)/set(\"versionMajor\", $NEXT_VERSION_MAJOR)/" build/android/build.gradle
+ sed -i -re "s/set\(\"versionMinor\", [0-9]+\)/set(\"versionMinor\", $NEXT_VERSION_MINOR)/" build/android/build.gradle
+ sed -i -re "s/set\(\"versionPatch\", [0-9]+\)/set(\"versionPatch\", $NEXT_VERSION_PATCH)/" build/android/build.gradle
+ # Update doc versions
+ sed -i -re "1s/[0-9]+\.[0-9]+\.[0-9]+/$NEXT_VERSION/g" doc/menu_lua_api.txt
sed -i -re "1s/[0-9]+\.[0-9]+\.[0-9]+/$NEXT_VERSION/g" doc/client_lua_api.txt
- git add -f CMakeLists.txt doc/menu_lua_api.txt doc/client_lua_api.txt
-
+ # Commit
+ git add -f CMakeLists.txt build/android/build.gradle doc/menu_lua_api.txt doc/client_lua_api.txt
git commit -m "Continue with $NEXT_VERSION-dev"
}
##################################
diff --git a/util/ci/lint.sh b/util/ci/clang-format.sh
index 395445ca7..89576c656 100755
--- a/util/ci/lint.sh
+++ b/util/ci/clang-format.sh
@@ -1,6 +1,6 @@
#! /bin/bash
-function perform_lint() {
- echo "Performing LINT..."
+
+function setup_for_format() {
if [ -z "${CLANG_FORMAT}" ]; then
CLANG_FORMAT=clang-format
fi
@@ -8,6 +8,12 @@ function perform_lint() {
CLANG_FORMAT_WHITELIST="util/ci/clang-format-whitelist.txt"
files_to_lint="$(find src/ -name '*.cpp' -or -name '*.h')"
+}
+
+function check_format() {
+ echo "Checking format..."
+
+ setup_for_format
local errorcount=0
local fail=0
@@ -41,3 +47,18 @@ function perform_lint() {
echo "LINT OK"
}
+
+
+function fix_format() {
+ echo "Fixing format..."
+
+ setup_for_format
+
+ for f in ${files_to_lint}; do
+ whitelisted=$(awk '$1 == "'$f'" { print 1 }' "$CLANG_FORMAT_WHITELIST")
+ if [ -z "${whitelisted}" ]; then
+ echo "$f"
+ $CLANG_FORMAT -i "$f"
+ fi
+ done
+}
diff --git a/util/ci/common.sh b/util/ci/common.sh
index 7523fa7ff..eb282c823 100644
--- a/util/ci/common.sh
+++ b/util/ci/common.sh
@@ -2,11 +2,20 @@
# Linux build only
install_linux_deps() {
- local pkgs=(libirrlicht-dev cmake libbz2-dev libpng-dev \
+ local pkgs=(cmake libpng-dev \
libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev \
libhiredis-dev libogg-dev libgmp-dev libvorbis-dev libopenal-dev \
- gettext libpq-dev postgresql-server-dev-all libleveldb-dev \
- libcurl4-openssl-dev)
+ gettext libpq-dev libleveldb-dev libcurl4-openssl-dev)
+
+ if [[ "$1" == "--old-irr" ]]; then
+ shift
+ pkgs+=(libirrlicht-dev)
+ else
+ # TODO: return old URL when IrrlichtMt 1.9.0mt2 is tagged
+ #wget "https://github.com/minetest/irrlicht/releases/download/1.9.0mt1/ubuntu-bionic.tar.gz"
+ wget "http://minetest.kitsunemimi.pw/irrlichtmt-patched-temporary.tgz" -O ubuntu-bionic.tar.gz
+ sudo tar -xaf ubuntu-bionic.tar.gz -C /usr/local
+ fi
sudo apt-get update
sudo apt-get install -y --no-install-recommends ${pkgs[@]} "$@"
diff --git a/util/ci/lint_autocorrect.sh b/util/ci/lint_autocorrect.sh
deleted file mode 100644
index 6a8881231..000000000
--- a/util/ci/lint_autocorrect.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#! /bin/bash
-function perform_lint() {
- echo "Performing LINT..."
- if [ -z "${CLANG_FORMAT}" ]; then
- CLANG_FORMAT=clang-format
- fi
- echo "LINT: Using binary $CLANG_FORMAT"
- CLANG_FORMAT_WHITELIST="util/ci/clang-format-whitelist.txt"
-
- files_to_lint="$(find src/ -name '*.cpp' -or -name '*.h')"
-
- local errorcount=0
- local fail=0
- for f in ${files_to_lint}; do
- d=$(diff -u "$f" <(${CLANG_FORMAT} "$f") || true)
-
- if ! [ -z "$d" ]; then
- whitelisted=$(awk '$1 == "'$f'" { print 1 }' "$CLANG_FORMAT_WHITELIST")
-
- # If file is not whitelisted, mark a failure
- if [ -z "${whitelisted}" ]; then
- errorcount=$((errorcount+1))
-
- printf "The file %s is not compliant with the coding style" "$f"
- if [ ${errorcount} -gt 50 ]; then
- printf "\nToo many errors encountered previously, this diff is hidden.\n"
- else
- printf ":\n%s\n" "$d"
- fi
-
- ${CLANG_FORMAT} -i "$f"
-
- fail=1
- fi
- fi
- done
-
- if [ "$fail" = 1 ]; then
- echo "LINT reports failure."
- exit 1
- fi
-
- echo "LINT OK"
-}
-
diff --git a/util/fix_format.sh b/util/fix_format.sh
new file mode 100755
index 000000000..3cef6f58d
--- /dev/null
+++ b/util/fix_format.sh
@@ -0,0 +1,5 @@
+#!/bin/bash -e
+
+. ./util/ci/clang-format.sh
+
+fix_format
diff --git a/util/gather_git_credits.py b/util/gather_git_credits.py
new file mode 100755
index 000000000..1b2865182
--- /dev/null
+++ b/util/gather_git_credits.py
@@ -0,0 +1,67 @@
+#!/usr/bin/env python3
+import subprocess
+import re
+from collections import defaultdict
+
+codefiles = r"(\.[ch](pp)?|\.lua|\.md|\.cmake|\.java|\.gradle|Makefile|CMakeLists\.txt)$"
+
+# two minor versions back, for "Active Contributors"
+REVS_ACTIVE = "5.2.0..HEAD"
+# all time, for "Previous Contributors"
+REVS_PREVIOUS = "HEAD"
+
+CUTOFF_ACTIVE = 3
+CUTOFF_PREVIOUS = 21
+
+# For a description of the points system see:
+# https://github.com/minetest/minetest/pull/9593#issue-398677198
+
+def load(revs):
+ points = defaultdict(int)
+ p = subprocess.Popen(["git", "log", "--mailmap", "--pretty=format:%h %aN <%aE>", revs],
+ stdout=subprocess.PIPE, universal_newlines=True)
+ for line in p.stdout:
+ hash, author = line.strip().split(" ", 1)
+ n = 0
+
+ p2 = subprocess.Popen(["git", "show", "--numstat", "--pretty=format:", hash],
+ stdout=subprocess.PIPE, universal_newlines=True)
+ for line in p2.stdout:
+ added, deleted, filename = re.split(r"\s+", line.strip(), 2)
+ if re.search(codefiles, filename) and added != "-":
+ n += int(added)
+ p2.wait()
+
+ if n == 0:
+ continue
+ if n > 1200:
+ n = 8
+ elif n > 700:
+ n = 4
+ elif n > 100:
+ n = 2
+ else:
+ n = 1
+ points[author] += n
+ p.wait()
+
+ # Some authors duplicate? Don't add manual workarounds here, edit the .mailmap!
+ for author in ("updatepo.sh <script@mt>", "Weblate <42@minetest.ru>"):
+ points.pop(author, None)
+ return points
+
+points_active = load(REVS_ACTIVE)
+points_prev = load(REVS_PREVIOUS)
+
+with open("results.txt", "w") as f:
+ for author, points in sorted(points_active.items(), key=(lambda e: e[1]), reverse=True):
+ if points < CUTOFF_ACTIVE: break
+ points_prev.pop(author, None) # active authors don't appear in previous
+ f.write("%d\t%s\n" % (points, author))
+ f.write('\n---------\n\n')
+ once = True
+ for author, points in sorted(points_prev.items(), key=(lambda e: e[1]), reverse=True):
+ if points < CUTOFF_PREVIOUS and once:
+ f.write('\n---------\n\n')
+ once = False
+ f.write("%d\t%s\n" % (points, author))
diff --git a/util/test_multiplayer.sh b/util/test_multiplayer.sh
index 176cf11d9..9fb894a30 100755
--- a/util/test_multiplayer.sh
+++ b/util/test_multiplayer.sh
@@ -3,41 +3,58 @@ dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
gameid=devtest
minetest=$dir/../bin/minetest
testspath=$dir/../tests
-worldpath=$testspath/testworld_$gameid
-configpath=$testspath/configs
-logpath=$testspath/log
-conf_server=$configpath/minetest.conf.multi.server
-conf_client1=$configpath/minetest.conf.multi.client1
-conf_client2=$configpath/minetest.conf.multi.client2
-log_server=$logpath/server.log
-log_client1=$logpath/client1.log
-log_client2=$logpath/client2.log
-
-mkdir -p $worldpath
-mkdir -p $configpath
-mkdir -p $logpath
-
-echo -ne 'client1::shout,interact,settime,teleport,give
-client2::shout,interact,settime,teleport,give
-' > $worldpath/auth.txt
-
-echo -ne '' > $conf_server
-
-echo -ne '# client 1 config
-screenW=500
-screenH=380
-name=client1
-viewing_range_nodes_min=10
-' > $conf_client1
-
-echo -ne '# client 2 config
-screenW=500
-screenH=380
-name=client2
-viewing_range_nodes_min=10
-' > $conf_client2
-
-echo $(sleep 1; $minetest --disable-unittests --logfile $log_client1 --config $conf_client1 --go --address localhost) &
-echo $(sleep 2; $minetest --disable-unittests --logfile $log_client2 --config $conf_client2 --go --address localhost) &
-$minetest --disable-unittests --server --logfile $log_server --config $conf_server --world $worldpath --gameid $gameid
+conf_client1=$testspath/client1.conf
+conf_server=$testspath/server.conf
+worldpath=$testspath/world
+waitfor () {
+ n=30
+ while [ $n -gt 0 ]; do
+ [ -f "$1" ] && return 0
+ sleep 0.5
+ ((n-=1))
+ done
+ echo "Waiting for ${1##*/} timed out"
+ pkill -P $$
+ exit 1
+}
+
+gdbrun () {
+ gdb -q -ex 'set confirm off' -ex 'r' -ex 'bt' -ex 'quit' --args "$@"
+}
+
+[ -e $minetest ] || { echo "executable $minetest missing"; exit 1; }
+
+rm -rf $worldpath
+mkdir -p $worldpath/worldmods/test
+
+printf '%s\n' >$testspath/client1.conf \
+ video_driver=null name=client1 viewing_range=10 \
+ enable_{sound,minimap,shaders}=false
+
+printf '%s\n' >$testspath/server.conf \
+ max_block_send_distance=1
+
+cat >$worldpath/worldmods/test/init.lua <<"LUA"
+core.after(0, function()
+ io.close(io.open(core.get_worldpath() .. "/startup", "w"))
+end)
+core.register_on_joinplayer(function(player)
+ io.close(io.open(core.get_worldpath() .. "/player_joined", "w"))
+ core.request_shutdown("", false, 2)
+end)
+LUA
+
+echo "Starting server"
+gdbrun $minetest --server --config $conf_server --world $worldpath --gameid $gameid 2>&1 | sed -u 's/^/(server) /' &
+waitfor $worldpath/startup
+
+echo "Starting client"
+gdbrun $minetest --config $conf_client1 --go --address 127.0.0.1 2>&1 | sed -u 's/^/(client) /' &
+waitfor $worldpath/player_joined
+
+echo "Waiting for client and server to exit"
+wait
+
+echo "Success"
+exit 0
diff --git a/util/updatepo.sh b/util/updatepo.sh
index 168483bd4..95acb01ea 100755
--- a/util/updatepo.sh
+++ b/util/updatepo.sh
@@ -58,6 +58,7 @@ xgettext --package-name=minetest \
--keyword=fgettext_ne \
--keyword=strgettext \
--keyword=wstrgettext \
+ --keyword=core.gettext \
--keyword=showTranslatedStatusText \
--output $potfile \
--from-code=utf-8 \
diff --git a/util/wireshark/minetest.lua b/util/wireshark/minetest.lua
index 13cd6d482..d954c7597 100644
--- a/util/wireshark/minetest.lua
+++ b/util/wireshark/minetest.lua
@@ -299,7 +299,7 @@ do
t:add(f_length, buffer(2,2))
local textlen = buffer(2,2):uint()
if minetest_check_length(buffer, 4 + textlen*2, t) then
- t:add(f_message, minetest_convert_utf16(buffer(4, textlen*2), "Converted chat message"))
+ t:add(f_message, buffer(4, textlen*2), buffer(4, textlen*2):ustring())
end
end
}
@@ -873,7 +873,7 @@ end
-- TOCLIENT_HP
do
- local f_hp = ProtoField.uint16("minetest.server.hp", "Hitpoints", base.DEC)
+ local f_hp = ProtoField.uint16("minetest.server.hp", "Health points", base.DEC)
minetest_server_commands[0x33] = {
"HP", 4,
@@ -1379,35 +1379,6 @@ function minetest_check_length(tvb, min_len, t)
end
end
--- Takes a Tvb or TvbRange (i.e. part of a packet) that
--- contains a UTF-16 string and returns a TvbRange containing
--- string converted to ASCII. Any characters outside the range
--- 0x20 to 0x7e are replaced by a question mark.
--- Parameter: tvb: Tvb or TvbRange that contains the UTF-16 data
--- Parameter: name: will be the name of the newly created Tvb.
--- Returns: New TvbRange containing the ASCII string.
--- TODO: Handle surrogates (should only produce one question mark)
--- TODO: Remove this when Wireshark supports UTF-16 strings natively.
-function minetest_convert_utf16(tvb, name)
- local hex, pos, char
- hex = ""
- for pos = 0, tvb:len() - 2, 2 do
- char = tvb(pos, 2):uint()
- if (char >= 0x20 and char <= 0x7e) or char == 0x0a then
- hex = hex .. string.format(" %02x", char)
- else
- hex = hex .. " 3F"
- end
- end
- if hex == "" then
- -- This is a hack to avoid a failed assertion in tvbuff.c
- -- (function: ensure_contiguous_no_exception)
- return ByteArray.new("00"):tvb(name):range(0,0)
- else
- return ByteArray.new(hex):tvb(name):range()
- end
-end
-
-- Decodes a variable-length string as ASCII text
-- t_textlen, t_text should be the ProtoFields created by minetest_field_helper
-- alternatively t_text can be a ProtoField.string and t_textlen can be nil
@@ -1438,7 +1409,7 @@ function minetest_decode_helper_utf16(tvb, t, lentype, offset, f_textlen, f_text
end
local textlen = tvb(offset, n):uint() * 2
if minetest_check_length(tvb, offset + n + textlen, t) then
- t:add(f_text, minetest_convert_utf16(tvb(offset + n, textlen), "UTF-16 text"))
+ t:add(f_text, tvb(offset + n, textlen), tvb(offset + n, textlen):ustring())
return offset + n + textlen
end
end