This service will be undergoing maintenance at 00:00 UTC, 2016-08-01. It is expected to last about 1 hours
Bug 687875 - Review Request: aarddict - Multi-platform dictionary and offline Wikipedia reader [NEEDINFO]
Review Request: aarddict - Multi-platform dictionary and offline Wikipedia re...
Status: ASSIGNED
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: David Nalley
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2011-03-15 12:08 EDT by PRABIN KUMAR DATTA
Modified: 2014-02-09 21:32 EST (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed:
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
i: needinfo? (linux.n.pkd)


Attachments (Terms of Use)

  None (edit)
Description PRABIN KUMAR DATTA 2011-03-15 12:08:14 EDT
Spec URL: http://prabindatta.fedorapeople.org/SPECS/aarddict.spec
SRPM URL: http://prabindatta.fedorapeople.org/SRPMS/aarddict-0.9.1-1.fc14.src.rpm
Description: 
Aard Dictionary is a free, fast, easy to use word look-up program 
that looks up words fast even with huge dictionaries like English 
Wikipedia. It looks up words in multiple dictionaries in multiple 
languages without switching. It works great as offline Wikipedia 
reader. It has efficient, highly compressed dictionary data storage 
format with ability to verify data integrity built-in

Koji Build:
http://koji.fedoraproject.org/koji/taskinfo?taskID=2913932
http://koji.fedoraproject.org/koji/taskinfo?taskID=2913938
Comment 1 PRABIN KUMAR DATTA 2011-03-21 10:40:34 EDT
Still Need Sponsor.
Comment 2 PRABIN KUMAR DATTA 2011-04-09 14:59:39 EDT
Updated:
Spec URL: http://prabindatta.fedorapeople.org/SPECS/aarddict.spec
SRPM URL: http://prabindatta.fedorapeople.org/SRPMS/aarddict-0.9.1-1.fc15.src.rpm

Koji Build:
http://koji.fedoraproject.org/koji/taskinfo?taskID=2988409

rpmlint outputs:

SPEC FILE:
$ rpmlint -i rpmbuild/SPECS/aarddict.spec 
0 packages and 1 specfiles checked; 0 errors, 0 warnings.


RPM FILE:
$ rpmlint -i rpmbuild/RPMS/noarch/aarddict-0.9.1-1.fc15.noarch.rpm 
aarddict.noarch: W: spelling-error Summary(en_US) Multi -> Mulch, Mufti
The value of this tag appears to be misspelled. Please double-check.

aarddict.noarch: W: spelling-error %description -l en_US Aard -> Arad, Ard, Adar
The value of this tag appears to be misspelled. Please double-check.

aarddict.noarch: W: no-manual-page-for-binary aarddict
Each executable in standard binary directories should have a man page.

1 packages and 0 specfiles checked; 0 errors, 3 warnings.


SRPM FILE:
$ rpmlint -i rpmbuild/SRPMS/aarddict-0.9.1-1.fc15.src.rpm 
aarddict.src: W: spelling-error Summary(en_US) Multi -> Mulch, Mufti
The value of this tag appears to be misspelled. Please double-check.

aarddict.src: W: spelling-error %description -l en_US Aard -> Arad, Ard, Adar
The value of this tag appears to be misspelled. Please double-check.

1 packages and 0 specfiles checked; 0 errors, 2 warnings.
Comment 3 David Nalley 2011-04-10 00:06:01 EDT
When you make changes, please increment release and annotate your changes in the changelog. 

This is unnecessary, and in fact improper,: 
%doc LICENSE doc/*

It should be: 
%doc LICENSE

I think the following: 
%{python_sitelib}/%{name}/*.*
%{python_sitelib}/%{name}/icons/*
%{python_sitelib}/%{name}/locale/qt_el.qm
%{python_sitelib}/%{name}/locale/qt_ru.qm

could be reduced to: 
%{python_sitelib}/%{name}
Comment 4 PRABIN KUMAR DATTA 2011-04-10 10:53:53 EDT
Hi! David,
Thank You, for your reply!
/==
> This is unnecessary, and in fact improper,: 
> %doc LICENSE doc/*

> It should be: 
> %doc LICENSE
==/

Okay! I have added doc under a separate doc macro (used another package from fedora source repo as a reference for this).

/==
> I think the following: 
> %{python_sitelib}/%{name}/*.*
> %{python_sitelib}/%{name}/icons/*
> %{python_sitelib}/%{name}/locale/qt_el.qm
> %{python_sitelib}/%{name}/locale/qt_ru.qm

> could be reduced to: 
> %{python_sitelib}/%{name}
==/

If I try to write it as you have suggested then it will add two language files which are:
* /usr/lib/python2.7/site-packages/aarddict/locale/ru/LC_MESSAGES/aarddict.mo
and
* /usr/lib/python2.7/site-packages/aarddict/locale/el/LC_MESSAGES/aarddict.mo

But these two files are already added using "%files -f %{name}.lang"
So, this will result in duplication of two same files.

Thank You!
Have a Nice Day!
---

Updated:
Spec URL: http://prabindatta.fedorapeople.org/SPECS/aarddict.spec
SRPM URL:
http://prabindatta.fedorapeople.org/SRPMS/aarddict-0.9.1-2.fc15.src.rpm
Comment 7 David Nalley 2011-04-20 18:16:38 EDT
Hi Prabin: 

I'll take care of sponsoring you. 
Any chance you've done any informal reviews on others packages?? 
If so, please link them here in this ticket. If not, please consider doing one or two.
Comment 8 PRABIN KUMAR DATTA 2011-04-20 21:53:41 EDT
Okay! Thanks, David.

I like to inform you one thing about this package which I have missed to write here. (only written on PyICU review request page) 
i.e. this package "Requires: PyICU". (under review request by ME )
Review Request for PyICU: 
http://bugzilla.redhat.com/show_bug.cgi?id=688421

Informal reviews done my me:
1. http://bugzilla.redhat.com/show_bug.cgi?id=672205
2. http://bugzilla.redhat.com/show_bug.cgi?id=673585
Comment 9 David Nalley 2011-04-21 10:23:36 EDT
[OK] MUST: rpmlint must be run on every package
[ke4qqq@nalleyx200 SPECS]$ rpmlint ./aarddict.spec ../SRPMS/aarddict-0.9.1-3.fc14.src.rpm ../RPMS/noarch/aarddict-0.9.1-3.fc14.noarch.rpm 
aarddict.src: W: spelling-error Summary(en_US) Multi -> Mulch, Mufti
aarddict.src: W: spelling-error %description -l en_US Aard -> Arad, Ard, Adar
aarddict.noarch: W: spelling-error Summary(en_US) Multi -> Mulch, Mufti
aarddict.noarch: W: spelling-error %description -l en_US Aard -> Arad, Ard, Adar
aarddict.noarch: W: no-manual-page-for-binary aarddict
2 packages and 1 specfiles checked; 0 errors, 5 warnings.


The errors can be ignored. 

[OK] MUST: The package must be named according to the Package Naming 
         Guidelines
[OK] MUST: The spec file name must match the base package %{name} [...]
[OK] MUST: The package must meet the Packaging Guidelines
[OK] MUST: The package must be licensed with a Fedora approved license
         and meet the Licensing Guidelines
[FIX] MUST: The License field in the package spec file must match the 
         actual license

You have this as GPLv3+ in the spec, but all of the code has GPLv3 headers, and not GPLv3+. 

[OK] MUST: 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 must be included in %doc
[OK] MUST: The spec file must be written in American English.
[OK] MUST: The spec file for the package MUST be legible.
[      ] MUST: The sources used to build the package must match the upstream 
         source, as provided in the spec URL. Reviewers should use md5sum for 
         this task. If no upstream URL can be specified for this package, 
         please see the Source URL Guidelines for how to deal with this.

It appears that upstream has since updated release 0.9.2, and the 0.9.1 download link included in the spec no longer works. 

[OK] MUST: The package MUST successfully compile and build into binary 
         rpms on at least one primary architecture
[NA] 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. Each architecture listed in ExcludeArch MUST 
         have a bug filed in bugzilla, describing the reason that the package 
         does not compile/build/work on that architecture. The bug number MUST 
         be placed in a comment, next to the corresponding ExcludeArch line
[OK] MUST: All build dependencies must be listed in BuildRequires, except 
         for any that are listed in the exceptions section of the Packaging 
         Guidelines ; inclusion of those as BuildRequires is optional. Apply 
         common sense.
[OK] MUST: The spec file MUST handle locales properly. This is done by 
         using the %find_lang macro. Using %{_datadir}/locale/* is strictly 
         forbidden
[NA] 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.
[NA] 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. Without 
         this, use of Prefix: /usr is considered a blocker.
[OK] MUST: A package must own all directories that it creates. If it does 
         not create a directory that it uses, then it should require a package 
         which does create that directory.
[OK] MUST: A package must not contain any duplicate files in the %files 
         listing.
[OK] MUST: Permissions on files must be set properly. Executables should 
         be set with executable permissions, for example. Every %files section 
         must include a %defattr(...) line.
[NA] MUST: Each package must have a %clean section, which contains rm -rf
         %{buildroot} (or $RPM_BUILD_ROOT).
[OK] MUST: Each package must consistently use macros.
[OK] MUST: The package must contain code, or permissable content.
[NA] MUST: Large documentation files must go in a -doc subpackage. (The 
         definition of large is left up to the packager's best judgement, but 
         is not restricted to size. Large can refer to either size or 
         quantity).
[OK] MUST: If a package includes something as %doc, it must not affect the 
         runtime of the application. To summarize: If it is in %doc, the 
         program must run properly if it is not present.
[NA] MUST: Header files must be in a -devel package.
[NA] MUST: Static libraries must be in a -static package.
[NA] MUST: Packages containing pkgconfig(.pc) files must 'Requires: 
         pkgconfig' (for directory ownership and usability).
[NA] 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.
[NA] MUST: In the vast majority of cases, devel packages must require the 
         base package using a fully versioned dependency: Requires: %{name} =
         %{version}-%{release}
[NA] MUST: Packages must NOT contain any .la libtool archives, these must 
         be removed in the spec if they are built.
[FIX] MUST: Packages containing GUI applications must include a
         %{name}.desktop file, and that file must be properly installed with 
         desktop-file-install in the %install section. If you feel that your 
         packaged GUI application does not need a .desktop file, you must put 
         a comment in the spec file with your explanation.

Look at the output of the desktop-file-validate that you run against the .desktop file. 

[OK] MUST: Packages must not own files or directories already owned by 
         other packages. The rule of thumb here is that the first package to 
         be installed should own the files or directories that other packages 
         may rely upon. This means, for example, that no package in Fedora 
         should ever share ownership with any of the files or directories 
         owned by the filesystem or man package. If you feel that you have a 
         good reason to own a file or directory that another package owns, 
         then please present that at package review time.
[OK] MUST: All filenames in rpm packages must be valid UTF-8.


Also, explain to me why you are removing the shebangs in the __init__.py files? I am not saying it's wrong, just curious as to the why.
Comment 10 PRABIN KUMAR DATTA 2011-04-22 18:08:37 EDT
/--
[FIX] MUST: The License field in the package spec file must match the 
         actual license

You have this as GPLv3+ in the spec, but all of the code has GPLv3 headers, and
not GPLv3+.
--/
Updated

/--
[      ] MUST: The sources used to build the package must match the upstream 
         source, as provided in the spec URL. Reviewers should use md5sum for 
         this task. If no upstream URL can be specified for this package, 
         please see the Source URL Guidelines for how to deal with this.

It appears that upstream has since updated release 0.9.2, and the 0.9.1
download link included in the spec no longer works. 
--/
Upgraded to version 0.9.2. Also, I have sent a mail to upstream about this problem.

/--
[FIX] MUST: Packages containing GUI applications must include a
         %{name}.desktop file, and that file must be properly installed with 
         desktop-file-install in the %install section. If you feel that your 
         packaged GUI application does not need a .desktop file, you must put 
         a comment in the spec file with your explanation.

Look at the output of the desktop-file-validate that you run against the
.desktop file. 
--/
Updated

/--
Also, explain to me why you are removing the shebangs in the __init__.py files?
I am not saying it's wrong, just curious as to the why.
--/
Actually, I received an error message from rpmlint i.e.
//..............................................................................
aarddict.noarch: E: non-executable-script /usr/lib/python2.7/site-packages/aarddict/__init__.py 0644L /usr/bin/python
This text file contains a shebang or is located in a path dedicated for
executables, but lacks the executable bits and cannot thus be executed.  If
the file is meant to be an executable script, add the executable bits,
otherwise remove the shebang or move the file elsewhere.
..............................................................................//
After this, I had two options:
1. change the permission of __init__.py file from 644 to 755, if required to be executed?
or
2. remove the shebang, if not required?

I took a test case that "shebang is not required" and followed few steps to verify my test case which are:
1. I manually checked if there is/are anywhere in the code __init__.py is executed. (something like ./__init__.py)                         [succeeded  ]
2. removed shebang and build it and then install rpm file.       [succeeded  ]
3. added .arr file to dictionary
 a) added WordNet 1.7                                            [succeeded  ]
 b) added WordNet 3.0                                            [succeeded  ]
 c) added Wikipedia (simple)- dated 20101026-1                   [succeeded  ]
4. Consult with upstream.

//-----------Attached a part of mail's reply from upstream----------------
Shebang in aarddict/__init__.py simply provides another way of
launching aarddict ui or command line operations which I found useful
at some point (I believe it was handy on Windows where other methods
didn't work) - in any case regular users should have no need for this.
-------------------------------------------------------------------------//


Updated files:
SPECS :http://prabindatta.fedorapeople.org/SPECS/aarddict.spec
SRPMS: http://prabindatta.fedorapeople.org/SRPMS/aarddict-0.9.2-1.fc14.src.rpm


//-------------------------------------------------------------------------
Note: 
Today I was doing further testing on my package and found another problem in it.
After conversation with elad661, tibbs and nirik on IRC channel #fedora-devel. I have send a mail to upstream requesting them to place locale and icons files in standard locations and I hope for a quick reply from him. 
tibbs has also created a ticket on this issue https://fedorahosted.org/fpc/ticket/79
-----------------------------------------------------------------------------//
Thank You!
Comment 11 PRABIN KUMAR DATTA 2011-04-23 12:42:35 EDT
Sorry, in my previous mail I missed out the problem section:
Problem which I have found i.e.,
Un-installation failed to remove directories from %{python_sitelib}/

Nirik told me that it is due to those directories are not owned by the package.

After uninstallation:
1. 
aarddict
├── icons
│   ├── hicolor
│   │   ├── 26x26
│   │   │   └── apps
│   │   ├── 40x40
│   │   │   └── apps
│   │   └── 64x64
│   │       └── apps
│   └── Human-O2
│       ├── 16x16
│       │   ├── actions
│       │   ├── emblems
│       │   ├── mimetypes
│       │   ├── places
│       │   └── status
│       ├── 22x22
│       │   ├── actions
│       │   ├── emblems
│       │   ├── mimetypes
│       │   ├── places
│       │   └── status
│       ├── 24x24
│       │   ├── actions
│       │   ├── emblems
│       │   ├── mimetypes
│       │   ├── places
│       │   └── status
│       └── 32x32
│           ├── actions
│           ├── emblems
│           ├── mimetypes
│           ├── places
│           └── status
└── locale
    ├── el
    │   └── LC_MESSAGES
    └── ru
        └── LC_MESSAGES
 .........................
| 38 directories, 0 files |
 .........................

2. 
aarddict-0.9.2-py2.7.egg-info

 ...............
| Totally empty |
 ...............

This is a mail reply I received today from upstream:
//..........................................................................
You must realize that aarddict works on multiple platforms and is also
packaged for Windows, Mac OS X, Ubuntu and Maemo and is installable
via pip inside or outside of virtualenv. setuptool's idea of where
files should be is very different from Fedora. If aarddict only worked
in Linux and assumed GNOME or KDE I would not package any icons except
for app logo (several icon themes are available as part of "standard
desktop") - but this is not the case.

I am most certainly not changing anything in the source code structure
to satisfy Fedora packaging "requirements" - because it would require
completely changing how application locates it's resources and that is
not something I'm willing to spend time on (even if it had a chance to
work cross-platform). Sorry to disappoint you.

Please note that making an RPM that users can install on Fedora is not
the same as making an RPM that Fedora would accept into distro. As I
mentioned before, the only reason I didn't make one is because Fedora
does not package PyICU and I didn't have time and energy to package
PyICU myself _and_ to setup and maintain yum repo. When/if PyICU
becomes available in Fedora direct aarddict RPM download from
aarddict.org would become a usable option for most users.
...........................................................................//

Still I am interested to maintain this package, since currently the default dictionary which comes with fedora requires internet connection. Also, this software helps to use wikipedia and many others websites to be watched offline.

The only solutions I found now are:
1. https://fedorahosted.org/fpc/ticket/79
or 
overlook these warning messages:
//........................................................................
aarddict.noarch: W: file-not-in-%lang /usr/lib/python2.7/site-packages/aarddict/locale/el/LC_MESSAGES/aarddict.mo
aarddict.noarch: W: file-not-in-%lang /usr/lib/python2.7/site-packages/aarddict/locale/ru/LC_MESSAGES/aarddict.mo
..........................................................................//

The above solution resolves all problems
Waiting for your response.
Comment 13 PRABIN KUMAR DATTA 2011-05-16 13:35:30 EDT
upstream fixed single click install link in Maemo installation notes in doc.

Updated files:
SPECS :http://prabindatta.fedorapeople.org/SPECS/aarddict.spec
SRPMS: http://prabindatta.fedorapeople.org/SRPMS/aarddict-0.9.2-3.fc14.src.rpm

[Info]
Pushed pyicu into fedora repo.
Comment 14 PRABIN KUMAR DATTA 2011-06-27 12:15:30 EDT
Hi! David Nalley,
This package is under review from a long time.
Also, the dependency package "pyicu" is also pushed into fedora stable repo.
Can u kindly review this package??
Comment 15 Christopher Meng 2014-02-09 21:32:04 EST
News?

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