Bug 731456 (jreen)

Summary: Review Request: jreen - Qt XMPP Library
Product: [Fedora] Fedora Reporter: Rex Dieter <rdieter>
Component: Package ReviewAssignee: Pavel Alexeev <pahan>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: euroelessar, magnus.tuominen, notting, package-review, pahan, volker27
Target Milestone: ---Flags: pahan: fedora-review+
gwync: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Fixed In Version: clementine-0.7.1-4.fc16.1 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-01-09 13:47:38 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On: 749885, 752454    
Bug Blocks: 656997, 713461    
Description Flags
Fixes compilation error with gcc-4.7 none

Comment 1 Rex Dieter 2011-08-17 18:49:37 UTC
f16 scratch build:

Comment 2 Volker Fröhlich 2011-08-22 18:02:02 UTC
Some files from this tarball are under GPLv3+.

You could use the name macro in the source definition.

Sadly, I haven't found a much better description for the package either. The devel sub-package should have a different description nevertheless, I think. 

You can remove "-n jreen-%{version}".

jdns in the 3rdparty directory is a project on its own and should therefore be packaged separately, I guess. Simplesasl seems to be part of Psi (Remko Troncon).

Jreen seems capable to use libidn, which is not a BR yet.

jreen.x86_64: E: incorrect-fsf-address /usr/share/doc/jreen-0.1.0/GPL

Comment 3 Pavel Alexeev 2011-08-31 14:19:17 UTC
Please update it from git - by my request it now contain .pc file for lib to link to it from qutim as shared lib. And then I'll review it.

Comment 4 Rex Dieter 2011-09-01 14:07:46 UTC
Spec URL: http://rdieter.fedorapeople.org/rpms/tomahawk/jreen.spec

* Thu Sep 01 2011 Rex Dieter <rdieter@fedoraproject.org> 0.1.0-0.3.20110901
- 20110901 snapshot

Comment 5 Pavel Alexeev 2011-09-03 15:58:56 UTC
+ - Ok.
- - Error.
+/- - It item acceptable, but I strongly recommend enhancement.
= - N/A.

== MUST Items ==
[+/-] MUST: rpmlint must be run on every package. The output should be posted in the review.
$ rpmlint *
jreen.src: W: invalid-url Source0: jreen-0.1.0-20110901.tar.xz

In your tarball reproduce script missed part of cd (or pushd) to jreen directory after 1st command. Please add it, now it doesn't work... Its minor and trivial to fix issue.

jreen.i686: E: incorrect-fsf-address /usr/share/doc/jreen-0.1.0/GPL
I've ask Ruslan, and that updated. Just pull changes and rebuild package.

jreen-devel.i686: W: no-documentation
jreen.spec: W: invalid-url Source0: jreen-0.1.0-20110901.tar.xz
4 packages and 1 specfiles checked; 1 errors, 3 warnings.

[+] MUST: The package must be named according to the Package Naming Guidelines.
[+] MUST: The spec file name must match the base package %{name}, in the format %{name}.spec unless your package has an exemption.
[-] MUST: The package must meet the Packaging Guidelines.
There sefew bundled libs. See below.

Jreen must require libidn as runtime requirement (not BuildRequires).

[+] MUST: The package must be licensed with a Fedora approved license and meet the Licensing Guidelines.
(In reply to comment #2)
> Some files from this tarball are under GPLv3+.
Except 3d party libraries I have not found files under diffirent licenses. So, Voler, please provide us exact files please.

[+] MUST: The License field in the package spec file must match the actual license.
[+] 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.

[+] MUST: The spec file must be written in American English.
[+/-] MUST: The spec file for the package MUST be legible.
Please delete trailing spaces from each lines. Off course it is not stop issue, just estetic.

[+] 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.

md5sum check is not available, but its seams identical.

[+] MUST: The package MUST successfully compile and build into binary rpms on at least one primary architecture.

[=] 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.
[=] 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.
[=] MUST: The spec file MUST handle locales properly. This is done by using the %find_lang macro. Using %{_datadir}/locale/* is strictly forbidden.
[+] 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.
[-] MUST: Packages must NOT bundle copies of system libraries.

Package have bundled several libs (in directory 3rdparty), it is not allowed:
jdns and simplesasl

I've told with Ruslan about that and they say what jdns simple may be linked shared. And I think you should do that for jreen.
Some more different situation with simplesasl. They said it copied from psi, and pidgin initialy also just contain that. For jreen it also taken as simple way. But it have errors and even not stable enought. Best way is use qca2-cirus-sasl plugin. It is released by same aouthora as qca2. So, you may wish ask qca2 maintainer ask to include that plugins and ship as subpackag(es), or pacjage it himself separately.

Ruslan ready add into jreen needed compile switches to allow link it with shared libraries for Fedora (for that very-very big thankt to him!).

[=] 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.
[+] 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.
[+] MUST: A Fedora package must not list a file more than once in the spec file's %files listings.
[+] MUST: Permissions on files must be set properly. Executables should be set with executable permissions, for example.
[+/-] MUST: At the beginning of %install, each package MUST run rm -rf %{buildroot} (or $RPM_BUILD_ROOT).
If you intend build it for EPEL too, add this. Otherwise it is not neccesary.

[+/-] MUST: Each package must have a %clean section, which contains rm -rf %{buildroot} (or $RPM_BUILD_ROOT).
If you intend build it for EPEL too, add this. Otherwise it is not neccesary.

Do you want package it for EPEL too??

[+] MUST: Each package must consistently use macros.
[+] MUST: The package must contain code, or permissable content.
Bundled libs mentioned before. Other content looks permissive for me.

[=] 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).
[+] 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.
[+] MUST: Header files must be in a -devel package.
[=] MUST: Static libraries must be in a -static package.
[+/-] MUST: Packages containing pkgconfig(.pc) files must 'Requires: pkgconfig' (for directory ownership and usability).
Again - for EPEL5 it must be added.

[+] 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.
[+] MUST: In the vast majority of cases, devel packages must require the base package using a fully versioned dependency: Requires: %{name} = %{version}-%{release}
[+] MUST: Packages must NOT contain any .la libtool archives, these must be removed in the spec if they are built.
[=] 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.
[+] 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.
[+] MUST: All filenames in rpm packages must be valid UTF-8.

== SHOULD Items: ==
[=] 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.
[=] SHOULD: The description and summary sections in the package spec file should contain translations for supported Non-English languages, if available.
[+] SHOULD: The reviewer should test that the package functions as described. A package should not segfault instead of running, for example.

I test link to it qutim.

[+] SHOULD: If scriptlets are used, those scriptlets must be sane. This is vague, and left up to the reviewers judgement to determine sanity.
[+] SHOULD: Usually, subpackages other than devel should require the base package using a fully versioned dependency.
[+] 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. A reasonable exception is that the main pkg itself is a devel tool not installed in a user runtime, e.g. gcc or gdb.
[+] 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.

So, as total the most important issue is package separate bundled libs.

Comment 6 Volker Fröhlich 2011-09-03 16:29:38 UTC
[makerpm@fedora15 jreen-0.1.0]$ licensecheck -R *|grep v3
src/iqreply.h: GPL (v3 or later) 
src/iqreply.cpp: GPL (v3 or later) 
src/vcardmanager.h: GPL (v3 or later) 
src/vcardmanager.cpp: GPL (v3 or later)

Comment 7 Pavel Alexeev 2011-09-03 16:56:11 UTC
Thank you, Volker.
Ruslan kindly and very operative fix them - https://github.com/euroelessar/jreen/commit/a2487c43af7a00d2cd5cb770fba56decb7b43cc3

Comment 8 Ruslan Nigmatullin 2011-09-03 17:31:18 UTC
Hi all! I'm qutIM's developer

There is one mistake at your discussion
> [-] MUST: Packages must NOT bundle copies of system libraries.
> Some more different situation with simplesasl. They said it copied from psi,
> and pidgin initialy also just contain that.

The only 3rdparty source we bundle with Jreen are jdns and simplesasl. Both are copied from iris's sources. But the same libraries with whole libiris itself are bundled at Kopete (not pidgin, as Pavel said) application, and it's packaged with no problems.

So my question is: would be Kopete's Jabber plugin (which is bundled with same jdns and simplesasl's sources) also be reviewed?)

Comment 9 Rex Dieter 2011-09-03 20:21:15 UTC
RE: kopete's bundling of libiris
Yes, now that we've been made aware of kopete's bundling, it needs to be reviewed similarly.

Comment 10 Rex Dieter 2011-09-03 20:40:33 UTC
With respect to (lib)iris (and jdns)... seems at least psi, kopete, and jreen here bundle all or parts of it.  In my quick search, I'm not aware of any effort or implementation to distribute or package libiris (or jdns) separately (as shared libraries or whatever)

So, I'm at a bit of a loss what to do about it.  Suggestions?

Comment 11 Rex Dieter 2011-09-03 20:42:09 UTC
I suppose on one hand, since iris is part of psi (right?), they're the first ones to poke about it...

Comment 12 Rex Dieter 2011-09-03 21:12:56 UTC
OK, found

and checked out
svn checkout https://delta.affinix.com/svn/trunk/iris

Unfortunately, there quite a few issues to sort out to make this remotely usable as a separate, standalone, packagable library, including:
* There are no official releases of the library yet. The latest source can be found in the ‘iris’ module of the Delta SVN.  means, snapshots only
* only seems to produce static libs (for me).
* no 'make install' targets

Comment 13 Pavel Alexeev 2011-09-04 08:28:20 UTC
(In reply to comment #9)
> RE: kopete's bundling of libiris
> Yes, now that we've been made aware of kopete's bundling, it needs to be
> reviewed similarly.
As I ask in ML ( http://www.mail-archive.com/devel@lists.fedoraproject.org/msg31331.html ) I also think it should be addressed in existing libraries too.

(In reply to comment #12)
> Unfortunately, there quite a few issues to sort out to make this remotely
> usable as a separate, standalone, packagable library, including:
> * There are no official releases of the library yet. The latest source can be
> found in the ‘iris’ module of the Delta SVN.  means, snapshots only
Jreen also not released ;) yet. And even no API freeze happened. So I think it is not problem.
> * only seems to produce static libs (for me).
> * no 'make install' targets
That two is problem. Especially compile in shared library. I think we should ask upstream authors to add such possibilities.

Comment 14 Rex Dieter 2011-09-04 16:05:32 UTC
I can get started on a (lib)iris pkg (initial implementation will likely be a static lib).

Comment 15 Pavel Alexeev 2011-09-04 17:35:56 UTC
Good news. Please tell me if any help needed.

Comment 16 Rex Dieter 2011-09-05 15:00:17 UTC
any help would indeed be appreciated.

Initial attempts:

added pkg-config support
'make install' still not working, needs some love.

Comment 17 Pavel Alexeev 2011-09-05 15:20:41 UTC
Glad to see. Please open new review request ant I try look on it. Add it there in depends on field.

Comment 18 Pavel Alexeev 2011-09-10 22:49:35 UTC
Filled reports:
psi: https://bugzilla.redhat.com/show_bug.cgi?id=737304
kdenetwork: https://bugzilla.redhat.com/show_bug.cgi?id=737305

Just for the info.

Comment 19 Rex Dieter 2011-10-21 20:00:13 UTC
OK, as far as I'm concerned, practically speaking, unbundling iris as it is shipped and provided by it's upstream is a no-go, and arguably worthy of a copylib exception.  I'll contact fpc to get the ball rolling.

Please don't consider that a barrier if anyone else wants to continue work on shipping a standalone iris (it just means that I personally am not willing to devote the time and energy to implement it all myself).

Comment 20 Rex Dieter 2011-10-21 20:17:48 UTC

Comment 21 Rex Dieter 2011-10-28 18:34:16 UTC
spot was kind enough to lend a hand, and went the last mile to get iris to build and package.  I'll submit the iris pkg for review shortly.

Comment 22 Pavel Alexeev 2011-11-09 14:35:44 UTC
I'h spoke with Ruslan and they say what Iris used in jreen only for few reasons what are:
1) jdns, which single can be packaged separately.
2) simplesasl. It may be replaced by runtime dependency to libqca2-plugin-cyrus-sasl. Its already present on qca-ossl package.
3) for ICE protocol implementation. By they words for GNU/Linux there already libnice (in Fedora) implementation. So, iris will be used for Win/Mac and by build switch in Fedora we will be able use libnice (iris need to be deleted in prep).

So, we can only separate pack jdns and leave iris.

Comment 23 Rex Dieter 2011-11-09 14:49:01 UTC
OK, thanks.

The latest iteration in the iris review includes qjdns/qjdns-devel sub-pkgs.

Comment 24 Pavel Alexeev 2011-11-10 09:49:32 UTC
May be have worth package [q]jdns separately from upstream project? Then we can do not pack iris at all (it will not be used anymore).

Comment 25 Ruslan Nigmatullin 2011-11-10 10:01:52 UTC
As I suppose you've mostly finished splitting of jdns and iris into separate packages. Would new jdns be shared library? Is it possible to find it with, i.e. pkgconfig, just looking into /usr/lib/jdns.pc and /usr/lib/qjdns.pc? Or I have to write my own scripts to find this library?

Comment 26 Rex Dieter 2011-11-10 15:14:43 UTC
I've currently split it out into a libqjdns.so.1 shared library, yes, which includes a qjdns.pc pkgconfig file.  (In a perfect world there'd also be a libjdns.so and jdns.pc for it's C-only bindings, but that would require more invasive changes)

Comment 27 Rex Dieter 2011-11-10 15:41:38 UTC
If anyone wants some intermediate/test iris/qjdns packages, let me know in bug #749885 (and what fedora release you're using)

Comment 28 Pavel Alexeev 2012-01-06 18:57:29 UTC
I think we can continue there than? Please provide package which use shared qjdns.

Comment 29 Rex Dieter 2012-01-06 19:38:19 UTC
yes, here you go...


* Fri Jan 06 2012 Rex Dieter <rdieter@fedoraproject.org> 1.0.1-1
- 1.0.1

Comment 30 Pavel Alexeev 2012-01-06 20:02:04 UTC
$ rpmlint *
jreen.src: W: invalid-url URL: https://github.com/eurolessar/jreen HTTP Error 404: Not Found

1) It must be https://github.com/euroelessar/jreen

jreen.src: W: invalid-url Source0: jreen-1.0.1.tar.xz
jreen.spec: W: invalid-url Source0: jreen-1.0.1.tar.xz
1 packages and 1 specfiles checked; 0 errors, 3 warnings.

2) As you built stable versions please use upstream tarballs from tags: https://github.com/euroelessar/jreen/tags

3) Please delete bundled libs instead of renaming directory.

4) Build of package failed on rawhide: http://koji.fedoraproject.org/koji/taskinfo?taskID=3625703

5) require libidn as runtime requirement (not BuildRequires) missed.

6) Don't see libnice in any requirements.

7) Runtime dependency to qca-ossl also not in spec.

Comment 31 Rex Dieter 2012-01-06 20:12:57 UTC
1.   ok

2. I couldn't get the links there to work or do anything. ??

3.  doesn't matter, not really a blocker as long as they're not used

4.  arg, some sort of gcc-4.7'ism. builds ok on my f16 box.

5.  there's no need for an explicit dependency, the library already links libidn.  the rpm ends up with a dep on

6. why?  what's that?  I see no reference to it in the build log.

7. ok

Comment 32 Rex Dieter 2012-01-06 20:20:36 UTC

* Fri Jan 06 2012 Rex Dieter <rdieter@fedoraproject.org> 1.0.1-2
- fix URL
- Requires: qca-ossl
- delete bundled libs

Comment 33 Magnus Tuominen 2012-01-07 09:14:03 UTC
tomahawk seems to use the bundled simplesasl to connect to jabber and google, need to split it to its own package?

Comment 34 Rex Dieter 2012-01-07 12:51:48 UTC
maybe, let's get review blockers handled first, then we can work through the runtime details between jreen/tomahawk upstreams later.

Comment 35 Rex Dieter 2012-01-07 13:05:25 UTC
In the meantime, I've tentatively marked the qca-cyrus-sasl review as a dependency here, in case it truly is a viable alternative to using simplesasl

I'm still curious how libnice comes into play, I cannot find any reference to it in the sources.

Comment 36 Rex Dieter 2012-01-07 13:27:16 UTC
I can confirm that logging into a google account works in tomahawk after instalilng qca-cyrus-sasl ... I think I'll add the dep here, once it's review is done and it's ready and available.

Comment 37 Ruslan Nigmatullin 2012-01-07 16:41:19 UTC
If it's still does matter official Jreen's page is http://qutim.org/jreen, sources can be downloaded from http://qutim.org/dwnl/18/libjreen-1.0.1.tar.bz2 .
Unfortunataly links at github don't work, I don't know why.

Comment 38 Rex Dieter 2012-01-07 16:57:09 UTC
OK, I'll use that URL.  thanks!


* Sat Jan 07 2012 Rex Dieter <rdieter@fedoraproject.org> 1.0.1-3
- update URL, Source0

Comment 39 Ruslan Nigmatullin 2012-01-07 18:27:05 UTC
Created attachment 551376 [details]
Fixes compilation error with gcc-4.7

> 4) Build of package failed on rawhide:
> http://koji.fedoraproject.org/koji/taskinfo?taskID=3625703

This patch fixes compilation error with gcc-4.7

Comment 40 Pavel Alexeev 2012-01-07 18:43:42 UTC
$ rpmlint *
jreen.src:13: W: macro-in-comment %{version}
jreen.spec:13: W: macro-in-comment %{version}
1 packages and 1 specfiles checked; 0 errors, 2 warnings.

It is trivial to fix, please do it.

Libnice indeed does not required in current version, only in further, so its ok.

So, there left only one stop issue - it does not build on gcc 4.7. I speak with Ruslan and they provide patch, please try it. In any case, Rex, you can't import it until it will be resolved.
So, package APPROVED.

Comment 41 Rex Dieter 2012-01-07 19:08:43 UTC
Thanks!  (for review, and gcc47 patch)

New Package SCM Request
Package Name: jreen
Short Description: Qt XMPP Library
Owners: rdieter
Branches: f16

Comment 42 Gwyn Ciesla 2012-01-08 22:06:57 UTC
Git done (by process-git-requests).

Comment 43 Rex Dieter 2012-01-09 13:47:38 UTC
imported into rawhide.

Comment 44 Fedora Update System 2012-01-10 23:04:49 UTC
clementine-0.7.1-4.fc16.1,tomahawk-0.3.3-4.fc16,libechonest-1.2.1-1.fc16,qca-cyrus-sasl-2.0.0-0.3.beta3.fc16,jreen-1.0.1-4.fc16,iris-1.0.0-0.10.20110904svn812.fc16,qtweetlib-0.3.0-1.fc16 has been submitted as an update for Fedora 16.

Comment 45 Fedora Update System 2012-01-19 21:56:21 UTC
clementine-0.7.1-4.fc16.1, tomahawk-0.3.3-4.fc16, libechonest-1.2.1-1.fc16, qca-cyrus-sasl-2.0.0-0.3.beta3.fc16, jreen-1.0.1-4.fc16, iris-1.0.0-0.10.20110904svn812.fc16, qtweetlib-0.3.0-1.fc16 has been pushed to the Fedora 16 stable repository.