Bug 195394

Summary: Review Request: CastPodder
Product: [Fedora] Fedora Reporter: Paul F. Johnson <paul>
Component: Package ReviewAssignee: Kevin Fenzi <kevin>
Status: CLOSED NEXTRELEASE QA Contact: Fedora Package Reviews List <fedora-package-review>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhide   
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-06-21 23:57:17 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:
Bug Depends On: 195393    
Bug Blocks: 163779    

Description Paul F. Johnson 2006-06-14 23:07:17 UTC
Spec URL: <spec info here>
SRPM URL: <srpm info here>
Description: <description here>

Comment 1 Paul F. Johnson 2006-06-14 23:08:42 UTC
Spec : http://www.knox.net.nz/~nodoid/CastPodder.spec
SRPM : http://www.knox.net.nz/~nodoid/CastPodder-5.0-2.src.rpm

CastPodder is a media aggregator (typical use is for podcasting)

Comment 2 Kevin Fenzi 2006-06-19 21:35:37 UTC
OK - Package name
OK - Spec file matches base package name.
OK - Meets Packaging Guidelines.
OK - License (GPL)
OK - License field in spec matches
OK - License file included in package
OK - Spec in American English
OK - Spec is legible.
OK - Sources match upstream md5sum:
58e0e76774eae0374a3c593e6bdc319d  CastPodder-5.0.tar.bz2
58e0e76774eae0374a3c593e6bdc319d  CastPodder-5.0.tar.bz2.1
 - Package compiles and builds on at least one arch.
n/a - Package needs ExcludeArch
 - BuildRequires correct
n/a - Spec handles locales/find_lang
n/a - Spec has needed ldconfig in post and postun
n/a - Package is relocatable and has a reason to be.
OK - Package owns all the directories it creates.
OK - Package has no duplicate files in %files.
OK - Package has %defattr and permissions on files is good.
OK - Package has a correct %clean section.
OK - Spec has consistant macro usage.
OK - Package is code or permissible content.
n/a - -doc subpackage needed/used.
OK - Packages %doc files don't affect runtime.
n/a - Headers/static libs in -devel subpackage.
n/a - .pc files in -devel subpackage.
n/a - .so files in -devel subpackage.
n/a - -devel package Requires: %{name} = %{version}-%{release}
n/a - .la files are removed.
See Below - Package is a GUI app and has a .desktop file
OK - Package doesn't own any directories other packages own.
See below - No rpmlint output.

Issues:

1. Why install in /opt? (I guess because upstream does?)
IMHO /opt is for locally installed optional applications, not
packages from Fedora. Can you change it to install those
files in /usr/share/${name}/ instead?

2. This %pre is very dangerous and not needed:
%pre
# lets make sure nothing is there so we delete the old
# directory first before installing - sgrayban
rm -fr /opt/%{name}

rpm should handle removing files on install/upgrade.

3. Should this be a noarch package? (ie BuildArch: noarch)?

4. Should use a proper 'desktop-file-install' with a
BuildRequires: desktop-file-utils
to install the desktop file instead of a install...
http://fedoraproject.org/wiki/Packaging/Guidelines#desktop
Might be nice to include the desktop file as another SOURCE too.

5. Some macros seem to not be defined in fedora.
building under mock fails with:

RPM build errors:
    File must begin with "/": %_menudir/CastPodder
    File must begin with "/": %_iconsdir/CastPodder.png
    File must begin with "/": %_liconsdir/CastPodder.png

6. Since I can't get it to build, no rpmlint output yet, but
running rpmlint on the provided rpm from the site gives a
number of things that should be dealt with:

Should remove the libxml2-python Requires?

E: CastPodder explicit-lib-dependency libxml2-python

explicit-lib-dependency :
You must let rpm find the library dependencies by itself. Do not put unneeded
explicit Requires: tags.

Perhaps pick "Applications/Multimedia" ?

W: CastPodder non-standard-group Networking/News

Shouldn't have the Obsoletes: iPodder when this package provides it.

E: CastPodder obsolete-on-name

obsolete-on-name :
A package should not obsolete itself, as it can cause weird errors in tools.

E: CastPodder obsolete-not-provided iPodder

obsolete-not-provided :
The obsoleted package must also be provided to allow clean upgrade paths
and not to break dependencies.

E: CastPodder dir-or-file-in-opt /opt/CastPodder/localization/catalog/ga.py

dir-or-file-in-opt :
A file in the package is located in /opt. It's not permitted
for packages to install files in this directory.

E: CastPodder wrong-script-interpreter
/opt/CastPodder/localization/catalog/ga.py "python"
... (tons of repeats on those)

Should remove the %pre command:

W: CastPodder dangerous-command-in-%pre rm


Comment 3 Paul F. Johnson 2006-06-19 22:33:31 UTC
Spec : http://www.knox.net.nz/~nodoid/CastPodder.spec
SRPM : http://www.knox.net.nz/~nodoid/CastPodder-5.0-3.src.rpm

Lots and lots and lots of fixes - most of them are for the above as well!

Comment 4 Paul F. Johnson 2006-06-19 23:26:25 UTC
Spec : http://www.knox.net.nz/~nodoid/CastPodder.spec
SRPM : http://www.knox.net.nz/~nodoid/CastPodder-5.0-4.src.rpm

Added BR : desktop-file-utils

Now builds in mock

Comment 5 Kevin Fenzi 2006-06-20 03:36:28 UTC
Excellent progress. 

Builds ok in mock here too. 

Still quite a bit of rpmlint output: 

Why does the package Require python-devel? 

E: CastPodder devel-dependency python-devel

A lot of these: 

E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/es.py "python"

All these localization files as well as some of the contrib files,  
have as the first line: 

#! python

Are they meant to be python scripts? If so, they should be #!/usr/bin/python or
#!/usr/bin/env python or the like. 
If not, perhaps that line should be removed? 

If they are executable they should mode 755: 

E: CastPodder non-executable-script /usr/share/CastPodder/localization/catalog/es.py
0644

Full rpmlint output: 

E: CastPodder devel-dependency python-devel
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/es.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/es.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/en.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/en.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/ca.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/ca.py 0644
E: CastPodder script-without-shellbang /usr/share/CastPodder/updater.py
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/zh-Hans.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/zh-Hans.py 0644
E: CastPodder non-executable-script
/usr/share/CastPodder/ipodder/contrib/GenericDispatch.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/__init__.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/__init__.py 0644
E: CastPodder wrong-script-end-of-line-encoding
/usr/share/CastPodder/localization/catalog/__init__.py
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/pt-BR.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/pt-BR.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/de.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/de.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/it.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/it.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/ko.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/ko.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/el.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/el.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/fi.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/fi.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/nl.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/nl.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/ja.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/ja.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/ru.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/ru.py 0644
E: CastPodder wrong-script-end-of-line-encoding
/usr/share/CastPodder/localization/catalog/ru.py
E: CastPodder non-executable-script
/usr/share/CastPodder/ipodder/contrib/feedparser.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/da.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/da.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/pl.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/pl.py 0644
E: CastPodder wrong-script-end-of-line-encoding
/usr/share/CastPodder/localization/catalog/pl.py
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/gl.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/gl.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/sv.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/sv.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/et.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/et.py 0644
E: CastPodder non-executable-script /usr/share/CastPodder/tools/mkupdate.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/ga.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/ga.py 0644
E: CastPodder non-executable-script /usr/share/CastPodder/tools/purge.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/fr.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/fr.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/sr.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/sr.py 0644
E: CastPodder wrong-script-end-of-line-encoding
/usr/share/CastPodder/localization/catalog/sr.py
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/hu.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/hu.py 0644
E: CastPodder non-executable-script /usr/share/CastPodder/Resources/postflight 0644
E: CastPodder non-executable-script /usr/share/CastPodder/tools/coverage.py 0644
E: CastPodder wrong-script-interpreter
/usr/share/CastPodder/localization/catalog/eu.py "python"
E: CastPodder non-executable-script
/usr/share/CastPodder/localization/catalog/eu.py 0644


Comment 6 Paul F. Johnson 2006-06-20 06:15:07 UTC
I'm not sure what they act as. Given they're 0644, I'll guess that they're add
in scripts which are not directly executed. I'll remove the !python line first,
see what happens and if it fails, change the lot to /usr/bin/env python

Comment 7 Paul F. Johnson 2006-06-20 23:30:15 UTC
Spec : http://www.knox.net.nz/~nodoid/CastPodder.spec
SRPM : http://www.knox.net.nz/~nodoid/CastPodder-5.0-5.src.rpm

Everything highlighted in #5 fixed
Builds in mock (x86)
rpmlint is clean

It is warm, cuddly and deserves a nice red bow

Christ, I need some sleep!


Comment 8 Kevin Fenzi 2006-06-21 18:33:26 UTC
Two issues that I see: 

1. Somewhere you have something still calling '/bin/python' as the resulting 
rpm from comment #7 has: 

rpm -ivh CastPodder-5.0-5.fc5.noarch.rpm
error: Failed dependencies:
        /bin/python is needed by CastPodder-5.0-5.fc5.noarch

Might be ipodder/contrib/GenericDispatch.py

2. There is still a /opt path in the main CastPodder script. Trying to run it 
results in:

/usr/bin/CastPodder: line 21: cd: /opt/CastPodder: No such file or directory
python: can't open file 'CastPodderGui.py': [Errno 2] No such file or directory


Comment 9 Paul F. Johnson 2006-06-21 22:22:13 UTC
Spec : http://www.knox.net.nz/~nodoid/CastPodder.spec
SRPM : http://www.knox.net.nz/~nodoid/CastPodder-5.0-6.src.rpm

Fixes #8 and actually works!

Comment 10 Kevin Fenzi 2006-06-21 23:38:19 UTC
Everything looks ok with the package now from what I can see, so 
this package is APPROVED.

Don't forget to close this bug with NEXTRELEASE once it's been imported and 
built.