[Bug 1552767] Review Request: godot - Multi-platform 2D and 3D game engine with a feature-rich editor

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://bugzilla.redhat.com/show_bug.cgi?id=1552767



--- Comment #4 from Rémi Verschelde <rverschelde@xxxxxxxxx> ---
(In reply to Neal Gompa from comment #3)
> Spec review notes:
> 
> > %if 0%{?mageia}
> > BuildRequires:  appstream-util
> > %else
> > BuildRequires:  libappstream-glib
> > %endif
> 
> This could be simplified to "BuildRequires: %{_bindir}/appstream-util"
> 
> "dnf install /usr/bin/appstream-util" works on both Fedora and Mageia, so I
> would think this should work in your spec.

Sure, will do.

> > # Git commit slightly newer than 2.87
> > # Can be unbundled if bullet 2.88+ is available
> > Provides:       bundled(bullet) = 2.87
> 
> If you know the Git commit, could you put that in the Provides versioning?
> 
> Something like the following:
> 
> Provides: bundled(bullet) = 2.87+git<commitdate>.<shorthash>

Is the `+git<commitdate>.<shorthash>` standard enough? I wouldn't want scripts
relying on parsing `bundled()` provides to break due to invalid NEVR
expressions.

How about simply specifying the commit
(d05ad4b821ba867dfd01f1e5f22c4d9d1bda6869) in a comment instead?

> > # Has some modifications for IPv6 support, upstream enet is unresponsive
> > # Should not be unbundled.
> > Provides:       bundled(enet) = 1.3.13
> 
> I checked into this, it seems like upstream seems to want a mailing list
> discussion first[1]? I'm not entirely sure what this means, but it'd be nice
> if IPv6 support was in upstream enet (there are three pull requests for
> it...)
> 
> [1]: https://github.com/lsalzman/enet/issues/78

We had very lengthy discussions before deciding to vendor and modify enet [0].

The upstream maintainer is very uncooperative (and now, completely inactive),
so all projects using enet have ended up forking it for their own usage. There
is as of yet no "main" fork to use as upstream, and we eventually wrote our own
Godot socket interface to enet, which allows for a much better integration than
if we were using the pristine code.

So currently unbundling enet is not possible, and not desired.

[0]: https://github.com/godotengine/godot/issues/6992

> > # Upstream commit from 2016, newer than 1.0.0.27 which is last tag
> > # Could be unbundled if packaged.
> > # Godot upstream will soon deprecate this "libsimplewebm" module.
> > Provides:       bundled(libwebm)
> 
> As you're an upstream developer, I would suggest that libmatroska would be a
> better alternative to libwebm (libmatroska can parse webm containers too,
> since they are a subset of mkv). But if you're deprecating it...

We're going to replace most audio and video plugins (apart from vorbis) by
pluggable libraries using the GDNative interface, so that all users can simply
pick the plugins they need without having to bundle all the world.

> > # Could be unbundled if packaged.
> > Provides:       bundled(nanosvg)
> 
> If this[2] is the nanosvg in question, I can see why it's bundled instead of
> packaged.
> 
> Could you indicate what commit is packaged in nanosvg? You can do something
> like the following:
> 
> Provides: bundled(nanosvg) = 0-0.git<commitdate>.<shorthash>
> 
> [2]: https://github.com/memononen/nanosvg

That's this nanosvg yeah, so far it's not package in distros that I know of. I
haven't actually looked into packaging it yet, but it's a header-only library
meant to be vendored by design.

The bundled commit is 9a74da4db5ac74083e444010d75114658581b9c7. Same question
as above regarding putting it as the bundled() version, can we consider that
format standard? The Bundled Software policy [1] is not really explicit.

[1]: https://fedoraproject.org/wiki/Bundled_Software_policy

> > # Could be unbundled if packaged.
> > Provides:       bundled(squish) = 1.15
> 
> Is there any reason it couldn't be packaged? It looks like libsquish is
> fairly active and releases often enough.

Not that I know of, just needs someone to package it :)

As long as Godot is the only user of this dependency, and we already provided
bundled sources, I have little incentive to package it myself. But if it were,
it's already easy to unbundle with the `builtin_squish=no` argument.

The Bundled Software policy [1] doesn't explicitly require packaging thirdparty
libraries to unbundle them, but only to use those libraries which are already
available. Still, I'm a packager and like clean things, so I might end up
packaging libsquish and thus unbundling it somewhere down the road.

> > # Can't be unbundled out-of-the-box as it uses experimental APIs available
> > # only to static linking. They're not critical features though and could
> > # maybe be patched away to link against a shared zstd.
> Provides:       bundled(zstd) = 1.3.3
> 
> Have you talked to upstream[3] about stabilizing the APIs used by Godot so
> that it can use a dynamically linked libzstd?
> 
> [3]: https://github.com/facebook/zstd

No, it's actually a Godot bug to be using experimental APIs in the first place
(just opened [2] about it). The contributor who integrated zstd likely did not
pay attention to this (those APIs are available when linking statically), I
found out that it doesn't build against system shared libraries quite recently.
AFAIK there's no reason that the stable APIs wouldn't suffice.

[2]: https://github.com/godotengine/godot/issues/17374

-- 
You are receiving this mail because:
You are on the CC list for the bug.
You are always notified about changes to this product and component
_______________________________________________
package-review mailing list -- package-review@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to package-review-leave@xxxxxxxxxxxxxxxxxxxxxxx




[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite Conditions]     [KDE Users]

  Powered by Linux