Bug 1286885 - Review Request: orthorobot - A perspective based puzzle game
Review Request: orthorobot - A perspective based puzzle game
Status: CLOSED RAWHIDE
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Jiri Konecny
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2015-11-30 21:14 EST by Jeremy Newton
Modified: 2016-03-02 11:13 EST (History)
3 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2016-03-02 11:13:04 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
jkonecny: fedora‑review+


Attachments (Terms of Use)

  None (edit)
Description Jeremy Newton 2015-11-30 21:14:00 EST
Spec URL: https://dl.dropboxusercontent.com/u/42480493/orthorobot.spec
SRPM URL: https://dl.dropboxusercontent.com/u/42480493/orthorobot-1.1-1.fc22.src.rpm

Description:
Literally bridging the gap between 2D and 3D games, Ortho Robot is a
perspective based puzzle game, where you flatten the view to move
across gaps. This game is made with LOVE.

Fedora Account System Username: mystro256

RPMLINT Warnings:
orthorobot.src: W: invalid-url Source0: orthorobot-84c2c9672181e7ef6b9dd573cf4be301d7a77691.zip
orthorobot.noarch: W: no-documentation
orthorobot.noarch: W: no-manual-page-for-binary orthorobot
2 packages and 0 specfiles checked; 0 errors, 3 warnings.

The first warning is because the source is from Github; the redirect link to download it is in the comment above it. The other two warnings are negligible.
Comment 1 Link Dupont 2016-01-17 21:05:08 EST
NOTE: I can't take ownership of this review request yet as I'm not an approved maintainer yet.

orthorobot Package Review
==============

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


Issues:
=======
- Package does not contain duplicates in %files.
  Note: warning: File listed twice: /usr/share/orthorobot/orthorobot.love
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#DuplicateFiles
- It's probably a good idea to include a copy of the WTFPL license and
  include it under the %license macro.
- You can actually use a macro in the SourceURL that works with github. See https://fedoraproject.org/wiki/Packaging:SourceURL#Git_Hosting_Services for specifics. Upstream doesn't appear to create tags or tarballs, and only version their software via commit messages. I'd consider that sufficient enough to set your Version tag to 1.1, but I'd suggest encouraging upstream to use tags or other mechanisms to create proper, versioned releases.
- Add an appdata file. It makes a big difference, especially with games (https://fedoraproject.org/wiki/Packaging:AppData).


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

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.
[-]: 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]: License field in the package spec file matches the actual license.
[x]: 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.
[x]: 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.
[x]: Package is not known to require an ExcludeArch tag.
[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]: 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]: All build dependencies are listed in BuildRequires, except for any
     that are listed in the exceptions section of Packaging Guidelines.
[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]: Permissions on files are set properly.
[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]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 0 bytes in 0 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

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

Generic:
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[!]: 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]: SourceX tarball generation or download is documented.
[-]: 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]: 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]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

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

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).


Rpmlint
-------
Checking: orthorobot-1.1-1.fc23.noarch.rpm
          orthorobot-1.1-1.fc23.src.rpm
orthorobot.noarch: W: no-documentation
orthorobot.noarch: W: no-manual-page-for-binary orthorobot
orthorobot.src: W: invalid-url Source0: orthorobot-84c2c9672181e7ef6b9dd573cf4be301d7a77691.zip
2 packages and 0 specfiles checked; 0 errors, 3 warnings.




Rpmlint (installed packages)
----------------------------
sh: /usr/bin/python: No such file or directory
orthorobot.noarch: W: no-documentation
orthorobot.noarch: W: no-manual-page-for-binary orthorobot
1 packages and 0 specfiles checked; 0 errors, 2 warnings.



Requires
--------
orthorobot (rpmlib, GLIBC filtered):
    /bin/sh
    love



Provides
--------
orthorobot:
    application()
    application(orthorobot.desktop)
    orthorobot



Generated by fedora-review 0.6.0 (3c5c9d7) last change: 2015-05-20
Command line :/usr/bin/fedora-review -n orthorobot --rpm-spec
Buildroot used: fedora-23-x86_64
Active plugins: Generic, Shell-api
Disabled plugins: Java, C/C++, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP, Ruby
Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6
Comment 2 Jiri Konecny 2016-02-11 12:26:26 EST
When you have this line:
%{_datadir}/%{name}

you don't need this:
%{_datadir}/%{name}/%{name}.love


The first line tells the rpm that your package owns whole directory %{_datadir}/%{name} with all contents inside.

Please remove it.


The source link in comment is invalid, please fix the link:
https://github.com/Stabyourself/orthorobot/archive/GITHASH.zip

It doesn't matter the Source is from github you should then point the link to this github. You can use something like this:
Source0: https://github.com/Stabyourself/orthorobot/archive/%{version}.tar.gz

Also the Source1 must be a link to somewhere. If you can, you should add it to upstream and if they don't want it please upload it somewhere (the another git repository could be used).
Comment 3 Jeremy Newton 2016-02-19 15:54:51 EST
Sounds good, I've made the changes:

Spec URL: https://dl.dropboxusercontent.com/u/42480493/orthorobot.spec
SRPM URL: https://dl.dropboxusercontent.com/u/42480493/orthorobot-1.1-2.fc23.src.rpm

Some comments:
Upstream doesn't care for the desktop file, so I just used an echo command, similar to how I did the execution script.

As for the license file, I don't think upstream cares to include it, as it's at the top of all the source files, but I included it anyway, see SOURCE1.

The only rpmlint output I get now is the manpage warning
Comment 4 Jeremy Newton 2016-02-19 16:12:29 EST
Oh, before I forget, I've contacted upstream about making tags in the source git.
Comment 5 Jiri Konecny 2016-02-22 03:48:29 EST
I'm taking this review.

Hello Jeremy,

good job so far.
There should be manpage so if there is --help in this program then you can generate manpage from there, another solution is to use their documentation somewhere. You can then use tools like a2x which can convert asciidoc to manpage. I hope they have something somewhere :).

Also you should validate the desktop file in the %check section with:

desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop

Jirka
Comment 6 Jiri Konecny 2016-02-22 09:11:34 EST
Another thing you are missing for the GUI application is appdata.xml please create them:

https://fedoraproject.org/wiki/Packaging:AppData

I think better solution would be if you remove the echo command from spec file and add the appdata.xml and Desktop file as patches with the comment that they don't want it in the upstream. Also the appdata should be checked in the %check section with tool:

appstream-util validate-relax --nonet


Or you can add it to your git/gist or another service and use that as another Source. Both options should be fine and the spec file would be readable.

If you have any questions please ask.

Jirka
Comment 7 Jeremy Newton 2016-02-22 10:18:59 EST
Agreed, I can do that; I'm sure it would be cleaner as a patch.
I'll add a basic manpage and a -h/--help option to the execution script that opens the man page.

Although, is the desktop-file-validate really valuable? I was under the impression that desktop-file-install does this automatically. Or is this a new guideline I am unaware of?
Comment 8 Jiri Konecny 2016-02-22 10:45:59 EST
Jeremy,

ahh sorry. I'm still new to this packaging process so I missed that. Based on the packaging guideline you should be OK with only he desktop-file-install.

It should be fine with your manpage solution.

Jirka
Comment 9 Jeremy Newton 2016-02-22 13:26:42 EST
No worries, the packaging guidelines documentation is pretty large and can be hard to keep track of.

Although, it's probably worth noting that manpages and appdata aren't required for all packages, just a "nice to have" (hence the word "SHOULD" instead of "MUST" in the packaging guidelines).

https://fedoraproject.org/wiki/Packaging:Guidelines#Manpages
https://fedoraproject.org/wiki/Packaging:AppData#AppData_files

Also, note that it's fine to check appdata in either %install or %check, although I'm unsure if there's an appdata equivalent to desktop-file-install.

https://fedoraproject.org/wiki/Packaging:AppData#app-data-validate_usage

Updated, with no more rpmlint output:

Spec URL: https://dl.dropboxusercontent.com/u/42480493/orthorobot.spec
SRPM URL: https://dl.dropboxusercontent.com/u/42480493/orthorobot-1.1-3.fc23.src.rpm
Comment 10 Jiri Konecny 2016-03-02 03:01:53 EST
I think your package is good to go.
BTW it's really nice gameplay, thank you for packaging this :).
Comment 11 Jeremy Newton 2016-03-02 07:53:24 EST
Thanks! I'm glad you enjoyed it.
Comment 12 Gwyn Ciesla 2016-03-02 09:04:04 EST
Package request has been approved: https://admin.fedoraproject.org/pkgdb/package/orthorobot
Comment 13 Jeremy Newton 2016-03-02 11:13:04 EST
Built in rawhide, closing.

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