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
>