Bug 914798

Summary: Review Request: jvgs - Minimalistic platform game loosely based on xkcd webcomic
Product: [Fedora] Fedora Reporter: Paulo Andrade <paulo.cesar.pereira.de.andrade>
Component: Package ReviewAssignee: Jerry James <loganjerry>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: loganjerry, notting, package-review
Target Milestone: ---Flags: loganjerry: fedora-review?
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-08-20 19:43:16 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Paulo Andrade 2013-02-22 19:13:52 UTC
Spec URL: http://pcpa.fedorapeople.org/jvgs.spec
SRPM URL: http://pcpa.fedorapeople.org/jvgs-0.5-1.fc19.src.rpm
Description: This game takes place in a world much like ours, which has started
fading away. At a point where nearly everything has gone, a poet
finds himself, alone in a strange world of danger. He starts a journey
along the broken stream of thoughts that's left.
Fedora Account System Username: pcpa

Comment 1 Paulo Andrade 2013-02-22 19:18:32 UTC
About the sound track:
http://ghosts.nin.com/main/faq
and the homepage tells one of the sound authors
helped in making the game:
"The game was written by Jasper Van der Jeugt (me). I received help from Nickoli Vega, who wrote some of the poems and assisted in game design."

Sample gameplay:
https://www.youtube.com/watch?v=UauZgrnKp0c

I started making the rpm from scratch, but found
that there is an archlinux package, so, I adapted
it to make a rpm package:
https://aur.archlinux.org/packages/jvgs

Comment 2 Paulo Andrade 2013-03-17 14:57:12 UTC
Minor corrections to the package:

- Correct wrapper script to not need to pass main.lua as first argument.
- Install main binary in %%_bindir.
- Add a simple manual page to the package.
- Make the data package require the main package.

It was installing a binary in %_datadir and was not much
helpful by needing to pass main.lua as first argument.
The simple manual page describes the (3) available
options, basically one needs to pass "--witdth x --height y"
to use windowed mode, and pass "--fullscreen yes" to revert
to default fullscreen mode.

The manual page also describes the license for the code and
data files.

Spec URL: http://pcpa.fedorapeople.org/jvgs.spec
SRPM URL: http://pcpa.fedorapeople.org/jvgs-0.5-2.fc20.src.rpm

Comment 3 Jerry James 2013-04-14 04:18:24 UTC
Issues:
1. The proper build flags are not being used.  The proper *linker* flags are,
   though.
2. Where did "WTFPL" for the main package license and "CC-BY-SA" for the data
   package license come from?  The "AUTHORS" file claims that the code and
   data are GPL (no version specified), the graphics are CC0, the soundtrack
   is Creative Commons Attribution Non-Commercial Share Alike (which cannot be
   used in Fedora: see
   https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Bad_Licenses_3),
   and sound effects are the same license as Wesnoth (GPLv2+).  I'm not
   totally sure what is in each package, other than that the code is in the
   main package.  Can you explain the licensing situation, please?  (Also, are
   the reused Wesnoth files packaged?  If so, is there some way of reusing the
   existing Wesnoth packages?)
3. See https://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Icon_Cache
   for scriptlets to use with a desktop file that installs an icon.
4. According to
   https://fedoraproject.org/wiki/Packaging:Guidelines#Avoid_bundling_of_fonts_in_other_packages
   you should not bundle the one font file into the -data subpackage.  However,
   this is only a *should*, not a *must*, and I'm not at all convinced that you
   should change the package.
5. The man page is installed into man6, but it says (1) on the actual page.

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

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



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

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: Package does not contain any libtool archives (.la)
[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.
[!]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[x]: Development files must be in a -devel package
[x]: Package requires other packages for directories it uses.
[x]: Package uses nothing in %doc for runtime.
[x]: Package is not known to require ExcludeArch.
[x]: Fully versioned dependency in subpackages, if present.
[x]: Package complies to the Packaging Guidelines
[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 %doc.
[!]: License field in the package spec file matches the actual license.
[x]: License file installed when any subpackage combination is installed.
[x]: Package consistently uses macro is (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[x]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Package must own all directories that it creates.
[x]: Package does not own files or directories owned by other packages.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[x]: Package contains systemd file(s) if in need.
[x]: update-desktop-database is invoked when required
[x]: Useful -debuginfo package or justification otherwise.
[x]: Large documentation must go in a -doc subpackage.
     Note: Documentation size is 10240 bytes in 2 files.
[x]: All build dependencies are listed in BuildRequires, except for any that
     are listed in the exceptions section of Packaging Guidelines.
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Each %files section contains %defattr if rpm < 4.4
[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 if there is
     such a file.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Spec file lacks Packager, Vendor, PreReq tags.
[x]: Package use %makeinstall only when make install' ' DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package do not use a name that already exist
[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
[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).

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

Generic:
[!]: Avoid bundling fonts in non-fonts packages.
     Note: Package contains font files
[x]: 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).
[x]: 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.
[x]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[!]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed files.
[x]: Sources can be downloaded from URI in Source: tag
[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]: Dist tag is present.
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Uses parallel make.
[x]: SourceX tarball generation or download is documented.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define.

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

Generic:
[x]: Large data in /usr/share should live in a noarch subpackage if package is
     arched.
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: jvgs-0.5-2.fc20.x86_64.rpm
          jvgs-data-0.5-2.fc20.noarch.rpm
jvgs.x86_64: W: spelling-error Summary(en_US) Minimalistic -> Minimalist, Minimalism, Animistic
jvgs.x86_64: W: spelling-error Summary(en_US) xkcd
jvgs.x86_64: W: spelling-error Summary(en_US) webcomic -> web comic, web-comic, economic
jvgs.x86_64: W: no-manual-page-for-binary jvgs.exe
jvgs-data.noarch: W: no-documentation
jvgs-data.noarch: E: zero-length /usr/share/jvgs/resources/level-end/girl.lua
2 packages and 0 specfiles checked; 1 errors, 5 warnings.




Rpmlint (installed packages)
----------------------------
# rpmlint jvgs jvgs-data
jvgs.x86_64: W: spelling-error Summary(en_US) Minimalistic -> Minimalist, Minimalism, Animistic
jvgs.x86_64: W: spelling-error Summary(en_US) xkcd
jvgs.x86_64: W: spelling-error Summary(en_US) webcomic -> web comic, web-comic, economic
jvgs.x86_64: W: no-manual-page-for-binary jvgs.exe
jvgs-data.noarch: W: no-documentation
jvgs-data.noarch: E: zero-length /usr/share/jvgs/resources/level-end/girl.lua
2 packages and 0 specfiles checked; 1 errors, 5 warnings.
# echo 'rpmlint-done:'



Requires
--------
jvgs (rpmlib, GLIBC filtered):
    /bin/sh
    jvgs-data
    libGL.so.1()(64bit)
    libGLU.so.1()(64bit)
    libSDL-1.2.so.0()(64bit)
    libSDL_mixer-1.2.so.0()(64bit)
    libX11.so.6()(64bit)
    libXext.so.6()(64bit)
    libc.so.6()(64bit)
    libfreetype.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    liblua-5.1.so()(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libtinyxml.so.0()(64bit)
    libz.so.1()(64bit)
    rtld(GNU_HASH)

jvgs-data (rpmlib, GLIBC filtered):
    jvgs



Provides
--------
jvgs:
    jvgs
    jvgs(x86-64)

jvgs-data:
    jvgs-data



MD5-sum check
-------------
http://downloads.sourceforge.net/jvgs/jvgs-0.5-src.tar.gz :
  CHECKSUM(SHA256) this package     : b906b96a532303df295312e7b352ab06d1c010ccf201527b2dade4634529efdb
  CHECKSUM(SHA256) upstream package : b906b96a532303df295312e7b352ab06d1c010ccf201527b2dade4634529efdb


Generated by fedora-review 0.4.0 (660ce56) last change: 2013-01-29
Buildroot used: fedora-rawhide-x86_64
Command line :/usr/bin/fedora-review -b 914798 -m fedora-rawhide-x86_64

Comment 4 Paulo Andrade 2013-04-14 18:31:27 UTC
(In reply to comment #3)
> Issues:
> 1. The proper build flags are not being used.  The proper *linker* flags are,
>    though.

  It was being hardcoded in src/CMakeLists.txt. Added a patch to revert it.

> 2. Where did "WTFPL" for the main package license and "CC-BY-SA" for the data

  The WTFPL comes from the home page http://jvgs.sourceforge.net/ as well as
the README in https://github.com/jaspervdj/jvgs
But you are right, I did not full proof check it. It appears the license
was changed after the last tarball upload to sourceforge. I changed to
use the license in the tarball, and not the one in the main page neither
in github sources.

>    package license come from?  The "AUTHORS" file claims that the code and
>    data are GPL (no version specified), the graphics are CC0, the soundtrack
>    is Creative Commons Attribution Non-Commercial Share Alike (which cannot
> be
>    used in Fedora: see
>   
> https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Bad_Licenses_3),
>    and sound effects are the same license as Wesnoth (GPLv2+).  I'm not
>    totally sure what is in each package, other than that the code is in the
>    main package.  Can you explain the licensing situation, please?  (Also,
> are
>    the reused Wesnoth files packaged?  If so, is there some way of reusing
> the
>    existing Wesnoth packages?)

  I believe it may not be reasonable to use. Probaly would need to
requires wesnoth and symlink .ogg files from wesnoth data dir, and
still, the files are likely very small. Example:
$ du -h BUILD/jvgs-0.5-src/resources/hedgehog/hedgehog.ogg 
12K     BUILD/jvgs-0.5-src/resources/hedgehog/hedgehog.ogg
and there are like only 3 or 4 of those.

> 3. See https://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Icon_Cache
>    for scriptlets to use with a desktop file that installs an icon.

  It is not under %_datadir/icons but in %_datadir/pixmaps. I have at
least one other package that installs an icon in %_datadir/pixmaps.
Should I move the icon to %_datadir/icons and add the scriptlets?

> 4. According to
>   
> https://fedoraproject.org/wiki/Packaging:
> Guidelines#Avoid_bundling_of_fonts_in_other_packages
>    you should not bundle the one font file into the -data subpackage. 
> However,
>    this is only a *should*, not a *must*, and I'm not at all convinced that
> you
>    should change the package.

  I will try to confirm what I believe to be the case, but I think
this is a specially edited/built font just for the game, to have
the hand written effect.

> 5. The man page is installed into man6, but it says (1) on the actual page.

  Ops. Fixed.

I made a new package for the sake of correcting what I could, but I will
email the author to try to clarify the license issues.

Update:

- Use license information from tarball not homepaga (#914798#3).
- Do not hardcode CMAKE_CXX_FLAGS (#914798#3).
- Correct manual page section (#914798#3).

Spec URL: http://pcpa.fedorapeople.org/jvgs.spec
SRPM URL: http://pcpa.fedorapeople.org/jvgs-0.5-3.fc20.src.rpm

Comment 5 Jerry James 2013-04-15 23:13:49 UTC
(In reply to comment #4)
>   The WTFPL comes from the home page http://jvgs.sourceforge.net/ as well as
> the README in https://github.com/jaspervdj/jvgs
> But you are right, I did not full proof check it. It appears the license
> was changed after the last tarball upload to sourceforge. I changed to
> use the license in the tarball, and not the one in the main page neither
> in github sources.

Oh, okay, I see it.  That's confusing.

Regarding Wesnoth packages: 
>   I believe it may not be reasonable to use. Probaly would need to
> requires wesnoth and symlink .ogg files from wesnoth data dir, and
> still, the files are likely very small. Example:
> $ du -h BUILD/jvgs-0.5-src/resources/hedgehog/hedgehog.ogg 
> 12K     BUILD/jvgs-0.5-src/resources/hedgehog/hedgehog.ogg
> and there are like only 3 or 4 of those.

OK, that's fine.  I just thought the question should be asked.

>   It is not under %_datadir/icons but in %_datadir/pixmaps. I have at
> least one other package that installs an icon in %_datadir/pixmaps.
> Should I move the icon to %_datadir/icons and add the scriptlets?

Oh.  Hmmm.  I don't know the answer to that question.  Just leave it alone for now, and I'll try to find out.

>   I will try to confirm what I believe to be the case, but I think
> this is a specially edited/built font just for the game, to have
> the hand written effect.

That's my opinion, too.  I don't think you need to do anything special for that one font file.

> I made a new package for the sake of correcting what I could, but I will
> email the author to try to clarify the license issues.

Great!  I'll wait for word on the license situation, then.

Comment 6 Paulo Andrade 2013-04-18 21:05:31 UTC
I received a reply a few days ago, and asked
to, if possible upload a new tarball too
sourceforge, but that should not be required,
as the confusion about WTFPL and GPL+ should
have been solved.

About the sound track, it may be required to
lift FE-LEGAL? But I believe there are other
CC-BY-SA 3.0 packages already in fedora, and
it was my understanding that it is allowed:
http://ghosts.nin.com/main/faq

I did wait a bit as I told the author it would
help if he did reply here, but that it was not
required :-)

Comment 7 Jerry James 2013-04-18 22:10:28 UTC
(In reply to comment #6)
> About the sound track, it may be required to
> lift FE-LEGAL? But I believe there are other
> CC-BY-SA 3.0 packages already in fedora, and
> it was my understanding that it is allowed:
> http://ghosts.nin.com/main/faq

Yes, CC-BY-SA 3.0 is okay.  My concern is that the AUTHORS file mentions the Creative Commons Attribution Non-Commercial Share Alike license, which is NOT the same thing as CC-BY-SA 3.0 (the problem is the "Non-Commercial" part).  So which license is the sound track actually under?

Comment 8 Paulo Andrade 2013-04-18 22:43:42 UTC
I think it is another case of the AUTHORS file
outdated. The link in the faq points to
http://creativecommons.org/licenses/by-nc-sa/3.0/us/

Comment 9 Paulo Andrade 2013-04-23 19:33:00 UTC
Upstream (Thanks Jasper!) did upload a new
0.5.1 release with updated license information.
The license file lists the package as GPLv3+.
The soundtrack as CC-BY-SA 3.0, and the Wesnoth
sound effects as GPLv2.

- Update to latest upstream release.
- Update License tag to match latest release.

Spec URL: http://pcpa.fedorapeople.org/jvgs.spec
SRPM URL: http://pcpa.fedorapeople.org/jvgs-0.5.1-1.fc20.src.rpm

Comment 10 Jerry James 2013-04-24 20:47:13 UTC
Wow, this package has had some license churn.  I see that the AUTHORS file still says:

The soundtrack was made by Nine Inch Nails and released under a Creative Commons
Attribution Non-Commercial Share Alike license. See
http://creativecommons.org/licenses/by-nc-sa/3.0/us/ and http://ghosts.nin.com
for details.

The "Non-Commercial" clause is still there, and the URL now points to the non-commercial version of the license.  That license is not acceptable for Fedora.  See https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Bad_Licenses_3

Is this correct, or a mistake of some kind?

jvgs-data.noarch: E: zero-length /usr/share/jvgs/resources/level-end/girl.lua

Comment 11 Paulo Andrade 2013-04-25 21:51:46 UTC
(In reply to comment #10)
> Wow, this package has had some license churn.  I see that the AUTHORS file
> still says:
> 
> The soundtrack was made by Nine Inch Nails and released under a Creative
> Commons
> Attribution Non-Commercial Share Alike license. See
> http://creativecommons.org/licenses/by-nc-sa/3.0/us/ and
> http://ghosts.nin.com
> for details.
> 
> The "Non-Commercial" clause is still there, and the URL now points to the
> non-commercial version of the license.  That license is not acceptable for
> Fedora.  See
> https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Bad_Licenses_3

  I think I cannot help much here :-(
Most likely the Non-Commercial, but allows fair use, etc,
is to prevent big labels from taking possession of the
work, as download of the musics is free and encouraged;
there is no obligation to buy it.

> Is this correct, or a mistake of some kind?
> 
> jvgs-data.noarch: E: zero-length /usr/share/jvgs/resources/level-end/girl.lua

I believe it is correct. The .lua level files are used to
implement event handlers, like collision check, damage, etc,
and if you play the last level you will understand why it
is empty.

Comment 12 Jerry James 2013-04-25 22:02:42 UTC
What you can do is exclude the soundtrack from the Fedora package, and include a README that says, "If you want a soundtrack for this game, make sure you can comply with the CC-BY-NC-SA 3.0 license, then download the track from such and such a URL and install it in such and such a place in the filesystem."

Will the game work if the soundtrack is missing?

Comment 13 Paulo Andrade 2013-04-26 00:05:28 UTC
(In reply to comment #12)
> What you can do is exclude the soundtrack from the Fedora package, and
> include a README that says, "If you want a soundtrack for this game, make
> sure you can comply with the CC-BY-NC-SA 3.0 license, then download the
> track from such and such a URL and install it in such and such a place in
> the filesystem."
> 
> Will the game work if the soundtrack is missing?

Moving /usr/share/jvgs/resources/music to some backup dir
and starting the game works fine (without sound of course).

I could write a README telling to download the sourceforge
tarball and copy the music to the proper place. But I
think it is better to forget about this review for
now, as the proper place for it should be rpmfusion.

Comment 14 Jerry James 2013-08-20 19:43:16 UTC
I am going to close this bug.  Sorry it didn't work out.  If anything changes, please reopen the bug.