Bug 1286885

Summary: Review Request: orthorobot - A perspective based puzzle game
Product: [Fedora] Fedora Reporter: Jeremy Newton <alexjnewt>
Component: Package ReviewAssignee: Jiri Konecny <jkonecny>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: jkonecny, link, package-review
Target Milestone: ---Flags: jkonecny: 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: 2016-03-02 16:13:04 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 Jeremy Newton 2015-12-01 02:14:00 UTC
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-18 02:05:08 UTC
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 17:26:26 UTC
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 20:54:51 UTC
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 21:12:29 UTC
Oh, before I forget, I've contacted upstream about making tags in the source git.

Comment 5 Jiri Konecny 2016-02-22 08:48:29 UTC
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 14:11:34 UTC
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 15:18:59 UTC
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 15:45:59 UTC
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 18:26:42 UTC
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 08:01:53 UTC
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 12:53:24 UTC
Thanks! I'm glad you enjoyed it.

Comment 12 Gwyn Ciesla 2016-03-02 14:04:04 UTC
Package request has been approved: https://admin.fedoraproject.org/pkgdb/package/orthorobot

Comment 13 Jeremy Newton 2016-03-02 16:13:04 UTC
Built in rawhide, closing.