Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 411295 - new ebuild: games-engines/openmw
Summary: new ebuild: games-engines/openmw
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: Normal enhancement (vote)
Assignee: Gentoo Games
URL: http://openmw.org/en/
Whiteboard: [hasufell-overlay]
Keywords: EBUILD, InOverlay, PATCH
Depends on:
Blocks:
 
Reported: 2012-04-08 21:57 UTC by Julian Ospald
Modified: 2014-11-06 20:15 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
openmw-0.13.0.ebuild (openmw-0.13.0.ebuild,1.35 KB, text/plain)
2012-04-08 21:57 UTC, Julian Ospald
Details
openmw-0.13.0-cmake.patch (openmw-0.13.0-cmake.patch,2.48 KB, patch)
2012-04-08 21:57 UTC, Julian Ospald
Details | Diff
morrowind-data ebuild (morrowind-data-2012.ebuild,1.28 KB, text/plain)
2012-06-14 21:30 UTC, Myckel Habets
Details
openmw-0.15.0 ebuild (openmw-0.15.0.ebuild,1.76 KB, text/plain)
2012-06-14 21:32 UTC, Myckel Habets
Details
morrowind-data ebuild (morrowind-data-2012.ebuild,1.29 KB, text/plain)
2012-06-15 19:59 UTC, Myckel Habets
Details
openmw-0.15.0 ebuild (openmw-0.15.0.ebuild,1.57 KB, text/plain)
2012-06-15 20:00 UTC, Myckel Habets
Details
openmw-0.15.0-cmake patch file (openmw-0.15.0-cmake.patch,2.97 KB, text/plain)
2012-06-15 20:01 UTC, Myckel Habets
Details
openmw-0.16.0 ebuild (openmw-0.16.0.ebuild,2.17 KB, text/plain)
2012-07-02 13:38 UTC, Myckel Habets
Details
openmw-0.18.0 ebuild (openmw-0.18.0.ebuild,2.36 KB, text/plain)
2012-10-07 05:52 UTC, Myckel Habets
Details
updated cfg patch (openmw-0.18.0-cfg.patch,378 bytes, text/plain)
2012-10-07 05:52 UTC, Myckel Habets
Details
updated cmake patch (openmw-0.18.0-cmake.patch,968 bytes, text/plain)
2012-10-07 05:52 UTC, Myckel Habets
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Julian Ospald 2012-04-08 21:57:27 UTC
Created attachment 308239 [details]
openmw-0.13.0.ebuild

An open source reimplementation of the role playing game The Elder Scrolls III: Morrowind

This is very alpha and not really playable.
Comment 1 Julian Ospald 2012-04-08 21:57:54 UTC
Created attachment 308241 [details, diff]
openmw-0.13.0-cmake.patch
Comment 3 Myckel Habets 2012-06-14 21:30:31 UTC
Created attachment 315345 [details]
morrowind-data ebuild

This ebuild extracts and copies the data from the morrowind cd to /opt/morrowind (which could be used by openmw for example).
Expansions Bloodmoon and Tribunal aren't installed yet, room for improvement.
Comment 4 Myckel Habets 2012-06-14 21:32:20 UTC
Created attachment 315347 [details]
openmw-0.15.0 ebuild

My own attempt to write an ebuild for openmw (didn't look for this bug before writing it). Assumes that data files are installed with the morrowind-data ebuild.
Comment 5 Julian Ospald 2012-06-14 22:43:17 UTC
(In reply to comment #4)
> Created attachment 315347 [details]
> openmw-0.15.0 ebuild
> 
> My own attempt to write an ebuild for openmw (didn't look for this bug
> before writing it). Assumes that data files are installed with the
> morrowind-data ebuild.

I am interested in this ebuild too, but was too lazy to update, because of added MyGUI dependncy.
Let me comment on this:

- games.eclass now supports EAPI=4 (if you don't want to use that, then helper functions need a "|| die")
- sed-call has no "|| die"
- you don't call prepgamesdirs last
- there are a few dependencies missing (virtual/pkgconfig, media-libs/freetype:2, ... check CMakeLists.txt and the files in zinnschlag-openmw-94498f5/cmake)
- I would suggest to patch CMakeLists.txt rather than adding your own install rules in the ebuild
- dodir is not needed when using "insinto"
- you don't provide any useflags, but the build system let's you choose several options
- I would set "games-rpg/morrowind-data" as PDEPEND. Then you are able to set openmw as RDEPEND in morrowind-data ebuild. Either way, it's not a build-time dependency.
- doins takes multiple arguments, dogamesbin too
- doins has an "-r" switch for recursively
- $PN should never be in DESCRIPTION
- cd "${WORKDIR}/${P}_build" is not future-proof, cause it will break for "CMAKE_IN_SOURCE_BUILD=1". Use ${CMAKE_BUILD_DIR} which works for both cases
- I doubt that ogres "threads" useflag is neccessary for openmw
- you don't install config files into "${GAMES_SYSCONFDIR}". Look at the sed in the existing ebuild
- you currently don't make use of any eutils function, but do inherit it
- you don't install the icon
- you don't install the .desktop file
Comment 6 Myckel Habets 2012-06-15 04:52:17 UTC
Thank you for the comment, I'll have a look at the things you mentioned this weekend and update the ebuild.

(In reply to comment #5)
> - I doubt that ogres "threads" useflag is neccessary for openmw

http://openmw.org/wiki/index.php?title=Development_Environment_Setup#Gentoo_Dependencies lists them as a dependency, I just assumed the devs know best.
Comment 7 Myckel Habets 2012-06-15 19:59:34 UTC
Created attachment 315437 [details]
morrowind-data ebuild

Updated morrowind-data ebuild.
Comment 8 Myckel Habets 2012-06-15 20:00:45 UTC
Created attachment 315439 [details]
openmw-0.15.0 ebuild

Updated ebuild. Should now reflect all suggestions, where needed.
Comment 9 Myckel Habets 2012-06-15 20:01:37 UTC
Created attachment 315441 [details]
openmw-0.15.0-cmake patch file

Patch for cmake configuration files.
Comment 10 Julian Ospald 2012-06-16 01:06:27 UTC
I will upload modified versions of this to my overlay shortly. I don't feel that either of this is ready for the tree.
MyGUI also needed some work.

let me comment on your updated ebuild:

> I just assumed the devs know best
- surprisingly, that is rarely the case. boost and threads useflags are definitely not needed.
- boost is NOT just build-time dep. OpenMW does link against it
- use virtual/pkgconfig, not dev-util/pkgconfig anymore
- dependencies should be ordered alphabetically
- sed on openmw.cfg.install in src_install is pretty ugly. patch the openmw.cfg to take the variable MORROWIND_DATA_FILES which is already defined/definable and pass "-DMORROWIND_DATA_FILES=/opt/morrowind" to mycmakeargs
- there are several QA notices. -fno-strict-aliasing should be appended for now via flag-o-matic
- let us rather install the icon into /usr/share/icons/hicolor/256x256/apps
then we need to use gnome2-utils eclass to update the icon cache
pixmaps is only a fallback and should not be used for modern packages. patch the CMakeLists.txt to include an ICONDIR variable
- some minor glitches in the cmake patch. We should also remove the random warnings flags completely. The user should specify which warnings he will get instead of upstream hiding some of them via flags.
- the desktop file uses "Version" variable incorrectly. it should be removed.
- there are major compile issues with ffmpeg useflag. headers are missing from ffmpeg_decoder.cpp. Note sure if that is gcc version related.
- you should make the data-ebuild optional via a "cdinstall" useflag. It is not really neccessary. A windows-installation of morrowind does also work.
- you could as well use "$(cmake-utils_use_use ffmpeg FFMPEG)", but that's rather style
- I would prefer to do ">=" instead of "=" for ogre, so users in unstable arch can report bugs if a newer ogre version comes out :P
- openmw-${PV} -> ${P}
- unneccessary "${S}" in the dodoc line

for the data ebuild:
- all those mv stuff is not good. use EAPI=4 and proper doins calls
- I don't understand why you copy videos over and don't install them directly
- unshield is not a runtime dependency
- don't unpack stuff in src_install. use src_unpack
- you might want to consider to export CDROM_NAME variable (name of the morrowind cd when it's mounted. makes it easier for cdrom eclass to recognize it correctly)
- check the size of the unpacked stuff. unshield often does weird things. so some checks for needed disk size would be nice via "check-reqs" eclass (when you do that you should put those variables e.g.
CHECKREQS_DISK_BUILD in global scope, NOT local like other games ebuilds do, cause that is incompatible with EAPI=4)
- I don't see where you use eutils eclass functions
- I wonder if everything is fine with case sensitivity on linux, but haven't had problems myself
Comment 11 Julian Ospald 2012-06-16 02:43:34 UTC
This is no longer maintained in sunrise (at least not by me)

https://github.com/hasufell/hasufell-overlay/commit/bc17bf41be16884155eed4218a8a63415c9ef37c

# layman -a hasufell
Comment 12 Myckel Habets 2012-06-16 07:52:42 UTC
Thank you for all the information on how to improve the ebuilds. The devmanual is IMHO often lacking in a lot of these details. I'll be checking out your repo soon.
Comment 13 Myckel Habets 2012-06-16 08:40:03 UTC
(In reply to comment #12)
> I'll be checking out your repo soon.

Seems to work ok. However, it seems that mygui is not working properly here. I don't get any 2D interface, like minimap, dialogs, etc. Do you have the same issue?
Comment 14 Myckel Habets 2012-06-16 08:56:44 UTC
(In reply to comment #13)
> However, it seems that mygui is not working properly here.
> I don't get any 2D interface, like minimap, dialogs, etc. Do you have the
> same issue?

Nevermind. Some rebuilding fixed it.
Comment 15 Myckel Habets 2012-07-02 13:38:51 UTC
Created attachment 316965 [details]
openmw-0.16.0 ebuild

OpenMW 0.16.0 was released today.

Same ebuild as 0.15.0, but with a few minor changes.
I just renamed the patches to reflect the new version.
Comment 16 Myckel Habets 2012-10-07 05:52:15 UTC
Created attachment 325876 [details]
openmw-0.18.0 ebuild

Updated ebuild for 0.18.0. It builds now again, however running the program gives a black screen and does nothing in my case (running the developer provided linux binaries do work), seems to hang. Spend the whole evening yesterday to find out where the problem is, but it could very well be one of the dependencies.
Could someone check if this does work in their case?
Comment 17 Myckel Habets 2012-10-07 05:52:33 UTC
Created attachment 325878 [details]
updated cfg patch
Comment 18 Myckel Habets 2012-10-07 05:52:57 UTC
Created attachment 325880 [details]
updated cmake patch
Comment 19 Julian Ospald 2012-10-07 11:57:19 UTC
it's already updated since two days:
https://github.com/hasufell/hasufell-overlay/tree/master/games-engines/openmw
Comment 20 Myckel Habets 2012-10-07 12:30:02 UTC
(In reply to comment #19)
> it's already updated since two days:
> https://github.com/hasufell/hasufell-overlay/tree/master/games-engines/openmw

Oops, checked the sunrise repo... which is outdated.

I'll have a look if that works better.
Comment 21 Myckel Habets 2012-10-13 21:04:56 UTC
I keep getting segfaults with this latest version at starting openmw (ebuild from the overlay).

gdb output:

Program received signal SIGSEGV, Segmentation fault.
compare (__str="Material", this=0x7ffff7ecdbc8) at /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.4/include/g++-v4/bits/basic_string.h:2132
2132		const size_type __size = this->size();
(gdb) bt full
#0  compare (__str="Material", this=0x7ffff7ecdbc8) at /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.4/include/g++-v4/bits/basic_string.h:2132
        __size = <optimized out>
        __osize = <optimized out>
        __r = <optimized out>
#1  operator< <char, std::char_traits<char>, std::allocator<char> > (__rhs="Material", __lhs=
    <error reading variable: Cannot access memory at address 0xffffffffffffffe9>)
    at /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.4/include/g++-v4/bits/basic_string.h:2419
No locals.
#2  operator() (__y="Material", __x=<error reading variable: Cannot access memory at address 0xffffffffffffffe9>, this=<optimized out>)
    at /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.4/include/g++-v4/bits/stl_function.h:230
No locals.
#3  std::_Rb_tree<std::string, std::pair<std::string const, Ogre::ResourceManager*>, std::_Select1st<std::pair<std::string const, Ogre::ResourceManager*> >, std::less<std::string>, Ogre::STLAllocator<std::pair<std::string const, Ogre::ResourceManager*>, Ogre::CategorisedAllocPolicy<(Ogre::MemoryCategory)0> > >::_M_insert_unique_ (this=0x7ffff7ecdb98, __position=<optimized out>, __v=...) at /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.4/include/g++-v4/bits/stl_tree.h:1226
No locals.
#4  0x00007ffff7962fd8 in insert (__x=..., __position=<optimized out>, this=0x7ffff7ecdb98)
    at /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.4/include/g++-v4/bits/stl_map.h:541
No locals.
#5  operator[] (__k="Material", this=0x7ffff7ecdb98) at /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.4/include/g++-v4/bits/stl_map.h:451
No locals.
#6  Ogre::ResourceGroupManager::_registerResourceManager (this=0x7ffff7ecdb68, resourceType="Material", rm=0x7ffff7ed2428)
    at /var/tmp/portage/dev-games/ogre-1.8.0/work/ogre_src_v1-8-0/OgreMain/src/OgreResourceGroupManager.cpp:950
        ogreAutoMutexLock = {m = 0x7ffff7ecdb70, is_locked = true}

There is more after #6.

strace output:

write(3, "23:02:28: Creating resource grou"..., 42) = 42
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2917, ...}) = 0
write(3, "23:02:28: Creating resource grou"..., 43) = 43
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2917, ...}) = 0
write(3, "23:02:28: Creating resource grou"..., 45) = 45
open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 4
read(4, "0-3\n", 8192)                  = 4
close(4)                                = 0
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9fec3ed000
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9fec2ed000
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9fec1ed000
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2917, ...}) = 0
write(3, "23:02:28: SceneManagerFactory fo"..., 73) = 73
futex(0x7f9ff49613f0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2917, ...}) = 0
write(3, "23:02:28: Registering ResourceMa"..., 56) = 56
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0xffffffffffffffe9} ---
+++ killed by SIGSEGV +++

Any thoughts on how to tackle this?
Comment 22 Julian Ospald 2012-10-13 21:07:13 UTC
no idea, compile from hand (without ebuild), retry and file a bug report upstream.
Comment 23 Myckel Habets 2012-10-14 07:15:07 UTC
(In reply to comment #22)
> no idea, compile from hand (without ebuild), retry and file a bug report
> upstream.

Does not segfault outside portage, does hang at a futex (was the same with 0.16. and 0.17.0, I'll post that upstream).
Comment 24 Myckel Habets 2012-10-14 15:58:19 UTC
(In reply to comment #23)
> (In reply to comment #22)
> > no idea, compile from hand (without ebuild), retry and file a bug report
> > upstream.
> 
> Does not segfault outside portage, does hang at a futex (was the same with
> 0.16. and 0.17.0, I'll post that upstream).

Rebuilding ogre, mygui (inside portage) en openmw (outside portage) against boost_1.49 (there were 2 boost versions installed 1.48 and 1.49) fixed the building outside portage.
The overlay openmw ebuild does not segfault any more now, but hangs at the same futex. Looking at the ebuild it seems it is forced to build against boost 1.48. Is there a reason for this?
Comment 25 Julian Ospald 2012-10-14 16:02:59 UTC
a bit lazyness, cause I encountered trouble with boost-1.49 in many ways and don't want to support it currently
Comment 26 Julian Ospald 2014-03-30 12:32:57 UTC
it's coming closer to a real beta version... it's almost playable now, except for very poor AI
Comment 27 Julian Ospald 2014-11-06 20:15:56 UTC
*morrowind-data-2 (06 Nov 2014)

  06 Nov 2014; Julian Ospald <hasufell@gentoo.org> +morrowind-data-2.ebuild,
  +metadata.xml:
  initial import wrt #411295

*openmw-0.33.0 (06 Nov 2014)

  06 Nov 2014; Julian Ospald <hasufell@gentoo.org> +openmw-0.33.0.ebuild,
  +files/openmw-0.33.0-build.patch, +files/openmw-0.33.0-cfg.patch,
  +files/openmw-0.33.0-opencs.patch, +metadata.xml:
  initial import wrt #411295