Bug 1829

Summary: Review request: deadbeef - A music player with cue sheet support
Product: Package Reviews Reporter: Alexey Komissarov <nomad71st>
Component: Review RequestAssignee: RPM Fusion Package Review <rpmfusion-package-review>
Status: RESOLVED WONTFIX    
Severity: normal CC: cwickert, dtimms, hobbes1069, kwizart, nomad71st, rpmfusion-package-review, vsncnnz4, xavier
Priority: P5    
Version: Current   
Hardware: All   
OS: GNU/Linux   
URL: http://deadbeef.sourceforge.net/
namespace:
Bug Depends on:    
Bug Blocks: 30    
Attachments: new version of deadbeef spec file
spec file 03.07.2011
spec file 03.07.2011 v2
spec file 04.07.2011
spec
spec file
spec
deadbeef spec file
deadbeef spec file
deadbeef spec file

Description Alexey Komissarov 2011-06-28 19:01:48 CEST
Hi!

Full URLs to the spec file and source rpm of the package:

Spec url: http://sourceforge.net/projects/deadbeef/files/fedora/0.4.4/deadbeef.spec/download
Src rpm url: http://sourceforge.net/projects/deadbeef/files/fedora/0.4.4/deadbeef-0.4.4-1.fc14.src.rpm/download
----------
A short description for the package:

DeaDBeeF (as in 0xDEADBEEF) is an audio player for GNU/Linux systems with X11
(though now it also runs in plain console without X, in FreeBSD, and in OpenSolaris).

It is mainly written by Alexey Yakovenko, with contributions from a lot of different people
(see about box in the player for more details).

It is distributed under the terms of General Public License version 2.
----------

Why this package is not eligible to be included in Fedora:
Package requires libmad.
----------

The output rpmlint gives on both the source and binary packages. Explain for each message why you've chosen to ignore it:

rpmlint deadbeef-0.5.1-1.fc15.src.rpm 
deadbeef.src: E: description-line-too-long C (though now it also runs in plain console without X, in FreeBSD, and in OpenSolaris).

rpmlint deadbeef-0.5.1-1.fc15.i686.rpm

deadbeef.i686: E: explicit-lib-dependency alsa-lib
deadbeef.i686: E: explicit-lib-dependency imlib2
deadbeef.i686: E: explicit-lib-dependency libX11
deadbeef.i686: E: explicit-lib-dependency libcddb
deadbeef.i686: E: explicit-lib-dependency libcdio
deadbeef.i686: E: explicit-lib-dependency libcurl
deadbeef.i686: E: explicit-lib-dependency libmad
deadbeef.i686: E: explicit-lib-dependency libmms
deadbeef.i686: E: explicit-lib-dependency libogg
deadbeef.i686: E: explicit-lib-dependency libsamplerate
deadbeef.i686: E: explicit-lib-dependency libsndfile
deadbeef.i686: E: explicit-lib-dependency libvorbis
deadbeef.i686: E: explicit-lib-dependency libzip
deadbeef.i686: E: explicit-lib-dependency pulseaudio-libs
deadbeef.i686: E: explicit-lib-dependency zlib
deadbeef.i686: E: description-line-too-long C (though now it also runs in plain console without X, in FreeBSD, and in OpenSolaris).
deadbeef.i686: E: description-line-too-long C It is mainly written by Alexey Yakovenko, with contributions from a lot of different people
deadbeef.i686: W: incoherent-version-in-changelog Yakovenko ['0.5.1-1.fc15', '0.5.1-1']
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/sndfile.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/supereq.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/wavpack.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/vfs_zip.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/vorbis.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/ddb_gui_GTK2.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/pulse.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/musepack.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/mms.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/dsp_libsrc.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/ffmpeg.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/tta.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/converter.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/hotkeys.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/flac.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/cdda.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/adplug.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/vtx.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/lastfm.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/nullout.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/alsa.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/mpgmad.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/oss.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/include/deadbeef/deadbeef.h
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/notify.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/artwork.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/include/deadbeef/gtkui_api.h
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/gme.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/dca.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/converter_gtkui.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/vfs_curl.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/ffap.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/shellexec.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/wildmidi.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/aac.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/sid.a
deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/m3u.a
deadbeef.i686: W: no-manual-page-for-binary deadbeef
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/be/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/bg/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/bn/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/ca/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/da/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/de/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/el/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/en_GB/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/es/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/fa/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/fr/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/gl/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/he/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/hr/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/hu/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/id/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/it/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/ja/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/kk/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/km/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/lg/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/nl/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/pl/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/pt/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/pt_BR/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/ru/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/sk/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/sr/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/sr@latin/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/sv/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/tr/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/uk/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/vi/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/zh_CN/LC_MESSAGES/deadbeef.mo
deadbeef.i686: W: file-not-in-%lang /usr/share/locale/zh_TW/LC_MESSAGES/deadbeef.mo
deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop file contains group "Play Shortcut Group", but groups extending the format should start with "X-"
deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop file contains group "Pause Shortcut Group", but groups extending the format should start with "X-"
deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop file contains group "Stop Shortcut Group", but groups extending the format should start with "X-"
deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop file contains group "Next Shortcut Group", but groups extending the format should start with "X-"
deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop file contains group "Prev Shortcut Group", but groups xtending the format should start with "X-"
1 packages and 0 specfiles checked; 22 errors, 74 warnings.

Really don't know what i should do with them.

deadbeef.i686: E: explicit-lib-dependency alsa-lib
without this - plugins won't be build,

deadbeef.i686: W: file-not-in-%lang 
what does this really means? I made some search on subject - bud didn't find anything

deadbeef.i686: E: invalid-desktopfil
really don't know what i should do with it -(
----------

Mention if this is your first RPM Fusion package: Yup, thats my first RPM Fusion package.
----------

Also, i am seeking sponsor.
Comment 1 Xavier Bachelot 2011-06-30 00:46:35 CEST
I'm not a sponsor but I can try to help with the first steps of the review. RPM Fusion packages are subject to the same packaging guidelines as Fedora, so please make sure to take a look at them. It'll explain a lot of what you need to do with the below rpmlint warnings.
https://fedoraproject.org/wiki/Packaging:Guidelines

> rpmlint deadbeef-0.5.1-1.fc15.i686.rpm
>
rpmlint should be run on the SRPM too. This will list some more things to fix in the spec, but let's start with what you listed first.
https://fedoraproject.org/wiki/Packaging:Guidelines#Use_rpmlint
 
> deadbeef.i686: E: explicit-lib-dependency alsa-lib
> deadbeef.i686: E: explicit-lib-dependency imlib2
> deadbeef.i686: E: explicit-lib-dependency libX11
> deadbeef.i686: E: explicit-lib-dependency libcddb
> deadbeef.i686: E: explicit-lib-dependency libcdio
> deadbeef.i686: E: explicit-lib-dependency libcurl
> deadbeef.i686: E: explicit-lib-dependency libmad
> deadbeef.i686: E: explicit-lib-dependency libmms
> deadbeef.i686: E: explicit-lib-dependency libogg
> deadbeef.i686: E: explicit-lib-dependency libsamplerate
> deadbeef.i686: E: explicit-lib-dependency libsndfile
> deadbeef.i686: E: explicit-lib-dependency libvorbis
> deadbeef.i686: E: explicit-lib-dependency libzip
> deadbeef.i686: E: explicit-lib-dependency pulseaudio-libs
> deadbeef.i686: E: explicit-lib-dependency zlib

You don't need to require the libs, they will be autodetected at build time and the proper requires added automatically. 
https://fedoraproject.org/wiki/Packaging:Guidelines#Explicit_Requires

> deadbeef.i686: E: description-line-too-long C (though now it also runs in plain
> console without X, in FreeBSD, and in OpenSolaris).
> deadbeef.i686: E: description-line-too-long C It is mainly written by Alexey
> Yakovenko, with contributions from a lot of different people

The lines in the description should not have more than 80 characters. 
https://fedoraproject.org/wiki/Packaging:Guidelines#Summary_and_description

> deadbeef.i686: W: incoherent-version-in-changelog Yakovenko ['0.5.1-1.fc15',
> '0.5.1-1']

Please add the version and release to all changelog entries.
https://fedoraproject.org/wiki/Packaging:Guidelines#Changelogs

> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/sndfile.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/supereq.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/wavpack.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/vfs_zip.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/vorbis.a
> deadbeef.i686: W: devel-file-in-non-devel-package
> /usr/lib/deadbeef/ddb_gui_GTK2.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/pulse.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/musepack.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/mms.a
> deadbeef.i686: W: devel-file-in-non-devel-package
> /usr/lib/deadbeef/dsp_libsrc.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/ffmpeg.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/tta.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/converter.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/hotkeys.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/flac.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/cdda.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/adplug.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/vtx.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/lastfm.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/nullout.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/alsa.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/mpgmad.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/oss.a
> deadbeef.i686: W: devel-file-in-non-devel-package
> /usr/include/deadbeef/deadbeef.h
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/notify.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/artwork.a
> deadbeef.i686: W: devel-file-in-non-devel-package
> /usr/include/deadbeef/gtkui_api.h
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/gme.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/dca.a
> deadbeef.i686: W: devel-file-in-non-devel-package
> /usr/lib/deadbeef/converter_gtkui.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/vfs_curl.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/ffap.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/shellexec.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/wildmidi.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/aac.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/sid.a
> deadbeef.i686: W: devel-file-in-non-devel-package /usr/lib/deadbeef/m3u.a

You should not package static files. Even better, you should not even build them. so either delete them or add --disable-static to the configure invocation.
https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries

> deadbeef.i686: W: no-manual-page-for-binary deadbeef

Harmless, but as it seems you are upstream, you can probably easily add a man page.

> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/be/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/bg/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/bn/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/ca/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/da/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/de/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/el/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/en_GB/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/es/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/fa/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/fr/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/gl/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/he/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/hr/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/hu/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/id/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/it/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/ja/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/kk/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/km/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/lg/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/nl/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/pl/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/pt/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/pt_BR/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/ru/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/sk/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/sr/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/sr@latin/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/sv/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/tr/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/uk/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/vi/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/zh_CN/LC_MESSAGES/deadbeef.mo
> deadbeef.i686: W: file-not-in-%lang
> /usr/share/locale/zh_TW/LC_MESSAGES/deadbeef.mo

Locales files should be marked as such.
https://fedoraproject.org/wiki/Packaging:Guidelines#Handling_Locale_Files

> deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop
> file contains group "Play Shortcut Group", but groups extending the format
> should start with "X-"
> deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop
> file contains group "Pause Shortcut Group", but groups extending the format
> should start with "X-"
> deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop
> file contains group "Stop Shortcut Group", but groups extending the format
> should start with "X-"
> deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop
> file contains group "Next Shortcut Group", but groups extending the format
> should start with "X-"
> deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop
> file contains group "Prev Shortcut Group", but groups xtending the format
> should start with "X-"

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

Read the guidelines and fix all of the above issues, that should be a good starting point, then run rpmlint again on both the binary rpm and the source rpm. Again, fix as much as you can, then post links to the updated versions of the spec and srpm.

Hope this helps,
Xavier
Comment 2 Alexey Komissarov 2011-07-01 14:04:45 CEST
Thank you for your reply Xavier!
I followed instuctions and thereis practically  no erros left.

rpmlint deadbeef-0.5.1-1.fc15.src.rpm 
1 packages and 0 specfiles checked; 0 errors, 0 warnings


rpmlint deadbeef-0.5.1-1.fc15.i686.rpm 
deadbeef.i686: W: no-manual-page-for-binary deadbeef
deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop file contains group "Play Shortcut Group", but groups extending the format should start with "X-"
deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop file contains group "Pause Shortcut Group", but groups extending the format should start with "X-"
deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop file contains group "Stop Shortcut Group", but groups extending the format should start with "X-"
deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop file contains group "Next Shortcut Group", but groups extending the format should start with "X-"
deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop file contains group "Prev Shortcut Group", but groups extending the format should start with "X-"
1 packages and 0 specfiles checked; 5 errors, 1 warnings.

> no-manual-page-for-binary deadbeef
Left because I think threis no need in manual for musoc player (What even can be  in manual for player with GUI?)

> deadbeef.i686: E: invalid-desktopfile /usr/share/applications/deadbeef.desktop > file contains group "Play Shortcut Group", but groups extending the format 
> should start with "X-"

Left because I don't know how to apply patch when building rpms with mock (Or i should build it with rpmbuild?)
Comment 3 Alexey Komissarov 2011-07-01 14:05:30 CEST
Created attachment 659 [details]
new version of deadbeef spec file
Comment 4 David Timms 2011-07-01 15:35:08 CEST
Some things to fix:
  whitespace: spec should use white space consistently.
- This means always use space or always tab for indentation.
- Also, remove trailing spaces and tabs from all lines.
- Looking at other specs, you'll notice that %files section do not have the lines indented.
- take a look at the spec with an editor that can show whitespace:
yum install meld
meld deadbeef.spec.orig deadbeef.spec

- I think we are supposed to avoid ".la droppings" (see the fedora guidelines), and hence shouldn't be packaging them.

- an rpm spec changelog should indicate changes only to the packaging, not to the upstream application/program. It also has a standard no indent format, and requires the change author's email.
eg: (from guidelines, 1 of 3 acceptable formats):
* Fri Jun 23 2006 Jesse Keating <jkeating@redhat.com> - 0.6-4
- fix the link syntax.
- moved .h devel files to -devel package.
- updated to upstream release 0.6.

- the upstream changelog lines could be included in a separate changelog file that gests installed as part of the install.
 
- the sourceurl must point to a direct download. sourceforge files have such a url that is required to be used.

- the warnings with desktop files do need to be taken care of. They don't appear to be in the %files list, and they are using invalid group. It doesn't look like desktop-file-install is being used.

- reduce lines to 80 chars max to assist readability.

- add multiple BuildRequires/Requires lines, with preferably one, and at most a few related items, rather than placing all items on the same line.

- also, you shouldn't add requires that rpmbuild picks up automatically (try to mock build without them to see if rpms succeeds).

- %{_defaultdocdir}/ items should probably be %doc

- %files:  you can add a directory, and it will include all files and subdirs

- are any the libs (.so) duplicates of fedora/rpm fusion supplied libs ?
Comment 5 Michael Schwendt 2011-07-02 22:28:47 CEST
> - are any the libs (.so) duplicates of fedora/rpm fusion supplied libs ?

Even if they were, currently they are stored in %{_libdir}/deadbeef/  which is a private path outside run-time linker's search path.



The packaging suffers from several
https://fedoraproject.org/wiki/Packaging:UnownedDirectories
e.g. 
  %{_defaultdocdir}/deadbeef/
  %{_datadir}/deadbeef/
  %{_datadir}/deadbeef/pixmaps/
  %{_libdir}/deadbeef/
  %{_includedir}/deadbeef/
Comment 6 Michael Schwendt 2011-07-02 22:34:15 CEST
However, with regard to unbundling system libs, the tarball includes several libraries in its "plugins" subdir. Ouch.
Comment 7 Alexey Komissarov 2011-07-03 19:51:34 CEST
I hope i fixed all mentioned errors...
As for rpmlint only errors about manual and desktop icons lefs, as was mentioned before.
Comment 8 Alexey Komissarov 2011-07-03 20:03:16 CEST
Created attachment 660 [details]
spec file 03.07.2011

> %{_libdir}/deadbeef/aac.so
> %{_libdir}/deadbeef/aac.so.0
> %{_libdir}/deadbeef/aac.so.0.0.0
Please tell me, if this lines should be change to something like 
> %{_libdir}/deadbeef/*
Comment 9 Xavier Bachelot 2011-07-03 20:32:54 CEST
(In reply to comment #8)
> > %{_libdir}/deadbeef/aac.so
> > %{_libdir}/deadbeef/aac.so.0
> > %{_libdir}/deadbeef/aac.so.0.0.0
> Please tell me, if this lines should be change to something like 
> > %{_libdir}/deadbeef/*
> 
No this would left the %{_libdir}/deadbeef directory unowned.
The below line will match the directory and everything below it :
%{_libdir}/deadbeef
Comment 10 Alexey Komissarov 2011-07-03 20:57:22 CEST
Created attachment 661 [details]
spec file 03.07.2011 v2

(In reply to comment #9)
> (In reply to comment #8)
> > > %{_libdir}/deadbeef/aac.so
> > > %{_libdir}/deadbeef/aac.so.0
> > > %{_libdir}/deadbeef/aac.so.0.0.0
> > Please tell me, if this lines should be change to something like 
> > > %{_libdir}/deadbeef/*
> > 
> No this would left the %{_libdir}/deadbeef directory unowned.
> The below line will match the directory and everything below it :
> %{_libdir}/deadbeef
> 
Thank you, now it is much more smaller.
Comment 11 Michael Schwendt 2011-07-03 21:10:02 CEST
Smaller but no correct yet.


> %{_defaultdocdir}/deadbeef
> %exclude %{_defaultdocdir}/deadbeef/*

What are these two lines supposed to achieve?
Sometimes comments in the spec file could do wonders. ;)


> %post -p /sbin/ldconfig
> %postun -p /sbin/ldconfig

As pointed out before, these two are not needed, because the package doesn't store any library in run-timer linker's search path.


> %{_datadir}/applications/deadbeef.desktop

https://fedoraproject.org/wiki/Packaging/Guidelines#desktop
Notice section "desktop-file-install usage".


> %{_datadir}/deadbeef
> %{_libdir}/deadbeef

Note that spec files are much more comprehensible, if you add a trailing slash to directories to distinguish them from single files. E.g.

%{_datadir}/deadbeef/
%{_libdir}/deadbeef/

but:

%{_bindir}/deadbeef


Comment 12 Alexey Komissarov 2011-07-04 13:38:45 CEST
Created attachment 662 [details]
spec file 04.07.2011

I hope i fexed all the issues

> rpmlint /var/lib/mock/fedora-15-i386/result/deadbeef-0.5.1-1.fc15.i686.rpm 
>> deadbeef.i686: W: no-manual-page-for-binary deadbeef
>> 1 packages and 0 specfiles checked; 0 errors, 1 warnings.

> [build@f14 ~]$ rpmlint /var/lib/mock/fedora-15-i386/result/deadbeef-0.5.1-1.fc15.src.rpm 
>> 1 packages and 0 specfiles checked; 0 errors, 0 warnings.
Comment 13 Alexey Komissarov 2011-07-04 17:33:51 CEST
Created attachment 663 [details]
spec

Some more fixes and new errors from rpmlint
> rpmlint deadbeef-0.5.1-1.fc15.i686.rpm
>> deadbeef.i686: W: spelling-error %description -l en_US xing -> zing, axing, sing
>> deadbeef.i686: W: spelling-error %description -l en_US sid -> seed, dis, Sid
>> deadbeef.i686: W: spelling-error %description -l en_US chiptune -> chip tune, chip-tune, chipmunk
>> deadbeef.i686: W: spelling-error %description -l en_US xm -> cm, x, m
>> deadbeef.i686: W: spelling-error %description -l en_US xbindkeys -> monkeyshine
>> deadbeef.i686: W: spelling-error %description -l en_US fm -> FM, Fm, gm
>> deadbeef.i686: W: spelling-error %description -l en_US scrobbler -> scribbler, scrabbler
>> deadbeef.i686: W: incoherent-version-in-changelog 0.5.1-2 ['0.5.1-1.fc15', '0.5.1-1']
>> deadbeef.i686: W: no-manual-page-for-binary deadbeef
>> 1 packages and 0 specfiles checked; 0 errors, 9 warnings.

> [build@f14 ~]$ rpmlint deadbeef-0.5.1-1.fc15.src.rpm
>> deadbeef.src: W: spelling-error %description -l en_US xing -> zing, axing, sing
>> deadbeef.src: W: spelling-error %description -l en_US sid -> seed, dis, Sid
>> deadbeef.src: W: spelling-error %description -l en_US chiptune -> chip tune, chip-tune, chipmunk
>> deadbeef.src: W: spelling-error %description -l en_US xm -> cm, x, m
>> deadbeef.src: W: spelling-error %description -l en_US xbindkeys -> monkeyshine
>> deadbeef.src: W: spelling-error %description -l en_US fm -> FM, Fm, gm
>> deadbeef.src: W: spelling-error %description -l en_US scrobbler -> scribbler, scrabbler
>> deadbeef.src:126: W: mixed-use-of-spaces-and-tabs (spaces: line 118, tab: line 126)
>> 1 packages and 0 specfiles checked; 0 errors, 8 warnings.
Comment 14 Christoph Wickert 2011-07-04 18:07:54 CEST
(In reply to comment #6)
> However, with regard to unbundling system libs, the tarball includes several
> libraries in its "plugins" subdir. Ouch.

I packaged deadbeef a while back and thought about submitting if here, but the bundled libraries are definitely a blocker. I talked to upstream about this issue and he said that it won't change:

> > You are bundling a lot of libraries. This is forbidden in Fedora
> > [1]. Is there a way to build against the system's versions of
> > the libraries? Remmina for example has has a configure parameter
> > --enable-vnc=dl for this.
> 
> no. most of the bundled libraries have been heavily modified, for
> better performance (e.g. not using stl in adplug and libsidplay2), to
> make them reentrant (many libs only worked in single-instance mode,
> which is not enough for my needs), to have less dependencies (e.g.
> removed glib dependency from libmms), to be compatible with more
> architectures and operating systems (arm, powerpc / android, bsd,
> solaris), etc.
> 
> > I don't want to maintain a package where I need to patch the 
> > Makefiles for every new release. Perhaps you can think of an 
> > easy way to fix this in the next deadbeef release.
> 
> i don't see how is that possible, sorry.

This being said I doubt this can go into rpmfusion.
Comment 15 David Timms 2011-07-04 23:45:58 CEST
(In reply to comment #13)
> Some more fixes and new errors from rpmlint
> >> deadbeef.i686: W: incoherent-version-in-changelog 0.5.1-2 ['0.5.1-1.fc15', '0.5.1-1']

This indicates that the spec version/release was bumped, but it does not match the latest changelog entry. Remember, changelog indicates what changed with the package, rather than the upstream source, and hence must be added to for each change you make to the spec.

> >> deadbeef.src:126: W: mixed-use-of-spaces-and-tabs (spaces: line 118, tab: line 126)
Easy fix ;-) tells you what line the problem is. Take a look with an editor that shows whitespace as visible chars (eg like meld).

Regarding bundled libraries:
If you have a think about the way the source code works, do you think it would be possible to include certain make/build parameters to the build environment that would allow a packager to choose whether to use bundled or system libraries ?

This would allow a custom build to include the bundled version, while the Fedora (and other distro) packaging can use the system libraries.

Michael might be able to make more suggestions of how to go about it (I do not have experience in this area).
Comment 16 Alexey Komissarov 2011-07-05 08:07:45 CEST
Created attachment 664 [details]
spec file

> Regarding bundled libraries:
> If you have a think about the way the source code works, do you think it would
> be possible to include certain make/build parameters to the build environment
> that would allow a packager to choose whether to use bundled or system
> libraries ?

> This would allow a custom build to include the bundled version, while the
> Fedora (and other distro) packaging can use the system libraries.

> Michael might be able to make more suggestions of how to go about it (I do not
> have experience in this area).

Fixed small errors about version and spaces.

I don't have an idea how to modify makefiles. Is this is only way to get it into rpmfusion repo?
And why it can't be used with it's own libraries if they were optimized for perfomance or something else? As for me, users don't care which libraries are currently in use while everything works fine.
Comment 17 Xavier Bachelot 2011-07-05 09:26:40 CEST
> And why it can't be used with it's own libraries if they were optimized for
> perfomance or something else? As for me, users don't care which libraries are
> currently in use while everything works fine.
> 
https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries
Comment 18 Christoph Wickert 2011-07-05 17:34:35 CEST
(In reply to comment #15)
> Regarding bundled libraries:
> If you have a think about the way the source code works, do you think it would
> be possible to include certain make/build parameters to the build environment
> that would allow a packager to choose whether to use bundled or system
> libraries ?

Perhaps I or the paragraph I quote from upstream was not clear enough. Just modifying the Makefiles is not enough because the bundled copies of the libraries are changed in a way that will most likely make building against the shared system libs fail. You can give it a try but I am not overly optimistic that it will work.
Comment 19 Alexey Komissarov 2011-07-05 19:25:34 CEST
(In reply to comment #18)
> Perhaps I or the paragraph I quote from upstream was not clear enough. Just
> modifying the Makefiles is not enough because the bundled copies of the
> libraries are changed in a way that will most likely make building against the
> shared system libs fail. You can give it a try but I am not overly optimistic
> that it will work.
> 

This is very sad.
I have one question: was found that rpm build with this spec file provides 2 directories in /usr/share/doc
/usr/share/doc/deadbeef/ (emty one)
and 
/usr/share/doc/deadbeef-0.5.1 with docs. 
How it can be fixed? Should I add something like 
rmdir /usr/share/doc/deadbeef/
to the %post section of my spec file?
Comment 20 Alexey Komissarov 2011-07-09 17:15:38 CEST
Created attachment 665 [details]
spec

New spec file, problem with 2 doc dirs solved
Comment 21 Richard 2011-10-06 20:14:49 CEST
Some comments on the spec file:

1. BuildRoot:, "rm -rf $RPM_BUILD_ROOT" can be removed from %install, %clean can be removed entirely, and "%defattr(-,root,root)" can be removed from %files unless your building for EL5.

2. In you devel subpackage the Require: should probably be arch dependent:

Requires: %{name} = %{version}-%{release}

to

Requires: %{name}%{?_isa} = %{version}-%{release}

3. Modifying the desktop file in %prep is odd. desktop-file-install can modify desktop files on the fly, so if it's capable of removing the Unity parts then I would use it instead. Just research it's options.

If desktop-file-install is not capable of making the needed edits and you still need to resort to sed then at least move it to just above your desktop-file-install command. 

Also, currently you're not modifying anything in the desktop file by the time you get to desktop-file-install so you could use desktop-file-validate instead.

See:
http://fedoraproject.org/wiki/Packaging:Guidelines#desktop-file-install_usage

4. Ok, you definitely took Michael's comments to heart, but perhaps went a little too far :)

I would only add comments in %files for unusual situations. You can drop #doc, # Files, and # Dirs.

5. %{_defaultdocdir} can just be %{_docdir}

6. In the case of the extra doc directory there's no hard rule for this that I know of but it's my opinion that %exclude use in %files should be limited to excluding files from one package so they can be included in a sub-package.

For instance, you might run into a situation where it would be difficult or overly verbose to work around files that you really want to go into a -devel or -doc subpackage. Here %exclude could be used to exclude files or directors in the main package so they can be included in -doc or -devel.

If you're not going to include files in a package at all then it's better to just remove them in %install like you're already doing for .la files.

For the static libraries (.a) I would just remove them if there's nothing that actually needs them. If you need them then they should go in a -static subpackage not in -devel.

Comment 22 starws 2011-10-18 12:29:32 CEST
Created attachment 733 [details]
deadbeef spec file
Comment 23 starws 2011-10-18 12:31:11 CEST
(In reply to comment #21)
> 1.
fixed

> 2.
devel subpackage is arch independent

> 3. 
seems like desktop-file-install can't help

> 4. 
fixed

> 5.
fixed

> 6.
%exclude %{_docdir} here is an upstream configure script bug workaround, I hope it will be fixed in the next release

.a files removed


New spec file in attachments

Comment 24 starws 2011-11-24 12:12:22 CET
New spec file with some minor bugfixes and improvements.
Tested on deadbeef 0.5.1/fedora 16.
Comment 25 starws 2011-11-24 12:13:36 CET
Created attachment 765 [details]
deadbeef spec file
Comment 26 starws 2012-03-24 13:50:29 CET
New spec file with bugfixes, tested on deadbeef 0.5.2/fedora 16.

- readded rpath removal script
- new build dependency: yasm
- fixed license info
- fixed devel package architecture
- new upstream version 0.5.2
Comment 27 starws 2012-03-24 13:52:18 CET
Created attachment 841 [details]
deadbeef spec file
Comment 28 Richard 2015-01-14 22:51:40 CET
Closing due to inactivity, please reopen if you're interested in pursuing this review request.