Bug 495942 - Review Request: guimup - A GTKmm based drag-&-drop oriented client for MPD
Summary: Review Request: guimup - A GTKmm based drag-&-drop oriented client for MPD
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
low
medium
Target Milestone: ---
Assignee: Christoph Wickert
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2009-04-15 16:11 UTC by Andreas Osowski
Modified: 2009-05-20 16:48 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2009-05-20 16:48:17 UTC
Type: ---
Embargoed:
christoph.wickert: fedora-review+
kevin: fedora-cvs+


Attachments (Terms of Use)
build.log of a failed mockbuild (25.53 KB, text/plain)
2009-04-23 15:18 UTC, Christoph Wickert
no flags Details

Description Andreas Osowski 2009-04-15 16:11:53 UTC
Spec URL:
http://fedora.mkdir.name/packages/guimup-0.1.4/guimup.spec

SRPM URL:
http://fedora.mkdir.name/packages/guimup-0.1.4/guimup-0.1.4-1.fc10.src.rpm

Description:
GUIMUP is a client for the music player daemon (MPD) written
in C++ and GTKmm. The program can be used with most Linux 
desktops but, as a GTK program, is best suited for GNOME and 
XFCE.

The focus of the program is on mouse handling: 
playlist management is done entirely by drag-&-drop; 
playback functions are directly accessible from the system tray. 
Guimup turns MPD into a perfect desktop music player.

Comment 1 Christoph Wickert 2009-04-23 00:25:52 UTC
Some initial comments:

Please don't use 
%global srcname Guimup
for something that only appears twice in the spec and never changes.

Source0 gives a 403 error. This is most likely due to some weird configuration of the server, that only allows downloading via
http://www.coonsden.com/cgi-bin/ShotGun.cgi?ammo=Guimup-stable-src
Please tell upstream to stop this nonsense if he wants his package in Fedora.

The install section is broken:
  make install DESTDIR=%{buildroot} \
  	INSTALL="install -p" \
  	DESTDIR=%{buildroot}
DESTDIR is used twice

  rm -rf %{buildroot}/usr/doc
/usr should not be hardcoded, use %{_usr} instead.

The package is a gui app, but lacks a desktop file. You need to add one as described in http://fedoraproject.org/wiki/Packaging/Guidelines#Desktop_files

Macro usage is not consistent, you use both $RPM_BUILD_ROOT and %{buildroot}. See http://fedoraproject.org/wiki/Packaging:Guidelines#Using_.25.7Bbuildroot.7D_and_.25.7Boptflags.7D_vs_.24RPM_BUILD_ROOT_and_.24RPM_OPT_FLAGS

The license is not correct. The program is GPLv3+, but the copy of libmpdclient is under a different license.

remove libmpdclient.{c,h} during %prep, add libmpd-devel as BuildRequires and build against it, see 
http://fedoraproject.org/wiki/Packaging:Guidelines#Duplication_of_system_libraries
This will also clear the license issue I mentioned.

Comment 2 Andreas Osowski 2009-04-23 10:27:09 UTC
Hello, I guess I fixed everything now.
Regarding the Source0:
The url supplied in the spec file is valid and working... only the link on the upstream homepage is bad.

Spec URL:
http://fedora.mkdir.name/packages/guimup-0.1.4/guimup.spec

SRPM URL:
http://fedora.mkdir.name/packages/guimup-0.1.4/guimup-0.1.4-2.fc10.src.rpm

Comment 3 Christoph Wickert 2009-04-23 10:37:03 UTC
(In reply to comment #2)
> Hello, I guess I fixed everything now.

Thanks, I will look into this tonight.

> The url supplied in the spec file is valid and working... only the link on the
> upstream homepage is bad.

http://www.coonsden.com/dl0ads/%{srcname}-%{version}src.tar.gz resolves to
http://www.coonsden.com/dl0ads/Guimup-0.1.4src.tar.gz

$ wget http://www.coonsden.com/dl0ads/Guimup-0.1.4src.tar.gz
--2009-04-23 12:33:48--  http://www.coonsden.com/dl0ads/Guimup-0.1.4src.tar.gz
Auflösen des Hostnamen »www.coonsden.com«.... 83.137.194.17
Verbindungsaufbau zu www.coonsden.com|83.137.194.17|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 403 Forbidden
2009-04-23 12:33:48 FEHLER 403: Forbidden.

$ wget http://www.coonsden.com/cgi-bin/ShotGun.cgi?ammo=Guimup-stable-src
--2009-04-23 12:35:49--  http://www.coonsden.com/cgi-bin/ShotGun.cgi?ammo=Guimup-stable-src
Auflösen des Hostnamen »www.coonsden.com«.... 83.137.194.17
Verbindungsaufbau zu www.coonsden.com|83.137.194.17|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: nicht spezifiziert [text/html]
»Last-modified«-Kopfzeile fehlt -- Zeitstempel abgeschaltet.
--2009-04-23 12:35:49--  http://www.coonsden.com/cgi-bin/ShotGun.cgi?ammo=Guimup-stable-src
Verbindungsaufbau zu www.coonsden.com|83.137.194.17|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: nicht spezifiziert [text/html]
In »ShotGun.cgi?ammo=Guimup-stable-src« speichern.

    [ <=>                                   ] 387         --.-K/s   in 0s      

2009-04-23 12:35:49 (21,9 MB/s) - »ShotGun.cgi?ammo=Guimup-stable-src« gespeichert [387]

$ cat ShotGun.cgi\?ammo\=Guimup-stable-src 
<html><head><title>Error</title><link rel="stylesheet" type="text/css" href="http://www.coonsden.com/scripts/template.css"></head><body><span class="titleText">Error</span><blockquote>
Please either<br><br>1. Disable your download manager<br>2. Left click the file you are attempting to download<br><br>or<br><br>3. Enable your browser to send HTTP Referrers.
</blockquote></body></html>

Comment 4 Andreas Osowski 2009-04-23 10:51:24 UTC
Hey,
I'm sorry for that.
As I only tried accessing the download URL via Firefox, I didn't notice that they are checking for the user agent...
if you execute

wget "http://www.coonsden.com/dl0ads/Guimup-0.1.4src.tar.gz" -U "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032713 Fedora/3.0.8-1.fc10 Firefox/3.0.8"

It works fine.
Anyway, I'll contact upstream on this issue.

Comment 5 Christoph Wickert 2009-04-23 11:02:58 UTC
(In reply to comment #4)
> Hey,
> I'm sorry for that.

No need to feel sorry. :)

> As I only tried accessing the download URL via Firefox

Don't use firefox because of 
https://fedoraproject.org/wiki/Packaging/Guidelines#Timestamps
we need a downloadable URL.

Comment 6 Andreas Osowski 2009-04-23 12:11:24 UTC
I just talked to upstream,
he gave me links to the source on SF.

Spec URL:
http://fedora.mkdir.name/packages/guimup-0.1.4/guimup.spec

SRPM URL:
http://fedora.mkdir.name/packages/guimup-0.1.4/guimup-0.1.4-3.fc10.src.rpm

* Thu Apr 23 2009 Andreas Osowski <th0br0> 0.1.4-3
- Updated Source0

Comment 7 Christoph Wickert 2009-04-23 15:16:24 UTC
(In reply to comment #6)
> I just talked to upstream, he gave me links to the source on SF.

Argh, that was too simple ;)

REVIEW FOR 0b9b2bc803e2fac3eb5396cb225c4a5a  guimup-0.1.4-3.fc10.src.rpm

OK - MUST: rpmlint must be run on every package. The output should be posted in the review.
OK - MUST: The package is named according to the Package Naming Guidelines.
OK - MUST: The spec file name matches the base package %{name}, in the format %{name}.spec.
OK - MUST: The package meets the Packaging Guidelines.
OK - MUST: The package is licensed with a Fedora approved license and meets the Licensing Guidelines (GPLv3+).
OK - MUST: The License field in the package spec file matches the actual license.
OK - MUST: The license file from the source package is included in %doc.
OK - MUST: The spec file is in American English.
OK - MUST: The spec file for the package is legible.
OK - MUST: The sources used to build the package match the upstream source by MD5 eeccdd2ef671f191f2c9a7170df99244 
OK - MUST: The package successfully compiles and builds into binary rpms on i386
N/A - MUST: If the package does not successfully compile, build or work on an architecture, then those architectures should be listed in the spec in ExcludeArch.
OK - MUST: All build dependencies are listed in BuildRequires.
N/A - MUST: The spec file handles locales properly with the %find_lang macro.
N/A - MUST: Every binary RPM package (or subpackage) which stores shared library files (not just symlinks) in any of the dynamic linker's default paths, must call ldconfig in %post and %postun.
N/A - MUST: If the package is designed to be relocatable, the packager must state this fact in the request for review, along with the rationalization for relocation of that specific package.
OK - MUST: The package owns all directories that it creates (none except in docdir).
OK - MUST: The package does not contain any duplicate files in the %files listing.
OK - MUST: Permissions on files are set properly. The %files section includes a %defattr(...) line.
OK - MUST: The package has a %clean section, which contains rm -rf %{buildroot}.
OK - MUST: The package consistently uses macros, as described in the macros section of Packaging Guidelines.
OK - MUST: The package contains code, or permissable content.
N/A - MUST: Large documentation files should go in a -doc subpackage.
OK - MUST: Files included as %doc do not affect the runtime of the application.
N/A - MUST: Header files must be in a -devel package.
N/A - MUST: Static libraries must be in a -static package.
N/A - MUST: Packages containing pkgconfig(.pc) files must 'Requires: pkgconfig'.
N/A - MUST: If a package contains library files with a suffix (e.g. libfoo.so.1.1), then library files that end in .so (without suffix) must go in a -devel package.
N/A - MUST: In the vast majority of cases, devel packages must require the base package using a fully versioned dependency: Requires: %{name} = %{version}-%{release}
OK - MUST: The package does not contain any .la libtool archives.
OK - MUST: The package contains a GUI application and includes a %{name}.desktop file, and that file is properly installed with desktop-file-install in the %install section.
OK - MUST: The packages does not own files or directories already owned by other packages.
OK - MUST: At the beginning of %install, the package runs rm -rf %{buildroot}.
OK - MUST: All filenames in rpm packages are valid UTF-8.


SHOULD Items:
N/A - SHOULD: If the source package does not include license text(s) as a separate file from upstream, the packager SHOULD query upstream to include it.
N/A - SHOULD: The description and summary sections in the package spec file should contain translations for supported Non-English languages, if available.
FAIL - SHOULD: The the package does not build in mock due to an libtool error.
OK - SHOULD: The package should compile and build into binary rpms on all supported architectures.
FAIL - SHOULD: The package does not function as described, it initially crashes.
N/A - SHOULD: If scriptlets are used, those scriptlets must be sane.
N/A - SHOULD: Usually, subpackages other than devel should require the base package using a fully versioned dependency.
N/A - SHOULD: The placement of pkgconfig(.pc) files depends on their usecase, and this is usually for development purposes, so should be placed in a -devel pkg.
N/A - SHOULD: If the package has file dependencies outside of /etc, /bin, /sbin, /usr/bin, or /usr/sbin consider requiring the package which provides the file instead of the file itself.


Other items:
OK - Review is not a duplicate
OK - All relevant doc included
OK - Timestamps are preserved both during downlad and install
OK - Latest stable version packaged


Issues and Suggestions:
Doesn't build in mock due to a libtool error. Attaching build.log

Remove INSTALL from %doc, it only contents generic info that is not important when installing from rpm.

Remove the trailing backslash after INSTALL="install -p"

Desktop file: The key "Encoding" is no longer valid, remove that line
  Change guimup.png to guimp, see https://fedoraproject.org/wiki/Packaging/Guidelines#Icon_tag_in_Desktop_Files
  Icon: Use the 48px Icon instead of 64px
  GenericName is not really generic, just "Client for MPD" is enough here
  Category "Application" is no longer valid, see http://standards.freedesktop.org/menu-spec/latest/apa.html
  The package doesn't require any Gnome bits, so you better use the category GTK instead of GNOME.
  Add the categories Audio and Player to allow nested menus. All together it becomes: "Categories=GTK;AudioVideo;Audio;Player;"

App crashes initially:
$ guimup 
MPD: using /etc/mpd.conf
MPD: user is 
Config: using /home/chris/.guimup.conf
Autoconnecting, as configured
No host name: using "localhost"
Invalid port #: using 6600
32ece453-5526-63e6-087d32aa-0e594c9c is dumped

The previous version compiled against the included version of libmpdclient works fine though.

Comment 8 Christoph Wickert 2009-04-23 15:18:11 UTC
Created attachment 340952 [details]
build.log of a failed mockbuild

Comment 9 Andreas Osowski 2009-04-23 15:32:45 UTC
Hey,
there is no INSTALL in %doc, what are you referring to ?!?
Fixed the desktop file.
I can not reproduce the mock failure.

The crash is caused by MPD not running.
What is the best way of solving this?
Talk to upstream?

Spec URL:
http://fedora.mkdir.name/packages/guimup-0.1.4/guimup.spec

SRPM URL:
http://fedora.mkdir.name/packages/guimup-0.1.4/guimup-0.1.4-4.fc10.src.rpm

Comment 10 Christoph Wickert 2009-04-23 16:15:38 UTC
(In reply to comment #9)
> Hey,
> there is no INSTALL in %doc, what are you referring to ?!?

Sorry, I just saw the INSTALL during build, but it was the one that gets removed afterwards. My bad.

> I can not reproduce the mock failure.

Against which release did you mock it? Mine was F11, which is treated as rawhide by the mirrorlist.

> The crash is caused by MPD not running.
> What is the best way of solving this?
> Talk to upstream?

No idea, but I think we agree that it should not crash. The older package didn't crash if mpd wasn't running but starts it correctly:

$ guimup 
MPD: using /etc/mpd.conf
MPD: user is 
Config: using /home/chris/.guimup.conf
Autoconnecting, as configured
No host name: using "localhost"
Invalid port #: using 6600
Error: connection closed
Is MPD running?
Starting MPD, as configured
problem opening log file "/var/lib/mpd/mpd.log" (config line 28) for writing

So there is something not working with the communication between guimup and mpd.

I will look into the new package later. Stay tuned.

Comment 11 Christoph Wickert 2009-04-23 23:37:52 UTC
(In reply to comment #8)
> Created an attachment (id=340952) [details]
> build.log of a failed mockbuild  

While looking at the libtool issue closer I remembered that it was discussed recently on devel-list. See
https://www.redhat.com/archives/fedora-devel-list/2009-April/msg00965.html
and follow-ups, especially the one from Mamoru.


The new package aad87062659e66f7214a63cae5015934  guimup-0.1.4-4.fc10.src.rpm
fixes all outstanding issues:
OK - Trailing backslash was removed from INSTALL="install -p"
OK - Desktop file follows latest fdo specs

From a packaging point of view there are no more blockers, so the package is APPROVED.

Nevertheless I'd like to ask you to only build it for rawhide until the crash is fixed. Take your time, work it out with upstream and once it's fixed build packages for the stable releases. This also works around the current libtool problems mentioned above.

Comment 12 Andreas Osowski 2009-04-24 11:29:24 UTC
My guess here is, that if MPD can not be started by the current user, it crashes.
I shall do the CVS request though and build it on rawhide.

Upstream will release version 0.2 soon anyway, let's see if the bug will be fixed then.

Comment 13 Andreas Osowski 2009-04-24 11:30:20 UTC
New Package CVS Request
=======================
Package Name: guimup
Short Description: A GTKmm based drag-&-drop oriented client for MPD
Owners: th0br0
Branches: F-10 F-11
InitialCC: th0br0

Comment 14 Christoph Wickert 2009-04-24 11:44:45 UTC
(In reply to comment #12)
> My guess here is, that if MPD can not be started by the current user, it
> crashes.

guimupd should behave the same if compiled against libmpd-devel and the included libmpdclient.h, this means it should show the "not connected" message.

(In reply to comment #13)
> InitialCC: th0br0  

InitialCC is for people other than yourself. BTW: I suggest you apply for libmpd watchcommits in pkgdb.

Comment 15 Christoph Wickert 2009-04-25 01:24:13 UTC
Please preserve the time stamp when installing the icon.

Comment 16 Kevin Fenzi 2009-04-27 05:33:19 UTC
cvs done.

Comment 17 Andreas Osowski 2009-05-20 16:48:17 UTC
It finally built successfully on F11 and upwards thanks to Milos Jakubicek.


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