Bug 1199829

Summary: Review Request: gtk-theme-config - Little tool to configure GTK theme colors
Product: [Fedora] Fedora Reporter: Tonet Jallo <tonet666p>
Component: Package ReviewAssignee: Jonathan Underwood <jonathan.underwood>
Status: CLOSED WONTFIX QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: jonathan.underwood, package-review
Target Milestone: ---Flags: jonathan.underwood: 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: 2015-05-25 10:53:19 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 Tonet Jallo 2015-03-08 19:11:59 UTC
Spec URL: https://tonet666p.fedorapeople.org/gtk-theme-config.spec
SRPM URL: https://tonet666p.fedorapeople.org/gtk-theme-config-0.1-1.fc21.src.rpm
Description: 
Hi, I just finished packing this tool. Check it please, i would appreciate a review so that I can get it in to Fedora Extras.

This little tool allows anyone to change some basic elements of a GTK theme
easily (both GTK2 and GTK3) with a simple interface.

Fedora Account System Username: tonet666p

Comment 1 Tonet Jallo 2015-03-16 00:01:58 UTC
fedora-review result

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

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


Issues:
=======
- gtk-update-icon-cache is invoked in %postun and %posttrans if package
  contains icons.
  Note: icons in gtk-theme-config
  See: http://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Icon_Cache
- All build dependencies are listed in BuildRequires, except for any that are
  listed in the exceptions section of Packaging Guidelines.
  Note: These BR are not needed: gcc
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#Exceptions_2
- Package uses either %{buildroot} or $RPM_BUILD_ROOT
  Note: Using both %{buildroot} and $RPM_BUILD_ROOT
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#macros


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

Generic:
[ ]: 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:
     "Unknown or generated". 1 files have unknown license. Detailed output of
     licensecheck in /home/tnt/rpmbuild/1199829-gtk-theme-
     config/licensecheck.txt
[ ]: %build honors applicable compiler flags or justifies otherwise.
[ ]: Package contains no bundled libraries without FPC exception.
[ ]: Changelog in prescribed format.
[ ]: Sources contain only permissible code or content.
[ ]: Development files must be in a -devel package
[ ]: Package uses nothing in %doc for runtime.
[ ]: Package consistently uses macros (instead of hard-coded directory names).
[ ]: Package is named according to the Package Naming Guidelines.
[ ]: Package does not generate any conflict.
[ ]: Package obeys FHS, except libexecdir and /usr/target.
[ ]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[ ]: Requires correct, justified where necessary.
[ ]: Spec file is legible and written in American English.
[ ]: Package contains systemd file(s) if in need.
[ ]: Useful -debuginfo package or justification otherwise.
[ ]: Package is not known to require an ExcludeArch tag.
     Note: Test run failed
[ ]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Test run failed
[ ]: Packages must not store files under /srv, /opt or /usr/local
     Note: Test run failed
[ ]: 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]: 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 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]: 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.

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

Generic:
[ ]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
     Note: %clean present but not required
[ ]: If the source package does not include license text(s) as a separate file
     from upstream, the packager SHOULD query upstream to include it.
[ ]: Final provides and requires are sane (see attachments).
[ ]: Package functions as described.
[ ]: Latest version is packaged.
[ ]: Package does not include license text files separate from upstream.
[ ]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[ ]: Package should compile and build into binary rpms on all supported
     architectures.
[ ]: %check is present and all tests pass.
[ ]: Packages should try to preserve timestamps of original installed files.
[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]: Dist tag is present (not strictly required in GL).
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Uses parallel make %{?_smp_mflags} macro.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

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

Generic:
[ ]: Large data in /usr/share should live in a noarch subpackage if package is
     arched.
     Note: Test run failed
[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: gtk-theme-config-0.1-1.fc21.x86_64.rpm
          gtk-theme-config-0.1-1.fc21.src.rpm
gtk-theme-config.x86_64: W: summary-ended-with-dot C Little tool to configure GTK theme colors.
gtk-theme-config.x86_64: W: devel-file-in-non-devel-package /usr/bin/gtk-theme-config
gtk-theme-config.x86_64: W: no-manual-page-for-binary gtk-theme-config
gtk-theme-config.src: W: summary-ended-with-dot C Little tool to configure GTK theme colors.
2 packages and 0 specfiles checked; 0 errors, 4 warnings.




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


Requires
--------
gtk-theme-config (rpmlib, GLIBC filtered):
    /bin/sh
    libX11.so.6()(64bit)
    libatk-1.0.so.0()(64bit)
    libc.so.6()(64bit)
    libcairo-gobject.so.2()(64bit)
    libcairo.so.2()(64bit)
    libgdk-3.so.0()(64bit)
    libgdk_pixbuf-2.0.so.0()(64bit)
    libgio-2.0.so.0()(64bit)
    libglib-2.0.so.0()(64bit)
    libgobject-2.0.so.0()(64bit)
    libgtk-3.so.0()(64bit)
    libm.so.6()(64bit)
    libpango-1.0.so.0()(64bit)
    libpangocairo-1.0.so.0()(64bit)
    libpthread.so.0()(64bit)
    rtld(GNU_HASH)



Provides
--------
gtk-theme-config:
    application()
    application(gtk-theme-config.desktop)
    gtk-theme-config
    gtk-theme-config(x86-64)



Source checksums
----------------
https://github.com/satya164/gtk-theme-config/archive/ebbba827a5d979e8b8e6dc2a4831ab806976a6de/gtk-theme-config-ebbba827a5d979e8b8e6dc2a4831ab806976a6de.tar.gz :
  CHECKSUM(SHA256) this package     : f01de39d68af06ba931e8f18c93bfe299452caae159f614397bff9d3d8d9cd5b
  CHECKSUM(SHA256) upstream package : f01de39d68af06ba931e8f18c93bfe299452caae159f614397bff9d3d8d9cd5b


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

Comment 2 Tonet Jallo 2015-03-16 00:04:52 UTC
Koji Scratch Build results: http://koji.fedoraproject.org/koji/taskinfo?taskID=9239146

Comment 3 Tonet Jallo 2015-04-01 14:33:13 UTC
Spec URL: https://tonet666p.fedorapeople.org/gtk-theme-config.spec
SRPM URL: https://tonet666p.fedorapeople.org/gtk-theme-config-0.1-2.fc21.src.rpm

Description: 
Hi, I made a little change on %licence macro. Check it please.
Here is the Koji scratch build result: http://koji.fedoraproject.org/koji/taskinfo?taskID=9392960

Greetings


Fedora Account System Username: tonet666p

Comment 4 Jonathan Underwood 2015-04-01 16:43:58 UTC
Package Review
==============

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


Issues:
=======
- gtk-update-icon-cache is invoked in %postun and %posttrans if package
  contains icons.
  Note: icons in gtk-theme-config
  See: http://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Icon_Cache

See that page - you're missing the postrans part.

- All build dependencies are listed in BuildRequires, except for any that are
  listed in the exceptions section of Packaging Guidelines.
  Note: These BR are not needed: gcc
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#Exceptions_2

Remove the BR for gcc.

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

This needs fixing.


- All patches should have a comment linking to an upstream bug report
  or otherwise justifying why they're needed. See:

http://fedoraproject.org/wiki/Packaging:Guidelines#All_patches_should_have_an_upstream_bug_link_or_comment


- The %autosetup macro makes application of patches simpler andcould
  be used here. See:

http://fedoraproject.org/wiki/Packaging:Guidelines#.25autosetup

- Various rpmlint issues - details below.

Various issues are also detailed below - please read carefully.

===== 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:
     "Unknown or generated". 1 files have unknown license. Detailed output of
     licensecheck in /home/jgu/Fedora/1199829-gtk-theme-
     config/licensecheck.txt

gtk-theme-config.vala has no license specified - you need to work with
upstream to clarify this.

[x]: Package requires other packages for directories it uses.
     Note: No known owner of /usr/share/licenses
[x]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/share/licenses

That directory is owned by the filesystem package, but I don't think
it's necessary to Require that package

[!]: %build honors applicable compiler flags or justifies otherwise.

CFLAGS isn't being set all all by the make file. You need something like:

make %{?_smp_mflags} CFLAGS="%{optflags}"

However, it's not obvious to me how valac is calling gcc - there's no output in build.log from gcc.

[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]: Useful -debuginfo package or justification otherwise.
[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

See above.

[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 does not own files or directories owned by other packages.
[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

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

Generic:
[!]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
     Note: %clean present but not required

Remove this

[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]: 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]: 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]: Dist tag is present (not strictly required in GL).
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Uses parallel make %{?_smp_mflags} macro.
[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]: Large data in /usr/share should live in a noarch subpackage if package is
     arched.
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: gtk-theme-config-0.1-2.fc22.x86_64.rpm
          gtk-theme-config-0.1-2.fc22.src.rpm
gtk-theme-config.x86_64: W: summary-ended-with-dot C Little tool to configure GTK theme colors.

Remove the "."

gtk-theme-config.x86_64: W: devel-file-in-non-devel-package /usr/bin/gtk-theme-config

False positive

gtk-theme-config.x86_64: W: no-manual-page-for-binary gtk-theme-config

This needs remedying - please work with upstream to ship a man page.

gtk-theme-config.src: W: summary-ended-with-dot C Little tool to configure GTK theme colors.

Remove the "."

gtk-theme-config.src:59: W: macro-in-%changelog %license

Use %%license in the changelog

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




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


Requires
--------
gtk-theme-config (rpmlib, GLIBC filtered):
    /bin/sh
    libX11.so.6()(64bit)
    libatk-1.0.so.0()(64bit)
    libc.so.6()(64bit)
    libcairo-gobject.so.2()(64bit)
    libcairo.so.2()(64bit)
    libgdk-3.so.0()(64bit)
    libgdk_pixbuf-2.0.so.0()(64bit)
    libgio-2.0.so.0()(64bit)
    libglib-2.0.so.0()(64bit)
    libgobject-2.0.so.0()(64bit)
    libgtk-3.so.0()(64bit)
    libm.so.6()(64bit)
    libpango-1.0.so.0()(64bit)
    libpangocairo-1.0.so.0()(64bit)
    libpthread.so.0()(64bit)
    rtld(GNU_HASH)



Provides
--------
gtk-theme-config:
    application()
    application(gtk-theme-config.desktop)
    gtk-theme-config
    gtk-theme-config(x86-64)



Source checksums
----------------
https://github.com/satya164/gtk-theme-config/archive/ebbba827a5d979e8b8e6dc2a4831ab806976a6de/gtk-theme-config-ebbba827a5d979e8b8e6dc2a4831ab806976a6de.tar.gz :
  CHECKSUM(SHA256) this package     : f01de39d68af06ba931e8f18c93bfe299452caae159f614397bff9d3d8d9cd5b
  CHECKSUM(SHA256) upstream package : f01de39d68af06ba931e8f18c93bfe299452caae159f614397bff9d3d8d9cd5b


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

Comment 5 Jonathan Underwood 2015-04-01 17:12:17 UTC
In addition to all the points above, you also need to deal with installing the appdata file that's included in the source tarball:

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

Unfortunately the makefile doesn't install that file.

Comment 6 Tonet Jallo 2015-04-06 18:32:55 UTC
Spec URL: https://tonet666p.fedorapeople.org/gtk-theme-config.spec
SRPM URL: https://tonet666p.fedorapeople.org/gtk-theme-config-0.1-3.fc21.src.rpm
Description: 
Hi, I corrected the issues, but i still having error with the license file, i think fedora-review still consider the %doc macro and i used the %licence macro.
And, I have also a error in rpmlint section with the appdata file, but it uses the validate-relax parameter and it works.

Thanks for the review.

Greetings.

Fedora Account System Username: tonet666p

Comment 7 Jonathan Underwood 2015-04-06 19:59:42 UTC
Just a cursory look at the Spec file tells me you've not addressed all of the issues I raised previously. Eg. The summary still has a "." at the end. You've not done anything about ensuring the compiler flags are set correctly.

Please go over the list once more and ensure you've tackled all of the issues I raised before.

Comment 8 Jonathan Underwood 2015-04-06 20:34:40 UTC
Also, your spec file changelog entries need to be more informative than simply "Correcting some spec file issues". For example, you've dropped a patch - why so? That sort of information is very important  in the changelog if others are going to help maintain your package. And, in particular, it would help me to review your package changes.

Comment 9 Jonathan Underwood 2015-04-07 09:57:07 UTC
I have looked a bit more closely at the Makefile included with the project (which is a bit of a mess). Really, I think the best way to set CFLAGS reliably is to break the build vala compilation down into two steps - first run valac with the -c option to produce the c code, and then call gcc to compile the c-code. You'll need to patch the makefile to do this. Presently the way CFLAGS is used to provide options to the vala compiler is sub-optimal.

I would urge you to work with the upstream maintainer to move to a sensible build system (autotools or cmake) rather than this handcrafted and buggy Makefile.

Comment 10 Tonet Jallo 2015-04-09 02:15:32 UTC
Ok Jonathan, sorry if I still have errors, I still have problems with english, but i'm learning. I will communicate with the developer for work in that.

Thank you again Jonathan.

Have a nice day (or night).

Comment 11 Jonathan Underwood 2015-04-09 08:19:09 UTC
Hi Tonet - no problem. It's always a bit of a challenge to package a very young piece of software, but hopefully the upstream developer will be open to working with us on getting it integrated. 

I'll be travelling for the next week, so if you do upload a new package, I may not get to looking at it until I return. When I get back, if there's still problems with CFLAGS, I'll help with knocking together a CMake file to clean up the build process and allow us to set CFLAGS properly.

Comment 12 Tonet Jallo 2015-05-24 18:30:40 UTC
I was busy with my work, but i will come back to this job, I have bad notices, the upstream developer said me he abandoned the maintenance to this package, I think that mean that bug should be closed.

Comment 13 Jonathan Underwood 2015-05-25 10:53:19 UTC
OK, if this is dead upstream, I think we should not continue with the review. Still I hope it was a useful learning exercise and you'll submit more packages in the future.

Comment 14 Tonet Jallo 2015-05-25 14:08:41 UTC
Yes, i will search new packages soon, thank you for review Jonathan