Bug 1130103 - Review Request: blink - Real-time communications client using SIP protocol
Summary: Review Request: blink - Real-time communications client using SIP protocol
Keywords:
Status: ASSIGNED
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Orion Poplawski
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 1130099 1130100 1130101 1130102 1130097 1130098
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-08-14 10:38 UTC by Pavel Alexeev
Modified: 2017-06-20 17:40 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed:
i: fedora-review?


Attachments (Terms of Use)

Description Pavel Alexeev 2014-08-14 10:38:51 UTC
Spec URL: https://raw.githubusercontent.com/Hubbitus/Fedora-packaging/master/SPECS/blink.spec
SRPM URL: http://hubbitus.info/rpm/Fedora20/blink/blink-0.9.1-1.fc20.src.rpm
Description: Blink is the best real-time communications client using SIP protocol.
You can use it with many SIP providers, on the LAN using Bonjour and SIP2SIP
free service. Blink is elegant, simple to use and feature-full.
Fedora Account System Username: Hubbitus

Comment 1 Christopher Meng 2014-08-15 05:13:10 UTC
I'm confused, as python-qt4 never appears in Fedora, I just thought that you copied the spec from somewhere.

In this way, please _cleanup_.

Comment 2 Pavel Alexeev 2014-08-18 15:57:57 UTC
>I'm confused, as python-qt4 never appears in Fedora, I just thought that you copied the spec from somewhere.
Absolutely wrong assumption. I've spent few hours to found blink packaged for Fedora to just try it. Eventually had to packaging it from scratch with many dependencies.

$ LANG=C yum provides python-qt4
PyQt4-4.10.2-2.fc20.i686 : Python bindings for Qt4
Repo        : fedora
Matched from:
Provides    : python-qt4 = 4.10.2-2.fc20

PyQt4-4.10.2-2.fc20.x86_64 : Python bindings for Qt4
Repo        : fedora
Matched from:
Provides    : python-qt4 = 4.10.2-2.fc20

PyQt4-4.10.2-5.fc20.i686 : Python bindings for Qt4
Repo        : updates
Matched from:
Provides    : python-qt4 = 4.10.2-5.fc20

PyQt4-4.10.2-5.fc20.x86_64 : Python bindings for Qt4
Repo        : updates
Matched from:
Provides    : python-qt4 = 4.10.2-5.fc20

PyQt4-4.10.2-5.fc20.x86_64 : Python bindings for Qt4
Repo        : @updates-testing
Matched from:
Provides    : python-qt4 = 4.10.2-5.fc20

Comment 3 Felix Schwarz 2014-09-08 14:32:58 UTC
just a few comments by looking at the spec *very* briefly:
The dependencies are very likely wrong. python-ejson, python-eventlib, python-django, python-redis, python-celery, python-gnutls, python-dns, python-xcaplib and python-twisted-names are not listed in "install.linux" from the source package. I'd be surprised if a qt application needs Django.

Also qt is only build-required but I guess it's important to have it at runtime as well. ;-)

I'd recommend using Fedora's package names if possible (though that's only a personal preference, probably not required by any official policy).

Comment 4 Pavel Alexeev 2014-09-08 17:26:28 UTC
Hi Felix.

(In reply to Felix Schwarz from comment #3)
> just a few comments by looking at the spec *very* briefly:
> The dependencies are very likely wrong. python-ejson, python-eventlib,
> python-django, python-redis, python-celery, python-gnutls, python-dns,
> python-xcaplib and python-twisted-names are not listed in "install.linux"
> from the source package. I'd be surprised if a qt application needs Django.

May be you are right. I'm not so familiar with python stuff, so any help appreciated.

Meantime most runtime dependencies was born in tries run it. For example, without python-gnutls it failed to start like:
1) $ blink
Traceback (most recent call last):
  File "/usr/bin/blink", line 29, in <module>
    from blink import Blink
  File "/usr/lib64/python2.7/site-packages/blink/__init__.py", line 28, in <module>
    from gnutls.crypto import X509Certificate, X509PrivateKey
ImportError: No module named gnutls.crypto

2) without python-dns (revert back python-gnutls):
$ blink
using set_wakeup_fd
Traceback (most recent call last):
  File "/usr/bin/blink", line 29, in <module>
    from blink import Blink
  File "/usr/lib64/python2.7/site-packages/blink/__init__.py", line 32, in <module>
    from sipsimple.account import Account, AccountManager, BonjourAccount
  File "/usr/lib64/python2.7/site-packages/sipsimple/account/__init__.py", line 26, in <module>
    from sipsimple.account.publication import PresencePublisher, DialogPublisher
  File "/usr/lib64/python2.7/site-packages/sipsimple/account/publication.py", line 23, in <module>
    from sipsimple.lookup import DNSLookup, DNSLookupError
  File "/usr/lib64/python2.7/site-packages/sipsimple/lookup.py", line 19, in <module>
    import dns
ImportError: No module named dns
3) Without python-eventlib:
$ blink
Traceback (most recent call last):
  File "/usr/bin/blink", line 29, in <module>
    from blink import Blink
  File "/usr/lib64/python2.7/site-packages/blink/__init__.py", line 27, in <module>
    from eventlib import api
ImportError: No module named eventlib
4) $ sudo rpm -e python-xcaplib --nodeps
[pasha@hubbitus ~]$ blink
using set_wakeup_fd
Traceback (most recent call last):
  File "/usr/bin/blink", line 29, in <module>
    from blink import Blink
  File "/usr/lib64/python2.7/site-packages/blink/__init__.py", line 32, in <module>
    from sipsimple.account import Account, AccountManager, BonjourAccount
  File "/usr/lib64/python2.7/site-packages/sipsimple/account/__init__.py", line 29, in <module>
    from sipsimple.account.xcap import XCAPManager
  File "/usr/lib64/python2.7/site-packages/sipsimple/account/xcap/__init__.py", line 29, in <module>
    from xcaplib.green import XCAPClient
ImportError: No module named xcaplib.green
5) $ sudo rpm -e python-twisted-names --nodeps
[pasha@hubbitus ~]$ blink
using set_wakeup_fd
Traceback (most recent call last):
  File "/usr/bin/blink", line 29, in <module>
    from blink import Blink
  File "/usr/lib64/python2.7/site-packages/blink/__init__.py", line 34, in <module>
    from sipsimple.application import SIPApplication
  File "/usr/lib64/python2.7/site-packages/sipsimple/application.py", line 33, in <module>
    from sipsimple.session import SessionManager
  File "/usr/lib64/python2.7/site-packages/sipsimple/session.py", line 39, in <module>
    from sipsimple.streams import MediaStreamRegistry, InvalidStreamError, UnknownStreamError
  File "/usr/lib64/python2.7/site-packages/sipsimple/streams/__init__.py", line 116, in <module>
    from sipsimple.streams import rtp, msrp
  File "/usr/lib64/python2.7/site-packages/sipsimple/streams/msrp.py", line 38, in <module>
    from msrplib.connect import DirectConnector, DirectAcceptor, RelayConnection, MSRPRelaySettings
  File "/usr/lib/python2.7/site-packages/msrplib/connect.py", line 47, in <module>
    from twisted.names.srvconnect import SRVConnector
ImportError: No module named names.srvconnect


python-ejson, python-celery, python-redis, python-django really seems not used in current version. At least for start. Removed.

And even more I forgot python-msrplib, added.
$ blink
using set_wakeup_fd
Traceback (most recent call last):
  File "/usr/bin/blink", line 29, in <module>
    from blink import Blink
  File "/usr/lib64/python2.7/site-packages/blink/__init__.py", line 34, in <module>
    from sipsimple.application import SIPApplication
  File "/usr/lib64/python2.7/site-packages/sipsimple/application.py", line 33, in <module>
    from sipsimple.session import SessionManager
  File "/usr/lib64/python2.7/site-packages/sipsimple/session.py", line 39, in <module>
    from sipsimple.streams import MediaStreamRegistry, InvalidStreamError, UnknownStreamError
  File "/usr/lib64/python2.7/site-packages/sipsimple/streams/__init__.py", line 116, in <module>
    from sipsimple.streams import rtp, msrp
  File "/usr/lib64/python2.7/site-packages/sipsimple/streams/msrp.py", line 38, in <module>
    from msrplib.connect import DirectConnector, DirectAcceptor, RelayConnection, MSRPRelaySettings
ImportError: No module named msrplib.connect

> Also qt is only build-required but I guess it's important to have it at
> runtime as well. ;-)
Fixed.

> I'd recommend using Fedora's package names if possible (though that's only a
> personal preference, probably not required by any official policy).
I have no personal preferences, so it changed also.


Changes: https://github.com/Hubbitus/Fedora-packaging/commit/5c6d4ff83f7c952e22d5025c44858f250317fe89
Spec: https://raw.githubusercontent.com/Hubbitus/Fedora-packaging/5c6d4ff83f7c952e22d5025c44858f250317fe89/SPECS/blink.spec
Srpm: http://hubbitus.info/rpm/Fedora20/blink/blink-0.9.1-2.fc20.src.rpm
Koji scratch build: http://koji.fedoraproject.org/koji/taskinfo?taskID=7545256

Comment 5 Felix Schwarz 2014-09-09 06:47:29 UTC
(In reply to Pavel Alexeev (aka Pahan-Hubbitus) from comment #4)
> May be you are right. I'm not so familiar with python stuff, so any help
> appreciated.
> 
> Meantime most runtime dependencies was born in tries run it. For example,
> without python-gnutls it failed to start like:
(...)

Usually we only add direct dependencies for the package in question. For example if you package "python-sipsimple" that spec must contain all dependencies so the package works after installation.

If blink requires python-sipsimple you don't need to list python-dns as requirement for blink. For your runtime testing first install all required packages (such as python-sipsimple).  

Hope it makes sense. Probably you should review your other specs if they contain the right dependencies. For example python-sipsimple in bug 1130101 has no runtime dependencies at all which is wrong (as you demonstrated above).

Comment 6 Pavel Alexeev 2014-09-09 07:46:21 UTC
I like your suggestion move some dependencies in right dependent packages.
According by python-sipsimple debian package it should depend on: python-application (>= 1.4.0), python-dateutil, python-dnspython (>= 1.9), python-eventlib, python-gnutls, python-lxml, python-msrplib (>= 0.15.0), python-twisted-core (>= 8.1.0), python-xcaplib (>= 1.0.17).

But I have not found test there and can't sure it is correct. Do you have ideas how it may be tested?

Comment 7 Felix Schwarz 2014-09-09 11:27:42 UTC
(In reply to Pavel Alexeev (aka Pahan-Hubbitus) from comment #6)
> I like your suggestion move some dependencies in right dependent packages.

Good :-) because doing that is actually mandatory as per Fedora packaging policies ;-)

> But I have not found test there and can't sure it is correct. Do you have
> ideas how it may be tested?

As far as I know there is no automated way. I usually create a VM with the minimal package set installed, install my package and try to run it. In case of a python library you can use the python shell and try to import the package at least.

That's not a complete test but you should catch at least the most important requirements by that. Of course it's even better if the package has a test suite you can run automatically (you can do that in the spec file as well!).

If you just miss a single dependency, don't worry too much. You'll get bug reports from users.

Comment 9 Pavel Alexeev 2015-10-04 17:12:08 UTC
Christopher, do you like continue?

Comment 10 Orion Poplawski 2017-03-11 17:55:39 UTC
Christopher was declared unresponsive a while back.  I'll review if you update to current version and guidelines.

Comment 11 Айфф 2017-06-20 17:40:46 UTC
Add it to the repository, please.


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