Thomas Frohwein <tfrohw...@fastmail.com> writes: > On Sun, Jun 21, 2020 at 01:42:56PM +0300, Timo Myyrä wrote: > >> Hi, >> >> OpenMW got a new release: >> https://openmw.org/2020/openmw-0-46-0-released/ >> >> I've been playing with this on amd64, seems to work so far. > > Compiles fine; runs on a few minutes of playtesting, but performance on > this Ryzen 7 2700 with Radeon HD6870 still leaves a bit to be desired, > but that was similar before. Feels like 20-30 FPS on 1080p with details > on the higher side. > > It looks like some missing WANTLIBs are picked up by make > port-lib-depends-check: > > Missing: boost_iostreams-mt.10 from boost-1.66.0p11 > (/usr/local/bin/openmw-wizard) > Missing: osgShadow.1 from openscenegraph-3.4.1p6 > (/usr/local/bin/openmw-wizard) > WANTLIB += boost_iostreams-mt osgShadow > > Would be good if that could be added or clarified by Pascal. With that > ok thfr@ > >> >> timo >> >> Index: Makefile >> =================================================================== >> RCS file: /cvs/ports/games/openmw/Makefile,v >> retrieving revision 1.23 >> diff -u -p -u -p -r1.23 Makefile >> --- Makefile 24 May 2020 21:11:00 -0000 1.23 >> +++ Makefile 21 Jun 2020 10:39:50 -0000 >> @@ -4,12 +4,11 @@ ONLY_FOR_ARCHS = amd64 i386 >> >> COMMENT = open source implementation of TES III: Morrowind >> >> -V = 0.45.0 >> +V = 0.46.0 >> GH_ACCOUNT = OpenMW >> GH_PROJECT = openmw >> GH_TAGNAME = openmw-$V >> DISTNAME = openmw-$V >> -REVISION = 0 >> >> CATEGORIES = games >> >> Index: distinfo >> =================================================================== >> RCS file: /cvs/ports/games/openmw/distinfo,v >> retrieving revision 1.9 >> diff -u -p -u -p -r1.9 distinfo >> --- distinfo 25 Nov 2019 10:21:25 -0000 1.9 >> +++ distinfo 21 Jun 2020 10:39:50 -0000 >> @@ -1,2 +1,2 @@ >> -SHA256 (openmw-0.45.0.tar.gz) = tjz5cfQG718oAZ9l6eK9lkGiJ0We3kXRR1YpF/Z+HGQ= >> -SIZE (openmw-0.45.0.tar.gz) = 4711103 >> +SHA256 (openmw-0.46.0.tar.gz) = B6NajxX2f1qnIQwqMHpttWYKm2H+NJg8NbFyyGca/Vg= >> +SIZE (openmw-0.46.0.tar.gz) = 5155004 >> Index: patches/patch-components_crashcatcher_crashcatcher_cpp >> =================================================================== >> RCS file: patches/patch-components_crashcatcher_crashcatcher_cpp >> diff -N patches/patch-components_crashcatcher_crashcatcher_cpp >> --- patches/patch-components_crashcatcher_crashcatcher_cpp 25 Nov 2019 >> 10:21:25 -0000 1.1 >> +++ /dev/null 1 Jan 1970 00:00:00 -0000 >> @@ -1,152 +0,0 @@ >> -$OpenBSD: patch-components_crashcatcher_crashcatcher_cpp,v 1.1 2019/11/25 >> 10:21:25 solene Exp $ >> - >> -Fixes game failing to start. >> -Upstream commit fe69e5507df97d84d3cb29d760da78f64e41cc07 >> - >> -Index: components/crashcatcher/crashcatcher.cpp >> ---- components/crashcatcher/crashcatcher.cpp.orig >> -+++ components/crashcatcher/crashcatcher.cpp >> -@@ -17,6 +17,7 @@ >> - #include <components/debug/debuglog.hpp> >> - >> - #include <boost/filesystem/fstream.hpp> >> -+#include <boost/filesystem/operations.hpp> >> - >> - namespace bfs = boost::filesystem; >> - >> -@@ -34,9 +35,13 @@ namespace bfs = boost::filesystem; >> - >> - #if defined(__APPLE__) >> - #include <sys/sysctl.h> >> -+#include <libproc.h> >> - #endif >> - >> --#define UNUSED(x) (void)(x) >> -+#if defined(__FreeBSD__) >> -+#include <sys/sysctl.h> >> -+#include <sys/user.h> >> -+#endif >> - >> - static const char crash_switch[] = "--cc-handle-crash"; >> - >> -@@ -413,6 +418,39 @@ static void crash_handler(const char *logfile) >> - exit(0); >> - } >> - >> -+static void getExecPath(char **argv) >> -+{ >> -+#if defined (__FreeBSD__) >> -+ int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 }; >> -+ size_t size = sizeof(argv0); >> -+ >> -+ if (sysctl(mib, 4, argv0, &size, nullptr, 0) == 0) >> -+ return; >> -+#endif >> -+ >> -+#if defined (__APPLE__) >> -+ if(proc_pidpath(getpid(), argv0, sizeof(argv0)) > 0) >> -+ return; >> -+#endif >> -+ int cwdlen; >> -+ const char *statusPaths[] = {"/proc/self/exe", "/proc/self/file", >> "/proc/curproc/exe", "/proc/curproc/file"}; >> -+ memset(argv0, 0, sizeof(argv0)); >> -+ >> -+ for(const char *path : statusPaths) >> -+ { >> -+ if (readlink(path, argv0, sizeof(argv0)) != -1) >> -+ return; >> -+ } >> -+ >> -+ if(argv[0][0] == '/') >> -+ snprintf(argv0, sizeof(argv0), "%s", argv[0]); >> -+ else if (getcwd(argv0, sizeof(argv0)) != NULL) >> -+ { >> -+ cwdlen = strlen(argv0); >> -+ snprintf(argv0+cwdlen, sizeof(argv0)-cwdlen, "/%s", argv[0]); >> -+ } >> -+} >> -+ >> - int crashCatcherInstallHandlers(int argc, char **argv, int num_signals, >> int *signals, const char *logfile, int (*user_info)(char*, char*)) >> - { >> - struct sigaction sa; >> -@@ -424,20 +462,7 @@ int crashCatcherInstallHandlers(int argc, char **argv, >> - >> - cc_user_info = user_info; >> - >> -- if(argv[0][0] == '/') >> -- snprintf(argv0, sizeof(argv0), "%s", argv[0]); >> -- else >> -- { >> -- { >> -- /* we don't want to disable "ignoring return value" warnings, >> so we make >> -- * a special exception here. */ >> -- char * unused; >> -- unused = getcwd(argv0, sizeof(argv0)); >> -- UNUSED(unused); >> -- } >> -- retval = strlen(argv0); >> -- snprintf(argv0+retval, sizeof(argv0)-retval, "/%s", argv[0]); >> -- } >> -+ getExecPath(argv); >> - >> - /* Set an alternate signal stack so SIGSEGVs caused by stack overflows >> - * still run */ >> -@@ -467,20 +492,24 @@ int crashCatcherInstallHandlers(int argc, char **argv, >> - >> - static bool is_debugger_present() >> - { >> --#if !defined (__APPLE__) >> -- bfs::ifstream file((bfs::path("/proc/self/status"))); >> -- while (!file.eof()) >> -+#if defined (__linux__) >> -+ bfs::path procstatus = bfs::path("/proc/self/status"); >> -+ if (bfs::exists(procstatus)) >> - { >> -- std::string word; >> -- file >> word; >> -- if (word == "TracerPid:") >> -+ bfs::ifstream file((procstatus)); >> -+ while (!file.eof()) >> - { >> -+ std::string word; >> - file >> word; >> -- return word != "0"; >> -+ if (word == "TracerPid:") >> -+ { >> -+ file >> word; >> -+ return word != "0"; >> -+ } >> - } >> - } >> - return false; >> --#else >> -+#elif defined(__APPLE__) >> - int junk; >> - int mib[4]; >> - struct kinfo_proc info; >> -@@ -508,12 +537,24 @@ static bool is_debugger_present() >> - // We're being debugged if the P_TRACED flag is set. >> - >> - return (info.kp_proc.p_flag & P_TRACED) != 0; >> -+#elif defined(__FreeBSD__) >> -+ struct kinfo_proc info; >> -+ size_t size = sizeof(info); >> -+ int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() }; >> -+ >> -+ if (sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, nullptr, 0) >> == 0) >> -+ return (info.ki_flag & P_TRACED) != 0; >> -+ else >> -+ perror("Failed to retrieve process info"); >> -+ return false; >> -+#else >> -+ return false; >> - #endif >> - } >> - >> - void crashCatcherInstall(int argc, char **argv, const std::string >> &crashLogPath) >> - { >> -- if ((argc == 2 && strcmp(argv[1], "--cc-handle-crash") == 0) || >> !is_debugger_present()) >> -+ if ((argc == 2 && strcmp(argv[1], crash_switch) == 0) || >> !is_debugger_present()) >> - { >> - int s[5] = { SIGSEGV, SIGILL, SIGFPE, SIGBUS, SIGABRT }; >> - if (crashCatcherInstallHandlers(argc, argv, 5, s, >> crashLogPath.c_str(), nullptr) == -1) >> Index: pkg/PLIST >> =================================================================== >> RCS file: /cvs/ports/games/openmw/pkg/PLIST,v >> retrieving revision 1.9 >> diff -u -p -u -p -r1.9 PLIST >> --- pkg/PLIST 25 Nov 2019 10:21:25 -0000 1.9 >> +++ pkg/PLIST 21 Jun 2020 10:39:50 -0000 >> @@ -1,23 +1,20 @@ >> @comment $OpenBSD: PLIST,v 1.9 2019/11/25 10:21:25 solene Exp $ >> @bin bin/bsatool >> @bin bin/esmtool >> +@bin bin/niftest >> @bin bin/openmw >> @bin bin/openmw-cs >> @bin bin/openmw-essimporter >> @bin bin/openmw-iniimporter >> @bin bin/openmw-launcher >> @bin bin/openmw-wizard >> -share/applications/openmw-cs.desktop >> -share/applications/openmw.desktop >> +share/applications/org.openmw.cs.desktop >> +share/applications/org.openmw.launcher.desktop >> share/doc/pkg-readmes/${PKGSTEM} >> share/examples/openmw/ >> @sample ${SYSCONFDIR}/openmw/ >> share/examples/openmw/gamecontrollerdb.txt >> @sample ${SYSCONFDIR}/openmw/gamecontrollerdb.txt >> -share/examples/openmw/gamecontrollerdb_204.txt >> -@sample ${SYSCONFDIR}/openmw/gamecontrollerdb_204.txt >> -share/examples/openmw/gamecontrollerdb_205.txt >> -@sample ${SYSCONFDIR}/openmw/gamecontrollerdb_205.txt >> share/examples/openmw/openmw-cs.cfg >> @sample ${SYSCONFDIR}/openmw/openmw-cs.cfg >> share/examples/openmw/openmw.cfg >> @@ -129,12 +126,24 @@ share/openmw/resources/shaders/objects_v >> share/openmw/resources/shaders/parallax.glsl >> share/openmw/resources/shaders/s360_fragment.glsl >> share/openmw/resources/shaders/s360_vertex.glsl >> +share/openmw/resources/shaders/shadowcasting_fragment.glsl >> +share/openmw/resources/shaders/shadowcasting_vertex.glsl >> +share/openmw/resources/shaders/shadows_fragment.glsl >> +share/openmw/resources/shaders/shadows_vertex.glsl >> share/openmw/resources/shaders/terrain_fragment.glsl >> share/openmw/resources/shaders/terrain_vertex.glsl >> share/openmw/resources/shaders/water_fragment.glsl >> share/openmw/resources/shaders/water_nm.png >> share/openmw/resources/shaders/water_vertex.glsl >> share/openmw/resources/version >> +share/openmw/resources/vfs/ >> +share/openmw/resources/vfs/textures/ >> +share/openmw/resources/vfs/textures/omw_menu_scroll_center_h.dds >> +share/openmw/resources/vfs/textures/omw_menu_scroll_center_v.dds >> +share/openmw/resources/vfs/textures/omw_menu_scroll_down.dds >> +share/openmw/resources/vfs/textures/omw_menu_scroll_left.dds >> +share/openmw/resources/vfs/textures/omw_menu_scroll_right.dds >> +share/openmw/resources/vfs/textures/omw_menu_scroll_up.dds >> share/pixmaps/ >> share/pixmaps/openmw-cs.png >> share/pixmaps/openmw.png >>
ok, revised diff fixing the WANTLIB: Index: Makefile =================================================================== RCS file: /cvs/ports/games/openmw/Makefile,v retrieving revision 1.23 diff -u -p -u -p -r1.23 Makefile --- Makefile 24 May 2020 21:11:00 -0000 1.23 +++ Makefile 22 Jun 2020 08:03:33 -0000 @@ -4,12 +4,11 @@ ONLY_FOR_ARCHS = amd64 i386 COMMENT = open source implementation of TES III: Morrowind -V = 0.45.0 +V = 0.46.0 GH_ACCOUNT = OpenMW GH_PROJECT = openmw GH_TAGNAME = openmw-$V DISTNAME = openmw-$V -REVISION = 0 CATEGORIES = games @@ -22,9 +21,9 @@ PERMIT_PACKAGE = Yes WANTLIB += ${COMPILER_LIBCXX} BulletCollision GL LinearMath MyGUIEngine WANTLIB += OpenThreads Qt5Core Qt5Gui Qt5Network Qt5OpenGL Qt5Widgets -WANTLIB += SDL2 avcodec avformat avutil boost_filesystem-mt boost_program_options-mt -WANTLIB += boost_system-mt c m openal osg osgDB osgFX -WANTLIB += osgGA osgParticle osgText osgUtil osgViewer swresample +WANTLIB += SDL2 avcodec avformat avutil boost_filesystem-mt boost_iostreams-mt +WANTLIB += boost_program_options-mt boost_system-mt c m openal osg osgDB osgFX +WANTLIB += osgGA osgParticle osgShadow osgText osgUtil osgViewer swresample WANTLIB += swscale unshield MODULES = devel/cmake x11/qt5 Index: distinfo =================================================================== RCS file: /cvs/ports/games/openmw/distinfo,v retrieving revision 1.9 diff -u -p -u -p -r1.9 distinfo --- distinfo 25 Nov 2019 10:21:25 -0000 1.9 +++ distinfo 22 Jun 2020 08:03:33 -0000 @@ -1,2 +1,2 @@ -SHA256 (openmw-0.45.0.tar.gz) = tjz5cfQG718oAZ9l6eK9lkGiJ0We3kXRR1YpF/Z+HGQ= -SIZE (openmw-0.45.0.tar.gz) = 4711103 +SHA256 (openmw-0.46.0.tar.gz) = B6NajxX2f1qnIQwqMHpttWYKm2H+NJg8NbFyyGca/Vg= +SIZE (openmw-0.46.0.tar.gz) = 5155004 Index: patches/patch-components_crashcatcher_crashcatcher_cpp =================================================================== RCS file: patches/patch-components_crashcatcher_crashcatcher_cpp diff -N patches/patch-components_crashcatcher_crashcatcher_cpp --- patches/patch-components_crashcatcher_crashcatcher_cpp 25 Nov 2019 10:21:25 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,152 +0,0 @@ -$OpenBSD: patch-components_crashcatcher_crashcatcher_cpp,v 1.1 2019/11/25 10:21:25 solene Exp $ - -Fixes game failing to start. -Upstream commit fe69e5507df97d84d3cb29d760da78f64e41cc07 - -Index: components/crashcatcher/crashcatcher.cpp ---- components/crashcatcher/crashcatcher.cpp.orig -+++ components/crashcatcher/crashcatcher.cpp -@@ -17,6 +17,7 @@ - #include <components/debug/debuglog.hpp> - - #include <boost/filesystem/fstream.hpp> -+#include <boost/filesystem/operations.hpp> - - namespace bfs = boost::filesystem; - -@@ -34,9 +35,13 @@ namespace bfs = boost::filesystem; - - #if defined(__APPLE__) - #include <sys/sysctl.h> -+#include <libproc.h> - #endif - --#define UNUSED(x) (void)(x) -+#if defined(__FreeBSD__) -+#include <sys/sysctl.h> -+#include <sys/user.h> -+#endif - - static const char crash_switch[] = "--cc-handle-crash"; - -@@ -413,6 +418,39 @@ static void crash_handler(const char *logfile) - exit(0); - } - -+static void getExecPath(char **argv) -+{ -+#if defined (__FreeBSD__) -+ int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 }; -+ size_t size = sizeof(argv0); -+ -+ if (sysctl(mib, 4, argv0, &size, nullptr, 0) == 0) -+ return; -+#endif -+ -+#if defined (__APPLE__) -+ if(proc_pidpath(getpid(), argv0, sizeof(argv0)) > 0) -+ return; -+#endif -+ int cwdlen; -+ const char *statusPaths[] = {"/proc/self/exe", "/proc/self/file", "/proc/curproc/exe", "/proc/curproc/file"}; -+ memset(argv0, 0, sizeof(argv0)); -+ -+ for(const char *path : statusPaths) -+ { -+ if (readlink(path, argv0, sizeof(argv0)) != -1) -+ return; -+ } -+ -+ if(argv[0][0] == '/') -+ snprintf(argv0, sizeof(argv0), "%s", argv[0]); -+ else if (getcwd(argv0, sizeof(argv0)) != NULL) -+ { -+ cwdlen = strlen(argv0); -+ snprintf(argv0+cwdlen, sizeof(argv0)-cwdlen, "/%s", argv[0]); -+ } -+} -+ - int crashCatcherInstallHandlers(int argc, char **argv, int num_signals, int *signals, const char *logfile, int (*user_info)(char*, char*)) - { - struct sigaction sa; -@@ -424,20 +462,7 @@ int crashCatcherInstallHandlers(int argc, char **argv, - - cc_user_info = user_info; - -- if(argv[0][0] == '/') -- snprintf(argv0, sizeof(argv0), "%s", argv[0]); -- else -- { -- { -- /* we don't want to disable "ignoring return value" warnings, so we make -- * a special exception here. */ -- char * unused; -- unused = getcwd(argv0, sizeof(argv0)); -- UNUSED(unused); -- } -- retval = strlen(argv0); -- snprintf(argv0+retval, sizeof(argv0)-retval, "/%s", argv[0]); -- } -+ getExecPath(argv); - - /* Set an alternate signal stack so SIGSEGVs caused by stack overflows - * still run */ -@@ -467,20 +492,24 @@ int crashCatcherInstallHandlers(int argc, char **argv, - - static bool is_debugger_present() - { --#if !defined (__APPLE__) -- bfs::ifstream file((bfs::path("/proc/self/status"))); -- while (!file.eof()) -+#if defined (__linux__) -+ bfs::path procstatus = bfs::path("/proc/self/status"); -+ if (bfs::exists(procstatus)) - { -- std::string word; -- file >> word; -- if (word == "TracerPid:") -+ bfs::ifstream file((procstatus)); -+ while (!file.eof()) - { -+ std::string word; - file >> word; -- return word != "0"; -+ if (word == "TracerPid:") -+ { -+ file >> word; -+ return word != "0"; -+ } - } - } - return false; --#else -+#elif defined(__APPLE__) - int junk; - int mib[4]; - struct kinfo_proc info; -@@ -508,12 +537,24 @@ static bool is_debugger_present() - // We're being debugged if the P_TRACED flag is set. - - return (info.kp_proc.p_flag & P_TRACED) != 0; -+#elif defined(__FreeBSD__) -+ struct kinfo_proc info; -+ size_t size = sizeof(info); -+ int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() }; -+ -+ if (sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, nullptr, 0) == 0) -+ return (info.ki_flag & P_TRACED) != 0; -+ else -+ perror("Failed to retrieve process info"); -+ return false; -+#else -+ return false; - #endif - } - - void crashCatcherInstall(int argc, char **argv, const std::string &crashLogPath) - { -- if ((argc == 2 && strcmp(argv[1], "--cc-handle-crash") == 0) || !is_debugger_present()) -+ if ((argc == 2 && strcmp(argv[1], crash_switch) == 0) || !is_debugger_present()) - { - int s[5] = { SIGSEGV, SIGILL, SIGFPE, SIGBUS, SIGABRT }; - if (crashCatcherInstallHandlers(argc, argv, 5, s, crashLogPath.c_str(), nullptr) == -1) Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/games/openmw/pkg/PLIST,v retrieving revision 1.9 diff -u -p -u -p -r1.9 PLIST --- pkg/PLIST 25 Nov 2019 10:21:25 -0000 1.9 +++ pkg/PLIST 22 Jun 2020 08:03:33 -0000 @@ -1,23 +1,20 @@ @comment $OpenBSD: PLIST,v 1.9 2019/11/25 10:21:25 solene Exp $ @bin bin/bsatool @bin bin/esmtool +@bin bin/niftest @bin bin/openmw @bin bin/openmw-cs @bin bin/openmw-essimporter @bin bin/openmw-iniimporter @bin bin/openmw-launcher @bin bin/openmw-wizard -share/applications/openmw-cs.desktop -share/applications/openmw.desktop +share/applications/org.openmw.cs.desktop +share/applications/org.openmw.launcher.desktop share/doc/pkg-readmes/${PKGSTEM} share/examples/openmw/ @sample ${SYSCONFDIR}/openmw/ share/examples/openmw/gamecontrollerdb.txt @sample ${SYSCONFDIR}/openmw/gamecontrollerdb.txt -share/examples/openmw/gamecontrollerdb_204.txt -@sample ${SYSCONFDIR}/openmw/gamecontrollerdb_204.txt -share/examples/openmw/gamecontrollerdb_205.txt -@sample ${SYSCONFDIR}/openmw/gamecontrollerdb_205.txt share/examples/openmw/openmw-cs.cfg @sample ${SYSCONFDIR}/openmw/openmw-cs.cfg share/examples/openmw/openmw.cfg @@ -129,12 +126,24 @@ share/openmw/resources/shaders/objects_v share/openmw/resources/shaders/parallax.glsl share/openmw/resources/shaders/s360_fragment.glsl share/openmw/resources/shaders/s360_vertex.glsl +share/openmw/resources/shaders/shadowcasting_fragment.glsl +share/openmw/resources/shaders/shadowcasting_vertex.glsl +share/openmw/resources/shaders/shadows_fragment.glsl +share/openmw/resources/shaders/shadows_vertex.glsl share/openmw/resources/shaders/terrain_fragment.glsl share/openmw/resources/shaders/terrain_vertex.glsl share/openmw/resources/shaders/water_fragment.glsl share/openmw/resources/shaders/water_nm.png share/openmw/resources/shaders/water_vertex.glsl share/openmw/resources/version +share/openmw/resources/vfs/ +share/openmw/resources/vfs/textures/ +share/openmw/resources/vfs/textures/omw_menu_scroll_center_h.dds +share/openmw/resources/vfs/textures/omw_menu_scroll_center_v.dds +share/openmw/resources/vfs/textures/omw_menu_scroll_down.dds +share/openmw/resources/vfs/textures/omw_menu_scroll_left.dds +share/openmw/resources/vfs/textures/omw_menu_scroll_right.dds +share/openmw/resources/vfs/textures/omw_menu_scroll_up.dds share/pixmaps/ share/pixmaps/openmw-cs.png share/pixmaps/openmw.png