Bug 2379721 - Review Request: openmw - OpenMW is an open-source game engine
Summary: Review Request: openmw - OpenMW is an open-source game engine
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Cristian Le
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: FE-GAMESIG, GamingSIG
TreeView+ depends on / blocked
 
Reported: 2025-07-12 17:37 UTC by Claire Robsahm
Modified: 2025-08-04 00:48 UTC (History)
8 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2025-07-28 04:04:15 UTC
Type: ---
Embargoed:
fedora: fedora-review+


Attachments (Terms of Use)
licensecheck (1.08 MB, text/plain)
2025-07-27 20:52 UTC, Cristian Le
no flags Details

Description Claire Robsahm 2025-07-12 17:37:36 UTC
Spec URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-4.fc42.src.rpm
Description: OpenMW is an open-source game engine based on Bethesda's Elder Scrolls III Morrowind.
Fedora Account System Username: chapien

Some details on the package, since I'm sure there will be questions in this area.

First, what is openMW? OpenMW is a game engine. Originally, it was made to play the proprietary video game "Elder Scrolls III Morrowind" on Linux and other non-Windows platforms natively. It evolved into an entire engine replacement project, making it the preferred way to play the game even on Windows. This would imply that the game requires proprietary data to run. However, this is no longer the case.

OpenMW has evolved into an entire game engine in its own right. Game projects have been created in openmw-cs (the construction set), requiring absolutely no proprietary code or assets from the original Morrowind. Upstream provides sample data files that can substitute Morrowind's, allowing the launcher to function even without Morrowind itself. Of course, the engine is still primarily used to run Morrowind at this time, but like another package we include, Stratagus, it can do more.

Upstream's website: https://openmw.org/

Next, I want to pre-emptively explain some of the decisions made in the build process. I am statically linking three libraries, and for good reason.

First, I am statically linking bullet3, a library we do provide. This is because openMW requires bullet to be built with Double Precision, and our own package is built with float precision. I was advised by the bullet3 Fedora maintainers that statically linking would be appropriate in this use-case.

Second, I am statically linking OpenSceneGraph, a package we do provide. Upstream (openMW) has their own fork of OpenSceneGraph, which provides optimizations and improved framerate for openMW specifically. Statically linking their version of OSG simply made sense to me. The repo is here: https://github.com/OpenMW/osg

Finally, RecastNavigation is something we do not package; Godot Engine, a package we do provide, seems to statically link RecastNavigation as well, so there is precedent. In addition, by default OpenMW statically links Recast rather than dynamically, which implies to me that this is preferred by upstream.

Let me know if there are further questions and feedback!

Comment 1 Peter Lemenkov 2025-07-12 17:52:41 UTC
Thanks for this contribution, but I have something to say.

1st of all remove all mentions of a trademarked software. E.g. use something like this:

"OpenMW is an open-source game engine based on a well-known game."

"OpenMW-CS is a replacement for a well-known Construction Set"

2nd. I'm sure License field needs some clarification. I am certain it's not just "GPL-3.0-only". It should also mention a License for OpenSceneGraph fork. Our copy is licensed under "GPL-2.0-or-later WITH WxWindows-exception-3.1". Also bulletphysics is licensed under "Zlib". Please double-check that all licenses are mentioned properly.

Comment 2 Claire Robsahm 2025-07-12 17:59:38 UTC
(In reply to Peter Lemenkov from comment #1)
> Thanks for this contribution, but I have something to say.
> 
> 1st of all remove all mentions of a trademarked software. E.g. use something
> like this:
> 
> "OpenMW is an open-source game engine based on a well-known game."
> 
> "OpenMW-CS is a replacement for a well-known Construction Set"
> 
> 2nd. I'm sure License field needs some clarification. I am certain it's not
> just "GPL-3.0-only". It should also mention a License for OpenSceneGraph
> fork. Our copy is licensed under "GPL-2.0-or-later WITH
> WxWindows-exception-3.1". Also bulletphysics is licensed under "Zlib".
> Please double-check that all licenses are mentioned properly.

Understood. Do I list each license on a separate line?

Comment 3 Claire Robsahm 2025-07-12 18:01:07 UTC
Updated, using the licenses all on one line for now, let me know if that is not appropriate.

Spec URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-5.fc42.src.rpm

Comment 4 Artur Frenszek-Iwicki 2025-07-12 20:21:09 UTC
> Understood. Do I list each license on a separate line?
Putting multiple "License: XXX" tags on a single package is invalid
and will cause rpmbuild to refuse to build the package and exit with an error,
so the licences must all go in a single "License: XXX and YYY..." tag.
(Unless you're building multiple packages from the same spec file,
in which case each sub-package can have a different licence tag.)

That being said, standard practice is to also put a comment explaining the licensing breakdown.
You should end up with something like:

# Most of the code is subject to license XXX.
# - src/linked_list.c is licensed under YYY
# Statically linked library "qwerty" is ZZZ.
License: XXX and YYY and ZZZ

Comment 5 Claire Robsahm 2025-07-12 20:43:55 UTC
(In reply to Artur Frenszek-Iwicki from comment #4)
> > Understood. Do I list each license on a separate line?
> Putting multiple "License: XXX" tags on a single package is invalid
> and will cause rpmbuild to refuse to build the package and exit with an
> error,
> so the licences must all go in a single "License: XXX and YYY..." tag.
> (Unless you're building multiple packages from the same spec file,
> in which case each sub-package can have a different licence tag.)
> 
> That being said, standard practice is to also put a comment explaining the
> licensing breakdown.
> You should end up with something like:
> 
> # Most of the code is subject to license XXX.
> # - src/linked_list.c is licensed under YYY
> # Statically linked library "qwerty" is ZZZ.
> License: XXX and YYY and ZZZ

Fixed. I also switched to using %autorelease, I was using manual build numbers for my own testing.
SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm

Comment 6 Claire Robsahm 2025-07-13 04:24:53 UTC
Ran the review service and found some problems myself. Fixed up my License expression, and I also now run desktop-file-validate appropriately.
SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm

[fedora-review-service]

(hopefully I did that right)

Comment 7 Claire Robsahm 2025-07-13 05:27:24 UTC
Forgot that I needed desktop utils to do desktop-file-validate. Sorry.
SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm
[fedora-review-service]

Comment 8 Claire Robsahm 2025-07-23 01:01:35 UTC
Moved desktop-file-validate to %check. Removed periods from Summary and desc. Added %dir %{_systemconfig}/openmw to files list.

SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm
[fedora-review-service]

Comment 9 Claire Robsahm 2025-07-23 22:41:31 UTC
 Fixed some licenses. My fedora review seems to come up clean now.

SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm
[fedora-review-service]

Comment 10 Alexander Lent 2025-07-25 00:18:05 UTC
I took a quick look at the spec file - it's quite good overall - and wanted to note the bundling policy: https://docs.fedoraproject.org/en-US/fesco/Bundled_Software_policy/

To summarize, each bundled package needs to have a `Provides: bundled(package_name) = package_version`, so that its existence and potential security vulnerabilities can be identified from package metadata.

Also, each bundled package should be justified as to why it meets the policy and can't be shipped separately in Fedora.

As an example, looking at Repology, it seems like the recastnavigation package could be included in Fedora independently.

Comment 11 Claire Robsahm 2025-07-25 01:13:46 UTC
(In reply to Alexander Lent from comment #10)
> I took a quick look at the spec file - it's quite good overall - and wanted
> to note the bundling policy:
> https://docs.fedoraproject.org/en-US/fesco/Bundled_Software_policy/
> 
> To summarize, each bundled package needs to have a `Provides:
> bundled(package_name) = package_version`, so that its existence and
> potential security vulnerabilities can be identified from package metadata.
> 
> Also, each bundled package should be justified as to why it meets the policy
> and can't be shipped separately in Fedora.
> 
> As an example, looking at Repology, it seems like the recastnavigation
> package could be included in Fedora independently.

Hey, thanks for the feedback!

I think I justified adequately why I am bundling Bullet and OpenSceneGraph; both are provided by Fedora, but Bullet needs to be double precision and there's a fork of OSG provided by OpenMW that provides superior performance. I believe both of those are good explanations. 

As for Recast, I'm not sure why we don't package it. Godot also requires it, but the Fedora godot package statically links it. The CMAKE for openMW by default statically links recastnavigation rather than using the system recast; this was notable to me, as everything else was the reverse (i.e., I had to explicitly use static/non-system OSG and Bullet). To me, that indicates that recast might be better off being statically linked. However, I can ask upstream about their logic with regards to recast. As for the other two, I'll add in the Provides: bundled() in my next update; As I said, I believe I've adequately explained why I am statically linking those two.

Comment 12 Alexander Lent 2025-07-25 02:20:31 UTC
(In reply to Claire Robsahm from comment #11)
> (In reply to Alexander Lent from comment #10)
> > I took a quick look at the spec file - it's quite good overall - and wanted
> > to note the bundling policy:
> > https://docs.fedoraproject.org/en-US/fesco/Bundled_Software_policy/
> > 
> > To summarize, each bundled package needs to have a `Provides:
> > bundled(package_name) = package_version`, so that its existence and
> > potential security vulnerabilities can be identified from package metadata.
> > 
> > Also, each bundled package should be justified as to why it meets the policy
> > and can't be shipped separately in Fedora.
> > 
> > As an example, looking at Repology, it seems like the recastnavigation
> > package could be included in Fedora independently.
> 
> Hey, thanks for the feedback!

Thank you, in turn, for the clarification.

> 
> I think I justified adequately why I am bundling Bullet and OpenSceneGraph;
> both are provided by Fedora, but Bullet needs to be double precision and
> there's a fork of OSG provided by OpenMW that provides superior performance.
> I believe both of those are good explanations. 

I saw the justifications, and I agree; we have a similar situation with the OpenVINO toolkit for AI/ML packaging a custom version of libraries already otherwise packaged.

> 
> As for Recast, I'm not sure why we don't package it. Godot also requires it,
> but the Fedora godot package statically links it. The CMAKE for openMW by
> default statically links recastnavigation rather than using the system
> recast; this was notable to me, as everything else was the reverse (i.e., I
> had to explicitly use static/non-system OSG and Bullet). To me, that
> indicates that recast might be better off being statically linked. However,
> I can ask upstream about their logic with regards to recast. As for the
> other two, I'll add in the Provides: bundled() in my next update; As I said,
> I believe I've adequately explained why I am statically linking those two.

Reading the godot package, it looks like recastnavigation could be unbundled, but there were no other users at the time.
If you can get openmw upstream to allow using a system library, we could unbundle it for both; it might be worth throwing a comment about that into the specfile. (If I was a CMake wizard, I'd try patching it in myself, but alas, I am but a beginner and all my CMake patches are terrible hacks.)

Comment 13 Claire Robsahm 2025-07-25 02:56:06 UTC
(In reply to Alexander Lent from comment #12)
> Reading the godot package, it looks like recastnavigation could be
> unbundled, but there were no other users at the time.
> If you can get openmw upstream to allow using a system library, we could
> unbundle it for both; it might be worth throwing a comment about that into
> the specfile. (If I was a CMake wizard, I'd try patching it in myself, but
> alas, I am but a beginner and all my CMake patches are terrible hacks.)

Oh, it would be trivial to resolve; upstream has CMAKE flags that would allow me to use a system recastnavigation. I just find it interesting that, of all the libraries, recastnavigation is the only one that they *by default* link statically. It makes me wonder if there's something going on there. I'll ask like I said, but for now I'll add the package bundles as well as a comment in the spec file. 

I've labelled the OpenSceneGraph bundle as "OpenSceneGraph-openMW" to make clear that it is a fork of OSG. Let me know if this looks right.

SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm

Comment 14 Claire Robsahm 2025-07-25 21:46:30 UTC
I received a response from upstream on recastnav:
"They haven't tagged a release in years and we do have an opinion about which commit we want because of bugs/regressions so that's probably the primary reason to prefer static linking"

Comment 15 Claire Robsahm 2025-07-26 03:11:29 UTC
Okay. Made a bunch of changes.
First, I now use the %forgemeta macro, and I explicitly set the git tags I want to be using for each of the bundled packages. Second, I now build and run the unit tests -- which pass currently, after a minor patch file. I've also made a MR upstream to render this patch file unnecessary, see: https://gitlab.com/OpenMW/openmw/-/merge_requests/4807

I think I am ready for an official review. No one has actually claimed this ticket yet, so I'm unsure who is reviewing my package. 

SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm

Comment 16 Claire Robsahm 2025-07-26 05:14:48 UTC
Disregard post about the patch. After talking to upstream, it seems that the unit test is in fact meant to be case sensitive. I tried a lot of things to make it work, but everything I did, the test failed. Weirdly, when I installed the game via the RPM and tested in the debug console, the pointer WAS named with the correct case (ie, player not Player). I noticed that building with clang outside of mock made it work. So, I changed the toolchain from gcc to clang as a sort of Hail Mary, and lo and behold, it worked. When building with clang, the unit tests pass. When building with gcc, they fail. I'm too exhausted to figure out why at the moment, but here's the updated links. Hopefully this won't hold up the review.

SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm

Comment 17 Cristian Le 2025-07-26 16:15:46 UTC
> I'm too exhausted to figure out why at the moment, but here's the updated links

おつかれさま。The big hurdle for this package seems to be done, now there are just a few details. I'll also address some questions from the matrix chat. I will write a shorter package review once I can get fedora-review to work again and help me with the license review.

---

Some build dependencies are unused like `dos2unix`, `gnuplot`, `doxygen`, etc. If you check the built binaries/rpm, you could maybe deduce the minimum required from what packages are being linked.

---

You can use %forgesetup as a simplification for %setup. You did mention that you didn't know what the difference between -p0 and -p1 is. Basically if you look at a patch, it can look like
```
--- a/CMakeLists.txt	2025-07-08 17:22:57.205176869 -0700
+++ b/CMakeLists.txt	2025-07-08 17:24:13.512715692 -0700
```
-pN flag says to strip the first N paths (-p1 here would be a/ and b/) before applying the patch (which is done effectively in the git repo of SOURCE0, you can see the cd command in the %prep log of build.log). Generally it is best to use -p1 format because that's what github/gitlab will give you when you ask for their patch files. When writing patches you have to keep in mind:
- to use consistent `-pN` across the patches, and account for the location of the patches after everything is extracted
- the order of patches matter
- if you want to use %autosetup with more than a Source0, you need to add -a flag for the other sources as well [1]

Regarding extracting all of the other SourceN, this is done with -a flag, but keep in mind that the extracted folder of these will be less predictable. In your case you can use wildcard expansion, create symlinks in the prep phase, and so on. E.g.
```
  -DFETCHCONTENT_SOURCE_DIR_BULLET:PATH=$(echo ./bullet-*)
```

On a small side-note `%{_builddir}` is not the CMake build-dir, it's the path where the RPM is being built in (I think one directory higher than the cwd in those commands). Just a random note in case you were not aware of it.

---

When using %autorelease, please also use %autochangelog and vice-versa. There are weird breakages if only one of them is used.

---

The CMakeLists.patch is unnecessary. Instead use
```
  -DGLOBAL_DATA_PATH:PATH=%{_datadir}
```
Anything that has `option` or `set(CACHE)` you can change via `-D` variables.

---

There are a lot of options that are worth going through and see if they need to be altered. One that catches my eye is `BUILD_WIZARD`. How is the "Installation Wizard" supposed to work, and particularly can it interfere with the installed files that are packaged? Most of the flags you would be having the best knowledge to judge.

---

Regarding the previous comments about (de)bundling, these are best addressed with the other peers that use similar dependencies. I am not involved in this part of the ecosystem so I can't advise on future steps for this. But all of the reasoning you've documented look good, except for RecastNavigation. Do you want to put a TODO note about wanting to package it and what other package might use it?

---

`extern/` path shows that there a few other dependencies that should be marked as `bundled`. Although they might not be used. If they are not used, you can avoid the `bundled` and just remove the folder. If you want to be extra careful, check the license of those files and make sure it is in Allowed License even if they are not used and do not appear in the `License`

---

Is `openmw-navmeshtool` not a `-tool` binary?

---

About the usage of `clang` for toolchain, if you want a smaller hammer, you could instead filter out the test in question, maybe
```
./%{_vpath_builddir}/openmw-tests --gtest_filter="-test1:-test2"
```
The gtest executable has a good --help if you need check how to interact with it.

Using clang toolchain is also fine, just keep in mind that there can be some weirdness when linking libraries built with other toolchains.

---

License review: WIP

---

[1]: https://rpm.org/docs/4.20.x/manual/spec.html#build-scriptlets

Comment 18 Claire Robsahm 2025-07-26 17:04:32 UTC
>(In reply to Cristian Le from comment #17)
> > I'm too exhausted to figure out why at the moment, but here's the updated links
> 
> おつかれさま。The big hurdle for this package seems to be done, now there are just
> a few details. I'll also address some questions from the matrix chat. I will
> write a shorter package review once I can get fedora-review to work again
> and help me with the license review.
> 
> ---
> 
> Some build dependencies are unused like `dos2unix`, `gnuplot`, `doxygen`,
> etc. If you check the built binaries/rpm, you could maybe deduce the minimum
> required from what packages are being linked.

Fixed.

> ---
> 
> You can use %forgesetup as a simplification for %setup. You did mention that
> you didn't know what the difference between -p0 and -p1 is. Basically if you
> look at a patch, it can look like
> ```
> --- a/CMakeLists.txt	2025-07-08 17:22:57.205176869 -0700
> +++ b/CMakeLists.txt	2025-07-08 17:24:13.512715692 -0700
> ```
> -pN flag says to strip the first N paths (-p1 here would be a/ and b/)
> before applying the patch (which is done effectively in the git repo of
> SOURCE0, you can see the cd command in the %prep log of build.log).
> Generally it is best to use -p1 format because that's what github/gitlab
> will give you when you ask for their patch files. When writing patches you
> have to keep in mind:
> - to use consistent `-pN` across the patches, and account for the location
> of the patches after everything is extracted
> - the order of patches matter
> - if you want to use %autosetup with more than a Source0, you need to add -a
> flag for the other sources as well [1]
> 
> Regarding extracting all of the other SourceN, this is done with -a flag,
> but keep in mind that the extracted folder of these will be less
> predictable. In your case you can use wildcard expansion, create symlinks in
> the prep phase, and so on. E.g.
> ```
>   -DFETCHCONTENT_SOURCE_DIR_BULLET:PATH=$(echo ./bullet-*)
> ```
> On a small side-note `%{_builddir}` is not the CMake build-dir, it's the
> path where the RPM is being built in (I think one directory higher than the
> cwd in those commands). Just a random note in case you were not aware of it.

Yeah, I am aware. This was just the way I could get it to work. I could probably with autosetup get it in a better place, using your fetchcontent flags, but this is working just fine, and I think I prefer it. Will change if necessary.

> ---
> 
> When using %autorelease, please also use %autochangelog and vice-versa.
> There are weird breakages if only one of them is used.

Fixed.

> ---
> 
> The CMakeLists.patch is unnecessary. Instead use
> ```
>   -DGLOBAL_DATA_PATH:PATH=%{_datadir}
> ```
> Anything that has `option` or `set(CACHE)` you can change via `-D` variables.

I remember running into issues when I only changed the flag, but I might be misremembering. Fixed, will test and see if everything is kosher. 

> ---
> 
> There are a lot of options that are worth going through and see if they need
> to be altered. One that catches my eye is `BUILD_WIZARD`. How is the
> "Installation Wizard" supposed to work, and particularly can it interfere
> with the installed files that are packaged? Most of the flags you would be
> having the best knowledge to judge.
> 
> ---

The install wizard is really a helper to help find the data files for the game you want to play. By default, it helps locate the data files of the "well-known" roleplaying game (Morrowind), but can also locate the datafiles of other openMW compatible games. The name installation makes it somewhat confusing, but it's an essential tool for ease of use.

> Regarding the previous comments about (de)bundling, these are best addressed
> with the other peers that use similar dependencies. I am not involved in
> this part of the ecosystem so I can't advise on future steps for this. But
> all of the reasoning you've documented look good, except for
> RecastNavigation. Do you want to put a TODO note about wanting to package it
> and what other package might use it?
> 
> ---

Upstream has a preferred commit to use from recastnavigation due to regressions. Otherwise, only godot also uses it.

> `extern/` path shows that there a few other dependencies that should be
> marked as `bundled`. Although they might not be used. If they are not used,
> you can avoid the `bundled` and just remove the folder. If you want to be
> extra careful, check the license of those files and make sure it is in
> Allowed License even if they are not used and do not appear in the `License`

Added information on extern.

> ---
> 
> Is `openmw-navmeshtool` not a `-tool` binary?
> 
> ---

On first blush, yes, except the other tools are run from commandline. `openmw-navmeshtool` is part of `openmw-launcher`; the user can run it from the navigation mesh tab to pregenerate navmeshes, improving load times. Because it's part of the launcher, I included it in the main package.

> About the usage of `clang` for toolchain, if you want a smaller hammer, you
> could instead filter out the test in question, maybe
> ```
> ./%{_vpath_builddir}/openmw-tests --gtest_filter="-test1:-test2"
> ```
> The gtest executable has a good --help if you need check how to interact
> with it.
> 
> Using clang toolchain is also fine, just keep in mind that there can be some
> weirdness when linking libraries built with other toolchains.

So, I ended up talking to upstream and they found that the test always fails when run alone regardless of compiler. The issue we were having simply exposed this issue. My merge request has been approved to fix this, see: https://gitlab.com/OpenMW/openmw/-/merge_requests/4807. For now, I'm patching the MR in, since this is building the 0.49.0 release, not the latest commit.

Comment 20 Neal Gompa 2025-07-26 20:08:12 UTC
Spec review notes:

> Provides:       bundled(MysticCards)
> Provides:       bundled(DemonicLetters)

This should be bundled(fonts(<fontname>)), since these fonts are in TTF/OTF form.

> %patch 0 -p1
> %patch 1 -p1

This can be replaced with "%autopatch -p1".

> %build
> # Now, we build OpenMW.
> %cmake -G Ninja \
>     -DBUILD_OPENMW_TESTS:BOOL=ON \
>     -DBULLET_STATIC:BOOL=ON \
>     -DFETCHCONTENT_FULLY_DISCONNECTED:BOOL=ON \
>     -DFETCHCONTENT_SOURCE_DIR_BULLET:PATH=%{_builddir}/bullet \
>     -DFETCHCONTENT_SOURCE_DIR_OSG:PATH:PATH=%{_builddir}/osg \
>     -DFETCHCONTENT_SOURCE_DIR_RECASTNAVIGATION:PATH=%{_builddir}/recastnavigation \
>     -DGLOBAL_DATA_PATH:PATH=%{_datadir} \
>     -DOPENMW_USE_SYSTEM_BULLET:BOOL=OFF \
>     -DOPENMW_USE_SYSTEM_GOOGLETEST:BOOL=ON \
>     -DOPENMW_USE_SYSTEM_OSG:BOOL=OFF \
>     -DOSG_STATIC:BOOL=ON

Unless you plan to ship this in EPEL 8/9, it would be good to move the %cmake invocation to the %conf section.

Cf. https://rpm-software-management.github.io/rpm/manual/spec.html#conf-since-rpm--418

Comment 21 Claire Robsahm 2025-07-26 22:56:13 UTC
(In reply to Neal Gompa from comment #20)
> Spec review notes:
> 
> > Provides:       bundled(MysticCards)
> > Provides:       bundled(DemonicLetters)
> 
> This should be bundled(fonts(<fontname>)), since these fonts are in TTF/OTF
> form.

Fixed.

> > %patch 0 -p1
> > %patch 1 -p1
> 
> This can be replaced with "%autopatch -p1".

Only one patch is necessary as I symlink the font now.

> > %build
> > # Now, we build OpenMW.
> > %cmake -G Ninja \
> >     -DBUILD_OPENMW_TESTS:BOOL=ON \
> >     -DBULLET_STATIC:BOOL=ON \
> >     -DFETCHCONTENT_FULLY_DISCONNECTED:BOOL=ON \
> >     -DFETCHCONTENT_SOURCE_DIR_BULLET:PATH=%{_builddir}/bullet \
> >     -DFETCHCONTENT_SOURCE_DIR_OSG:PATH:PATH=%{_builddir}/osg \
> >     -DFETCHCONTENT_SOURCE_DIR_RECASTNAVIGATION:PATH=%{_builddir}/recastnavigation \
> >     -DGLOBAL_DATA_PATH:PATH=%{_datadir} \
> >     -DOPENMW_USE_SYSTEM_BULLET:BOOL=OFF \
> >     -DOPENMW_USE_SYSTEM_GOOGLETEST:BOOL=ON \
> >     -DOPENMW_USE_SYSTEM_OSG:BOOL=OFF \
> >     -DOSG_STATIC:BOOL=ON
> 
> Unless you plan to ship this in EPEL 8/9, it would be good to move the
> %cmake invocation to the %conf section.
> 
> Cf.
> https://rpm-software-management.github.io/rpm/manual/spec.html#conf-since-
> rpm--418

I was unaware. Fixed.

SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm

Comment 22 Claire Robsahm 2025-07-26 23:24:32 UTC
Changed some descriptions as recommended by upstream. Minor change, shouldn't need a rebuild for testing.

SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm

Comment 23 Claire Robsahm 2025-07-27 01:45:48 UTC
Final change I promise. Added one last patch file. Currently, openmw-cs doesn't work properly if run under wayland, due to OSGQT being broken. It launches, but rendering is messed up. I've modified the cs desktop file to have QT_QPA_PLATFORM=xcb as a launch argument. I also use a autopatch now.

SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm

Comment 24 Maxwell G 2025-07-27 03:29:43 UTC
> # Latest OSG OpenMW fork commit tag
> %global         tag2 43faf6fa88bd236e0911a5340bfbcbc25b3a98d9
> # Preferred commit by upstream for recastnavigation
> %global         tag3 c393777d26d2ff6519ac23612abf8af42678c9dd

These are commit hashes, not tag refs, so you should set commit2 and commit3 instead.

Comment 25 Claire Robsahm 2025-07-27 13:35:27 UTC
(In reply to Maxwell G from comment #24)
> These are commit hashes, not tag refs, so you should set commit2 and commit3
> instead.

Fixed
SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm

Comment 26 Claire Robsahm 2025-07-27 16:38:31 UTC
Update: my patch for the unit tests has been merged upstream. Patch is still included in the SRPM and spec because I am packaging release tags, not latest commit, but it does mean the patch will eventually be unnecessary. It turns out the issue was caused by a static initialization order fiasco, which is in fact the technical term, apparently.

MR: https://gitlab.com/OpenMW/openmw/-/merge_requests/4807
Merge: https://gitlab.com/OpenMW/openmw/-/commit/2051d5cbef499050ecaa76870811e91320d05380

Comment 27 Peter Lemenkov 2025-07-27 18:28:41 UTC
Now this looks just great! Claire, thank you for all your efforts! And I am certain you may remove anything right after the `%autochangelog`.

Comment 28 Peter Lemenkov 2025-07-27 18:31:54 UTC
Speaking about `Recastnavigation` - I believe we should keep it bundled right now. Perhaps in a future we could reconsider it and unbundle it but it makes a very little sense right now.

Comment 29 Claire Robsahm 2025-07-27 18:45:27 UTC
(In reply to Peter Lemenkov from comment #27)
> Now this looks just great! Claire, thank you for all your efforts! And I am
> certain you may remove anything right after the `%autochangelog`.

Thank you so much!

I removed the stuff after autochangelog as suggested.

Comment 30 Cristian Le 2025-07-27 20:52:27 UTC
Created attachment 2098477 [details]
licensecheck

Comment 31 Cristian Le 2025-07-27 21:18:01 UTC
LGTM. One minor comment about `csxcb.patch`. This only patches the desktop launcher, but running it from terminal it could still fail. You could rename the binary and make a small wrapper. It's not a blocker and you can address it at your leisure. If you have a tracker for it can you also add it in the comment?

Be careful when you `fedpkg import` that the srpm spec file is outdated and that that does not overwrite the one that you've made changes to. Also when you `fedpkg new-sources` you list all the git archive tar balls.

CMake options like `BUILD_OPENCS_TESTS`, `BUILD_COMPONENTS_TESTS` would be good to turn on, but similarly, you can do it at your leisure.

---

There are a few licenses that you should include (join everything by AND and indicate some of the sources that are relevant)

```
- bullet: Zlib AND MIT AND BSD-3-clause AND BSL-1.0 AND NTP
- OpenSourceGraph: GPL-2.0-only AND LGPL-2.1-or-later WITH WxWindows-exception-3.1 AND SGI-B-2.0
```

I have attached the full licensecheck report. Note that this does not really match the package's reported license, and might be good to double check with upstream.

---

Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed



===== MUST items =====

C/C++:
[x]: Package does not contain kernel modules.
[x]: If your application is a C or C++ application you must list a
     BuildRequires against gcc, gcc-c++ or clang.
[x]: Package does not contain any libtool archives (.la)
[x]: Package contains no static executables.
[x]: Rpath absent or only used for internal libs.

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[!]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Unknown or generated", "*No copyright* zlib License", "GNU
     General Public License v3.0 or later", "*No copyright* GNU General
     Public License, Version 3", "GNU Library General Public License v2 or
     later", "zlib License", "BSD 3-Clause License", "BSD 2-Clause
     License", "Apache License 2.0", "MIT License", "MIT License and/or
     zlib License", "Boost Software License 1.0", "Khronos License and/or
     MIT License", "GNU General Public License, Version 3", "BSD 2-clause
     FreeBSD License", "*No copyright* Public domain", "*No copyright* MIT
     License", "*No copyright* GNU General Public License v2.0 or later",
     "GNU General Public License v2.0 or later [obsolete FSF postal address
     (Temple Place)]", "GNU General Public License", "GNU Lesser General
     Public License v2.1 or later", "Public domain", "GNU General Public
     License, Version 2", "Apache License 2.0 and/or MIT License", "GNU
     General Public License v2.0 or later", "Creative Commons Attribution
     3.0", "*No copyright* Mozilla Public License 2.0", "Mozilla Public
     License 2.0", "Apache License 2.0 and/or Khronos License and/or MIT
     License", "MIT License and/or The Unlicense", "MIT Open Group
     variant", "NTP License", "SIL Open Font License 1.1", "GNU Lesser
     General Public License v2.1 or later [obsolete FSF postal address
     (Temple Place)]", "*No copyright* GNU Lesser General Public License
     v2.1 or later [obsolete FSF postal address (Temple Place)]", "GNU
     Lesser General Public License, Version 2.1", "GNU Library General
     Public License v2 or later [obsolete FSF postal address (Temple
     Place)]", "GNU Lesser General Public License v2.1 or later [obsolete
     FSF postal address (Mass Ave)]", "Khronos License", "Historical
     Permission Notice and Disclaimer - sell variant", "BSD 3-Clause
     License [generated file]", "SGI Free Software License B v2.0", "Apple
     MIT License", "BSD 3-Clause License and/or Mozilla Public License
     2.0", "Boehm GC License and/or Mozilla Public License 2.0", "*No
     copyright* Apache License 2.0". 12954 files have unknown license.
     Detailed output of licensecheck in attachement
[x]: License file installed when any subpackage combination is installed.
[x]: If the package is under multiple licenses, the licensing breakdown
     must be documented in the spec.
[x]: %build honors applicable compiler flags or justifies otherwise.
[!]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[?]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[?]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[-]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 254606 bytes in 3 files.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %license.
[x]: The License field must be a valid SPDX expression.
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Package contains desktop file if it is a GUI application.
[x]: Package installs a %{name}.desktop using desktop-file-install or
     desktop-file-validate if there is such a file.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package must not depend on deprecated() packages.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[x]: Avoid bundling fonts in non-fonts packages.
     Note: Package contains font files
[-]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[-]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Patches link to upstream bugs/comments/lists or are otherwise
     justified.
[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[?]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: %check is present and all tests pass.
[?]: Packages should try to preserve timestamps of original installed
     files.
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Fully versioned dependency in subpackages if applicable.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[!]: Spec file according to URL is the same as in SRPM.
     Note: Spec file as given by url is not the same as in SRPM (see
     attached diff).
     See: (this test has no URL)
[-]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
     Note: Arch-ed rpms have a total of 2396160 bytes in /usr/share
[x]: Rpmlint is run on debuginfo package(s).
     Note: No rpmlint messages.
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).


Rpmlint
-------
Checking: openmw-0.49.0-1.fc43.x86_64.rpm
          openmw-cs-0.49.0-1.fc43.x86_64.rpm
          openmw-tools-0.49.0-1.fc43.x86_64.rpm
          openmw-0.49.0-1.fc43.src.rpm
============================ rpmlint session starts ============================
rpmlint: 2.7.0
configuration:
    /usr/lib/python3.13/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
rpmlintrc: [PosixPath('/tmp/tmp885idw2i')]
checks: 32, packages: 4

openmw.x86_64: E: zero-length /etc/openmw/defaults-cs.bin
openmw-tools.x86_64: W: summary-ended-with-dot Utility programs for OpenMW.
openmw.x86_64: W: non-conffile-in-etc /etc/openmw/defaults-cs.bin
openmw.x86_64: W: non-conffile-in-etc /etc/openmw/defaults.bin
openmw.x86_64: W: non-conffile-in-etc /etc/openmw/gamecontrollerdb.txt
openmw.x86_64: W: non-conffile-in-etc /etc/openmw/openmw.cfg
openmw.x86_64: W: no-manual-page-for-binary openmw
openmw.x86_64: W: no-manual-page-for-binary openmw-bulletobjecttool
openmw.x86_64: W: no-manual-page-for-binary openmw-essimporter
openmw.x86_64: W: no-manual-page-for-binary openmw-iniimporter
openmw.x86_64: W: no-manual-page-for-binary openmw-launcher
openmw.x86_64: W: no-manual-page-for-binary openmw-navmeshtool
openmw.x86_64: W: no-manual-page-for-binary openmw-wizard
openmw-cs.x86_64: W: no-manual-page-for-binary openmw-cs
openmw-tools.x86_64: W: no-manual-page-for-binary bsatool
openmw-tools.x86_64: W: no-manual-page-for-binary esmtool
openmw-tools.x86_64: W: no-manual-page-for-binary niftest
openmw-cs.x86_64: W: no-documentation
openmw-tools.x86_64: W: no-documentation
openmw.src: W: name-repeated-in-summary OpenMW
openmw.x86_64: W: name-repeated-in-summary OpenMW
openmw.x86_64: W: files-duplicate /usr/share/pixmaps/openmw.png /usr/share/openmw/resources/openmw.png
openmw.x86_64: W: files-duplicate /usr/share/openmw/resources/translations/wizard_de.qm /usr/share/openmw/resources/translations/launcher_de.qm
openmw.x86_64: W: files-duplicate /usr/share/openmw/resources/vfs/mygui/openmw_mainmenu.skin.xml /usr/share/openmw/resources/vfs/mygui/openmw_dialogue_window.skin.xml
openmw-cs.x86_64: W: desktopfile-without-binary /usr/share/applications/org.openmw.cs.desktop env
openmw.x86_64: W: dangling-relative-symlink /usr/share/openmw/resources/vfs/fonts/DejaVuLGCSansMono.ttf ../../../../fonts/dejavu-lgc-sans-mono-fonts/DejaVuLGCSansMono.ttf
 4 packages and 0 specfiles checked; 1 errors, 25 warnings, 19 filtered, 1 badness; has taken 4.9 s 




Rpmlint (debuginfo)
-------------------
Checking: openmw-tools-debuginfo-0.49.0-1.fc43.x86_64.rpm
          openmw-cs-debuginfo-0.49.0-1.fc43.x86_64.rpm
          openmw-debuginfo-0.49.0-1.fc43.x86_64.rpm
============================ rpmlint session starts ============================
rpmlint: 2.7.0
configuration:
    /usr/lib/python3.13/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
rpmlintrc: [PosixPath('/tmp/tmpalji_zst')]
checks: 32, packages: 3

 3 packages and 0 specfiles checked; 0 errors, 0 warnings, 38 filtered, 0 badness; has taken 24.2 s 





Rpmlint (installed packages)
----------------------------
============================ rpmlint session starts ============================
rpmlint: 2.7.0
configuration:
    /usr/lib/python3.14/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 6

openmw.x86_64: E: zero-length /etc/openmw/defaults-cs.bin
openmw.x86_64: W: unused-direct-shlib-dependency /usr/bin/openmw-bulletobjecttool /lib64/libfontconfig.so.1
openmw.x86_64: W: unused-direct-shlib-dependency /usr/bin/openmw-essimporter /lib64/libluajit-5.1.so.2
openmw.x86_64: W: unused-direct-shlib-dependency /usr/bin/openmw-essimporter /lib64/libyaml-cpp.so.0.8
openmw.x86_64: W: unused-direct-shlib-dependency /usr/bin/openmw-essimporter /lib64/libfontconfig.so.1
openmw.x86_64: W: unused-direct-shlib-dependency /usr/bin/openmw-iniimporter /lib64/libfontconfig.so.1
openmw.x86_64: W: unused-direct-shlib-dependency /usr/bin/openmw-launcher /lib64/libz.so.1
openmw.x86_64: W: unused-direct-shlib-dependency /usr/bin/openmw-launcher /lib64/libfontconfig.so.1
openmw.x86_64: W: unused-direct-shlib-dependency /usr/bin/openmw-navmeshtool /lib64/libfontconfig.so.1
openmw.x86_64: W: unused-direct-shlib-dependency /usr/bin/openmw-wizard /lib64/libz.so.1
openmw.x86_64: W: unused-direct-shlib-dependency /usr/bin/openmw-wizard /lib64/libfontconfig.so.1
openmw-cs.x86_64: W: unused-direct-shlib-dependency /usr/bin/openmw-cs /lib64/libMyGUIEngine.so.3.4.3
openmw-cs.x86_64: W: unused-direct-shlib-dependency /usr/bin/openmw-cs /lib64/libz.so.1
openmw-tools.x86_64: W: unused-direct-shlib-dependency /usr/bin/bsatool /lib64/libfontconfig.so.1
openmw-tools.x86_64: W: unused-direct-shlib-dependency /usr/bin/esmtool /lib64/libfontconfig.so.1
openmw-tools.x86_64: W: unused-direct-shlib-dependency /usr/bin/niftest /lib64/libfontconfig.so.1
openmw-tools.x86_64: W: summary-ended-with-dot Utility programs for OpenMW.
openmw.x86_64: W: non-conffile-in-etc /etc/openmw/defaults-cs.bin
openmw.x86_64: W: non-conffile-in-etc /etc/openmw/defaults.bin
openmw.x86_64: W: non-conffile-in-etc /etc/openmw/gamecontrollerdb.txt
openmw.x86_64: W: non-conffile-in-etc /etc/openmw/openmw.cfg
openmw.x86_64: W: no-manual-page-for-binary openmw
openmw.x86_64: W: no-manual-page-for-binary openmw-bulletobjecttool
openmw.x86_64: W: no-manual-page-for-binary openmw-essimporter
openmw.x86_64: W: no-manual-page-for-binary openmw-iniimporter
openmw.x86_64: W: no-manual-page-for-binary openmw-launcher
openmw.x86_64: W: no-manual-page-for-binary openmw-navmeshtool
openmw.x86_64: W: no-manual-page-for-binary openmw-wizard
openmw-cs.x86_64: W: no-manual-page-for-binary openmw-cs
openmw-tools.x86_64: W: no-manual-page-for-binary bsatool
openmw-tools.x86_64: W: no-manual-page-for-binary esmtool
openmw-tools.x86_64: W: no-manual-page-for-binary niftest
openmw-cs.x86_64: W: no-documentation
openmw-tools.x86_64: W: no-documentation
openmw.x86_64: W: name-repeated-in-summary OpenMW
openmw.x86_64: W: files-duplicate /usr/share/pixmaps/openmw.png /usr/share/openmw/resources/openmw.png
openmw.x86_64: W: files-duplicate /usr/share/openmw/resources/translations/wizard_de.qm /usr/share/openmw/resources/translations/launcher_de.qm
openmw.x86_64: W: files-duplicate /usr/share/openmw/resources/vfs/mygui/openmw_mainmenu.skin.xml /usr/share/openmw/resources/vfs/mygui/openmw_dialogue_window.skin.xml
openmw.x86_64: W: dangling-relative-symlink /usr/share/openmw/resources/vfs/fonts/DejaVuLGCSansMono.ttf ../../../../fonts/dejavu-lgc-sans-mono-fonts/DejaVuLGCSansMono.ttf
 6 packages and 0 specfiles checked; 1 errors, 38 warnings, 61 filtered, 1 badness; has taken 3.7 s 



Source checksums
----------------
https://github.com/recastnavigation/recastnavigation/archive/c393777d26d2ff6519ac23612abf8af42678c9dd/recastnavigation-c393777d26d2ff6519ac23612abf8af42678c9dd.tar.gz :
  CHECKSUM(SHA256) this package     : fa8b901651017b20a38996bbab2d205d244328ed11778b53224282e9884e6c91
  CHECKSUM(SHA256) upstream package : fa8b901651017b20a38996bbab2d205d244328ed11778b53224282e9884e6c91
https://github.com/OpenMW/osg/archive/43faf6fa88bd236e0911a5340bfbcbc25b3a98d9/osg-43faf6fa88bd236e0911a5340bfbcbc25b3a98d9.tar.gz :
  CHECKSUM(SHA256) this package     : 10b9bef6297ca328b70a94e53538c22f764795cfd3aad504a1db16df97d0950b
  CHECKSUM(SHA256) upstream package : 10b9bef6297ca328b70a94e53538c22f764795cfd3aad504a1db16df97d0950b
https://github.com/bulletphysics/bullet3/archive/3.25/bullet3-3.25.tar.gz :
  CHECKSUM(SHA256) this package     : c45afb6399e3f68036ddb641c6bf6f552bf332d5ab6be62f7e6c54eda05ceb77
  CHECKSUM(SHA256) upstream package : c45afb6399e3f68036ddb641c6bf6f552bf332d5ab6be62f7e6c54eda05ceb77
https://gitlab.com/OpenMW/openmw/-/archive/openmw-0.49.0/openmw-openmw-0.49.0.tar.bz2 :
  CHECKSUM(SHA256) this package     : 37589376be3b4d1b0769e50093f14d015c3a436de4fae5d696a5cbe3247abf22
  CHECKSUM(SHA256) upstream package : 37589376be3b4d1b0769e50093f14d015c3a436de4fae5d696a5cbe3247abf22


Requires
--------
openmw (rpmlib, GLIBC filtered):
    dejavu-lgc-sans-mono-fonts
    libGL.so.1()(64bit)
    libMyGUIEngine.so.3.4.3()(64bit)
    libQt6Core.so.6()(64bit)
    libQt6Core.so.6(Qt_6)(64bit)
    libQt6Core.so.6(Qt_6.9)(64bit)
    libQt6Gui.so.6()(64bit)
    libQt6Gui.so.6(Qt_6)(64bit)
    libQt6Svg.so.6()(64bit)
    libQt6Svg.so.6(Qt_6)(64bit)
    libQt6Widgets.so.6()(64bit)
    libQt6Widgets.so.6(Qt_6)(64bit)
    libSDL2-2.0.so.0()(64bit)
    libX11.so.6()(64bit)
    libXinerama.so.1()(64bit)
    libXrandr.so.2()(64bit)
    libavcodec.so.61()(64bit)
    libavcodec.so.61(LIBAVCODEC_61)(64bit)
    libavformat.so.61()(64bit)
    libavformat.so.61(LIBAVFORMAT_61)(64bit)
    libavutil.so.59()(64bit)
    libavutil.so.59(LIBAVUTIL_59)(64bit)
    libboost_iostreams.so.1.83.0()(64bit)
    libboost_program_options.so.1.83.0()(64bit)
    libc.so.6()(64bit)
    libcollada-dom2.5-dp.so.0()(64bit)
    libfontconfig.so.1()(64bit)
    libfreetype.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3.1)(64bit)
    libicui18n.so.76()(64bit)
    libicuuc.so.76()(64bit)
    libjpeg.so.62()(64bit)
    libjpeg.so.62(LIBJPEG_6.2)(64bit)
    libluajit-5.1.so.2()(64bit)
    liblz4.so.1()(64bit)
    libm.so.6()(64bit)
    libopenal.so.1()(64bit)
    libpng16.so.16()(64bit)
    libpng16.so.16(PNG16_0)(64bit)
    libsqlite3.so.0()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.11)(64bit)
    libstdc++.so.6(CXXABI_1.3.13)(64bit)
    libstdc++.so.6(CXXABI_1.3.15)(64bit)
    libstdc++.so.6(CXXABI_1.3.2)(64bit)
    libstdc++.so.6(CXXABI_1.3.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libstdc++.so.6(CXXABI_1.3.7)(64bit)
    libstdc++.so.6(CXXABI_1.3.8)(64bit)
    libstdc++.so.6(CXXABI_1.3.9)(64bit)
    libswresample.so.5()(64bit)
    libswresample.so.5(LIBSWRESAMPLE_5)(64bit)
    libswscale.so.8()(64bit)
    libswscale.so.8(LIBSWSCALE_8)(64bit)
    libunshield.so.1()(64bit)
    libyaml-cpp.so.0.8()(64bit)
    libz.so.1()(64bit)
    rtld(GNU_HASH)

openmw-cs (rpmlib, GLIBC filtered):
    libGL.so.1()(64bit)
    libMyGUIEngine.so.3.4.3()(64bit)
    libQt6Core.so.6()(64bit)
    libQt6Core.so.6(Qt_6)(64bit)
    libQt6Core.so.6(Qt_6.9)(64bit)
    libQt6Gui.so.6()(64bit)
    libQt6Gui.so.6(Qt_6)(64bit)
    libQt6Network.so.6()(64bit)
    libQt6Network.so.6(Qt_6)(64bit)
    libQt6OpenGLWidgets.so.6()(64bit)
    libQt6OpenGLWidgets.so.6(Qt_6)(64bit)
    libQt6Svg.so.6()(64bit)
    libQt6Svg.so.6(Qt_6)(64bit)
    libQt6Widgets.so.6()(64bit)
    libQt6Widgets.so.6(Qt_6)(64bit)
    libSDL2-2.0.so.0()(64bit)
    libboost_iostreams.so.1.83.0()(64bit)
    libboost_program_options.so.1.83.0()(64bit)
    libc.so.6()(64bit)
    libcollada-dom2.5-dp.so.0()(64bit)
    libfontconfig.so.1()(64bit)
    libfreetype.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3.1)(64bit)
    libjpeg.so.62()(64bit)
    libjpeg.so.62(LIBJPEG_6.2)(64bit)
    liblz4.so.1()(64bit)
    libm.so.6()(64bit)
    libpng16.so.16()(64bit)
    libpng16.so.16(PNG16_0)(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.15)(64bit)
    libstdc++.so.6(CXXABI_1.3.2)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libstdc++.so.6(CXXABI_1.3.8)(64bit)
    libstdc++.so.6(CXXABI_1.3.9)(64bit)
    libyaml-cpp.so.0.8()(64bit)
    libz.so.1()(64bit)
    openmw(x86-64)
    rtld(GNU_HASH)

openmw-tools (rpmlib, GLIBC filtered):
    libGL.so.1()(64bit)
    libboost_iostreams.so.1.83.0()(64bit)
    libboost_program_options.so.1.83.0()(64bit)
    libc.so.6()(64bit)
    libcollada-dom2.5-dp.so.0()(64bit)
    libfontconfig.so.1()(64bit)
    libfreetype.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3.1)(64bit)
    libjpeg.so.62()(64bit)
    libjpeg.so.62(LIBJPEG_6.2)(64bit)
    liblz4.so.1()(64bit)
    libm.so.6()(64bit)
    libpng16.so.16()(64bit)
    libpng16.so.16(PNG16_0)(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.15)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libstdc++.so.6(CXXABI_1.3.8)(64bit)
    libstdc++.so.6(CXXABI_1.3.9)(64bit)
    libz.so.1()(64bit)
    openmw(x86-64)
    rtld(GNU_HASH)



Provides
--------
openmw:
    application()
    application(org.openmw.launcher.desktop)
    bundled(OpenSceneGraph-OpenMW)
    bundled(bullet)
    bundled(fonts(DemonicLetters))
    bundled(fonts(MysticCards))
    bundled(recastnavigation)
    bundled(sol3)
    metainfo()
    metainfo(openmw.appdata.xml)
    openmw
    openmw(x86-64)

openmw-cs:
    application()
    application(org.openmw.cs.desktop)
    openmw-cs
    openmw-cs(x86-64)

openmw-tools:
    openmw-tools
    openmw-tools(x86-64)


Generated by fedora-review 0.10.0 (e79b66b) last change: 2023-07-24
Command line :/usr/bin/fedora-review -n openmw
Buildroot used: fedora-rawhide-x86_64
Active plugins: Shell-api, Generic, C/C++
Disabled plugins: Ocaml, Java, SugarActivity, R, PHP, Haskell, Perl, Python, fonts
Disabled flags: EXARCH, EPEL6, EPEL7, DISTTAG, BATCH

Comment 32 Claire Robsahm 2025-07-27 21:41:36 UTC
Licensed fixed, and apparently the FPC exception thing is outdated, so the review should be good now once you approve it! In the meantime I am running a scratch build and will post the results here when it completes. For now; here's the updated spec

SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm

Comment 33 Cristian Le 2025-07-27 22:11:51 UTC
There are a few ExcludeArch that appear to be needed, but you can add them at the import. The license text is corrected which is the most important, and I hope it can be corrected in the original spec files as well. Other things can be investigated later on.

Package Approved!

Comment 34 Claire Robsahm 2025-07-27 22:18:28 UTC
(In reply to Cristian Le from comment #33)
> There are a few ExcludeArch that appear to be needed, but you can add them
> at the import. The license text is corrected which is the most important,
> and I hope it can be corrected in the original spec files as well. Other
> things can be investigated later on.
> 
> Package Approved!

Thank you! For reference, I just added some ExcludeArches and will go from there

SPEC URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/openmw.spec
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-1.fc42.src.rpm

Comment 35 Fedora Admin user for bugzilla script actions 2025-07-27 22:24:29 UTC
The Pagure repository was created at https://src.fedoraproject.org/rpms/openmw

Comment 36 Fedora Update System 2025-07-28 02:21:16 UTC
FEDORA-2025-c1cbce3f21 (openmw-0.49.0-2.fc43) has been submitted as an update to Fedora 43.
https://bodhi.fedoraproject.org/updates/FEDORA-2025-c1cbce3f21

Comment 37 Fedora Update System 2025-07-28 04:04:15 UTC
FEDORA-2025-c1cbce3f21 (openmw-0.49.0-2.fc43) has been pushed to the Fedora 43 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 38 Fedora Review Service 2025-08-04 00:48:51 UTC
There seems to be some problem with the following file.
SRPM URL: https://git.chapien.net/chapien/openmw-rpm/raw/branch/main/SRPMS/openmw-0.49.0-5.fc42.src.rpm
Fetching it results in a 404 Not Found error.
Please make sure the URL is correct and publicly available.


---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.


Note You need to log in before you can comment on or make changes to this bug.