Bug 1188093 - Review Request: qtile - A pure-Python tiling window manager
Summary: Review Request: qtile - A pure-Python tiling window manager
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Rex Dieter
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 1131825 (view as bug list)
Depends On:
Blocks: 1191544
TreeView+ depends on / blocked
 
Reported: 2015-02-02 03:51 UTC by Mairi Dulaney
Modified: 2015-02-27 00:25 UTC (History)
5 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2015-02-24 15:41:09 UTC
Type: ---
Embargoed:
rdieter: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)
licensescheck.txt from fedora-review (6.55 KB, text/plain)
2015-02-06 17:02 UTC, Björn Esser (besser82)
no flags Details

Description Mairi Dulaney 2015-02-02 03:51:56 UTC
Spec URL: https://jdulaney.fedorapeople.org/qtile.spec
SRPM URL: https://jdulaney.fedorapeople.org/qtile-0.9.0-1.fc22.src.rpm
Description: 
A pure-Python tiling window manager.

Features
========

    * Simple, small and extensible. It's easy to write your own layouts,
      widgets and commands.
    * Configured in Python.
    * Command shell that allows all aspects of
      Qtile to be managed and inspected.
    * Complete remote scriptability - write scripts to set up workspaces,
      manipulate windows, update status bar widgets and more.
    * Qtile's remote scriptability makes it one of the most thoroughly
      unit-tested window mangers around.
Fedora Account System Username:  jdulaney

Comment 2 Rex Dieter 2015-02-06 16:09:40 UTC
Informal comment:

No need for desktop-file-validate to be used here, that's only for GUI items to appear in menus, e.g. packages that own .desktop content under /usr/share/applications

Comment 3 Mairi Dulaney 2015-02-06 16:24:35 UTC
Second correction because I fail:
Spec URL: https://jdulaney.fedorapeople.org/qtile.spec
SRPM URL:  https://jdulaney.fedorapeople.org/qtile-0.9.0-2.fc22.src.rpm

Comment 4 Björn Esser (besser82) 2015-02-06 16:25:15 UTC
Taking this ^^

Comment 5 Raphael Groner 2015-02-06 16:31:29 UTC
*** Bug 1131825 has been marked as a duplicate of this bug. ***

Comment 6 Björn Esser (besser82) 2015-02-06 17:02:13 UTC
Package Review
==============

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


Issues:
=======
- Package uses either %{buildroot} or $RPM_BUILD_ROOT
  Note: Using both %{buildroot} and $RPM_BUILD_ROOT
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#macros

  ---> Use either one or the other…  ;)


===== 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.
[!]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses found:
     "MIT/X11 (BSD like)", "Apache (v2.0)", "GPL (v3 or later)", "Unknown or
     generated". 137 files have unknown license. Detailed output of
     licensecheck in
     /home/besser82/shared/fedora/review/1188093-qtile/licensecheck.txt

     ---> Package is not MIT-only…  Please provide proper license-
          breakdown in spec-file.  Lecensecheck.txt is attached.

[!]: Package requires other packages for directories it uses.
     Note: No known owner of /usr/lib/python2.7/site-
     packages/qtile-0.9.0-py2.7.egg-info, /usr/lib/python2.7/site-
     packages/libqtile
[!]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/lib/python2.7/site-
     packages/libqtile, /usr/lib/python2.7/site-packages/qtile-0.9.0-py2.7
     .egg-info

     ---> Please change the %files-section in spec-file to fix this:
          -%{python2_sitelib}/qtile-%{version}-py2.7.egg-info/*
          -%{python2_sitelib}/libqtile/*
          +%{python2_sitelib}/qtile-%{version}-py%{python2_version}.egg-info
          +%{python2_sitelib}/libqtile

[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.
[!]: Package consistently uses macros (instead of hard-coded directory names).

     ---> "py2.7.egg-info" vs. "py%{python2_version}.egg-info"

[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.
[-]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 10240 bytes in 2 files.
[!]: Package complies to the Packaging Guidelines

     ---> Severe errors / issues are present…  ;(

[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 %doc.
[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 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]: Package does not contain duplicates in %files.
[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 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

Python:
[x]: Python eggs must not download any dependencies during the build process.
[x]: A package which is used by another package via an egg interface should
     provide egg info.
[x]: Package meets the Packaging Guidelines::Python
[x]: Package contains BR: python2-devel or python3-devel
[x]: Binary eggs must be removed in %prep


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

Generic:
[!]: If the source package does not include license text(s) as a separate file
     from upstream, the packager SHOULD query upstream to include it.

     ---> There are LICENSE-files missing for the mixed-up
          licensing in sources.

[!]: Final provides and requires are sane (see attachments).

     ---> Package requires /usr/bin/env.  Wrong hash-bang?

[?]: Package functions as described.

     ---> not tested, yet;  packaging-issues present.

[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[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.

     ---> There is test-suite provided by the package, but not run
          during %check.

[!]: Packages should try to preserve timestamps of original installed files.

     ---> use `install -pm` instead of simple `install -m`.

[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[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 (not strictly required in GL).
[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).
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: qtile-0.9.0-2.fc22.noarch.rpm
          qtile-0.9.0-2.fc22.src.rpm
qtile.noarch: W: spelling-error %description -l en_US scriptability -> script ability, script-ability, inscrutability
qtile.noarch: W: spelling-error %description -l en_US workspaces -> work spaces, work-spaces, works paces
qtile.src: W: spelling-error %description -l en_US scriptability -> script ability, script-ability, inscrutability
qtile.src: W: spelling-error %description -l en_US workspaces -> work spaces, work-spaces, works paces

--->  Please double-check spelling.

qtile.noarch: W: no-manual-page-for-binary qtile-session
qtile.noarch: W: no-manual-page-for-binary qtile-run

---> Ignored.

qtile.src: W: file-size-mismatch v0.9.0.tar.gz = 280935, https://github.com/qtile/qtile/archive/v0.9.0.tar.gz = 280182

---> dafuq?  Please remove the tarball in your SOURCES-dir and
     re-download it using `spectool -g -R ./qtile.spec`.

2 packages and 0 specfiles checked; 0 errors, 7 warnings.


Rpmlint (installed packages)
----------------------------
Cannot parse rpmlint output:

---> Possibly a bug in rpmlint…  :/


Requires
--------
qtile (rpmlib, GLIBC filtered):
    /usr/bin/env
    /usr/bin/python2
    python(abi)
    python-cairocffi
    python-cffi
    python-trollius
    python-xcffib


Provides
--------
qtile:
    qtile


Source checksums
----------------
https://github.com/qtile/qtile/archive/v0.9.0.tar.gz :
  CHECKSUM(SHA256) this package     : c92c089ede32643a828b19fecda1184ae21d2ec0007cbea37a2ede575ce8cc34
  CHECKSUM(SHA256) upstream package : a49930358b282085afe6f84800a01f7495009da4024d46a0ddceb0f287e0aed6
However, diff -r shows no differences


Generated by fedora-review 0.5.2 (63c24cb) last change: 2014-07-14
Command line :/usr/bin/fedora-review -m fedora-rawhide-x86_64 -b 1188093
Buildroot used: fedora-rawhide-x86_64
Active plugins: Python, Generic, Shell-api
Disabled plugins: Java, C/C++, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP, Ruby
Disabled flags: EXARCH, EPEL5, BATCH, DISTTAG


===== Additional remarks =====

  * Installation of man-pages in %files
    -%{_mandir}/man1/qsh.1.gz
    -%{_mandir}/man1/qtile.1.gz
    +%{_mandir}/man1/qsh.1.*
    +%{_mandir}/man1/qtile.1.

    ---> Compression might change on further releases.  Avoid FTBFS…

  * Usage of %setup:
    -%setup -q -n qtile-%{version}
    +%setup -q -n qtile-%{version}

    ---> %setup defaults to -n %{name}-%{version} anyways.


===== Solution =====

NOT approved.  Please fix those issues and I'll have another look.

Comment 7 Björn Esser (besser82) 2015-02-06 17:02:51 UTC
Created attachment 988980 [details]
licensescheck.txt from fedora-review

Comment 8 Raphael Groner 2015-02-06 18:37:26 UTC
qtile.noarch: W: no-manual-page-for-binary qtile-session
qtile.noarch: W: no-manual-page-for-binary qtile-run

---> Ignored.  

Hint: You can use help2man to generate some nice manpages if there's some useful output for the --help or -h parameter option. But that is not a must. Some samples could be found in my packages ;)
https://fedorahosted.org/fpc/ticket/486

Comment 9 Björn Esser (besser82) 2015-02-07 07:24:33 UTC
(In reply to Raphael Groner from comment #8)
> qtile.noarch: W: no-manual-page-for-binary qtile-session
> qtile.noarch: W: no-manual-page-for-binary qtile-run
> 
> ---> Ignored.  
> 
> Hint: You can use help2man to generate some nice manpages if there's some
> useful output for the --help or -h parameter option. But that is not a must.
> Some samples could be found in my packages ;)
> https://fedorahosted.org/fpc/ticket/486

I intentionally ignored the absence of man-pages in this review run…  There are real errors to fix in the spec-file.  Creating man-pages with `help2man` is bonus-score, when everything else is fine and compliant to the guidelines.

Comment 10 Christopher Meng 2015-02-07 12:51:25 UTC
John, please add me as comaintainer, my FAS ID is cicku. I submitted this initially but I didn't read the email so I failed to update it, it's disappointing to see the wipe out.

Comment 11 Mairi Dulaney 2015-02-07 13:18:46 UTC
Am working with upstream to get things cleaned up.  For some reason, fedora-review keeps blowing up on my local system, dunno why.

Christopher, aye, I'll add you as co-maintainer.  Do you want to help maintain the deps I maintain, as well?

Comment 12 Christopher Meng 2015-02-09 09:10:40 UTC
(In reply to John Dulaney from comment #11)
> Am working with upstream to get things cleaned up.  For some reason,
> fedora-review keeps blowing up on my local system, dunno why.
> 
> Christopher, aye, I'll add you as co-maintainer.  Do you want to help
> maintain the deps I maintain, as well?

Sure, just add me and I will keep an eye on them when I have time.

Thanks!

Comment 13 Mairi Dulaney 2015-02-14 22:16:41 UTC
Spec URL: https://jdulaney.fedorapeople.org/qtile-0.9.1-1.fc22.src.rpm
SRPM URL: https://jdulaney.fedorapeople.org/qtile.spec


Working with upstream on issues, also fixed my own mistakes in the .spec file.  I think we're ready for another go.  Note version bump for upstream fixes.

Comment 14 Mairi Dulaney 2015-02-14 22:28:24 UTC
I should mention that a local mockbuild may fail until the updated python-xcffib makes it through mash.  Accordingly, I did a koji scratch build; the result may be found here:  https://jdulaney.fedorapeople.org/qtile-0.9.1-1.fc22.noarch.rpm

Comment 15 Mairi Dulaney 2015-02-21 01:32:05 UTC
Beuler?

Comment 16 Rex Dieter 2015-02-22 00:41:53 UTC
Taking liberty of envoking a rushed stalled reviewer process a bit, since this package review needs to be done by impending f22 feature freeze.

Comment 17 Rex Dieter 2015-02-22 01:05:02 UTC
As mentioned:

1.  MUST fix Licensing: NOT ok

In addition to MIT licensed stuff, we have
libqtile/widget/pacman.py:GPL (v3 or later)
libqtile/widget/google_calendar.py:Apache (v2.0)

So, I'd suggest using something like:
# All MIT except for:
# libqtile/widget/pacman.py:GPL (v3 or later)
# libqtile/widget/google_calendar.py:Apache (v2.0)
License: MIT and GPLv3+ and ASL 2.0


2. SHOULD replace
%files
...
%{_mandir}/man1/qsh.1.gz
%{_mandir}/man1/qtile.1.gz
with
%{_mandir}/man1/qsh.1*
%{_mandir}/man1/qtile.1*


3.  SHOULD simplify %files
I *think* there's some redundancy,
%{python2_sitelib}/qtile-%{version}-py%{python2_version}.egg-info
%{python2_sitelib}/qtile-%{version}-py%{python2_version}.egg-info/*
%{python2_sitelib}/libqtile
%{python2_sitelib}/libqtile/*
can be replaced with
%{python2_sitelib}/qtile-%{version}-py%{python2_version}.egg-info/
%{python2_sitelib}/libqtile/
(including directories implies including everything recursively under it too)


So, all I see is 1 MUST blocker (so far), the licensing.  fix that, and we should be good.

Comment 19 Raphael Groner 2015-02-22 12:27:49 UTC
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 must be included in %license. 
https://fedoraproject.org/wiki/Packaging:LicensingGuidelines#License_Text

Means: Replace the line

%doc LICENSE

with

%license LICENSE

Comment 20 Rex Dieter 2015-02-22 12:36:23 UTC
ah, that is a recent guidelines change I'd forgotten about.  I won't treat it as a blocker, but please do update to use %license tag prior to doing any builds.

2 other minor things:

Please do include the comment:
# All MIT except for:
# libqtile/widget/pacman.py:GPL (v3 or later)
# libqtile/widget/google_calendar.py:Apache (v2.0)
near the License: tag, to explain what it's all about

you should add a %changelog (and ideally bump Release: tag) entry every time you update things (even for reviews).


Otherwise, APPROVED

Comment 21 Michael Schwendt 2015-02-22 13:10:01 UTC
> No need for desktop-file-validate to be used here, that's only
> for GUI items to appear in menus, e.g. packages that own .desktop
> content under /usr/share/applications

The guidelines should be updated then to be more specific about such an exception:

  https://fedoraproject.org/wiki/Packaging:Guidelines#Desktop_files

Installing only valid .desktop files in /usr/share/xsessions would certainly be a good thing.

Comment 22 Rex Dieter 2015-02-22 13:53:04 UTC
The guideline does say 
* "If a package contains a GUI application" which this arguably is not
and
* references the desktop-entry-spec, which includes as first sentence of Introduction: "Both the KDE and GNOME desktop environments have adopted a similar format for "desktop entries", or configuration files describing how a particular program is to be launched, how it appears in menus, etc".  Again, this case is clearly not a program to be launched from a desktop environment.

Sure, that may not be obvious at first glance.  I'll see about poking fpc to update that to be clearer somehow (suggestions welcome).

Comment 23 Rex Dieter 2015-02-22 13:59:16 UTC
Maybe enough to say something like this?

This guideline applies to .desktop files installed under /usr/share/applications

or a little more verbose version:

This guidelines applies to .desktop files installed under $XDG_DATA_DIRS/applications (where XDG_DATA_DIRS defaults to /usr/local/share:/usr/share if undefined), see also:
http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

Comment 25 Mairi Dulaney 2015-02-22 19:57:27 UTC
New Package SCM Request
=======================
Package Name: qtile
Short Description: A pure-Python tiling window manager
Upstream URL: http://qtile.org
Owners: jdulaney
Branches: f22
InitialCC:

Comment 26 Michael Schwendt 2015-02-23 10:56:18 UTC
> I'll see about poking fpc to update that to be clearer somehow
> (suggestions welcome).

The current wording likely has been inherited from very old guidelines that only defined a primary goal, i.e. make packagers aware of the desktop-file tools related GUI programs where we wanted to validate and/or add an installed .desktop file as to avoid ending up with a missing menu entry.

Openbox is a GUI program, too. One could even call it "application", and that's also its "Type=" in the .desktop file. However, it does more than drawing a single window to run within. Nevertheless, do such .desktop files, which are handled by display managers, follow the Desktop Entry Specification or not? Imagine Openbox installed a .desktop file that would not be recognized by a display manager. That would be even worse than a GUI program missing in "a menu".

Comment 27 Gwyn Ciesla 2015-02-23 20:49:10 UTC
Git done (by process-git-requests).

Comment 28 Raphael Groner 2015-02-24 12:30:01 UTC
Please provide also a package for F21. It would be nice to see qtile there, too.

Comment 29 Mairi Dulaney 2015-02-24 15:41:09 UTC
Unfortunately, not quite doable unless I package up an older version.  The current release requires dependencies outside my control that are in F22 but not F21.  Also, I don't have a spec file for older qtile any more.

Comment 30 Christopher Meng 2015-02-27 00:25:44 UTC
pkgDB ACL requested.


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