Bug 892625 - Review Request: resiprocate - SIP reference implementation, SIP proxy, TURN server
Review Request: resiprocate - SIP reference implementation, SIP proxy, TURN s...
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
All Linux
unspecified Severity medium
: ---
: ---
Assigned To: Peter Lemenkov
Fedora Extras Quality Assurance
Depends On:
  Show dependency treegraph
Reported: 2013-01-07 07:41 EST by Daniel Pocock
Modified: 2013-05-01 00:26 EDT (History)
4 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2013-04-30 23:27:50 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
lemenkov: fedora‑review+
pbabinca: fedora‑cvs+

Attachments (Terms of Use)

  None (edit)
Description Daniel Pocock 2013-01-07 07:41:51 EST
Spec URL: https://svn.resiprocate.org/viewsvn/resiprocate/main/resip.spec.in?view=markup
SRPM URL: http://www.resiprocate.org/ReSIProcate_1.8_Release
Description: SIP reference implementation (C++ shared lib), SIP proxy, ICE/STUN/TURN server
Fedora Account System Username: pocock

Please note: we are currently testing the 1.8.6 release, which has been tweaked to fix compile bugs on Fedora 17.  The source tree (1.8 release branch and trunk) also includes systemd artifacts in these locations now:


A package can be built from a tarball using the instructions here:

Comment 1 Daniel Pocock 2013-01-07 07:45:02 EST
Also, please note this is my first submission of a package for Fedora and a sponsor is needed.

I currently maintain packages in Debian and OpenCSW, including the Debian version of reSIProcate
Comment 2 Daniel Pocock 2013-01-07 13:44:08 EST
Spec file has been renamed as per packaging guidelines:

Spec URL: https://svn.resiprocate.org/viewsvn/resiprocate/main/resiprocate.spec.in?view=markup
Comment 3 Daniel Pocock 2013-01-09 14:29:57 EST
reSIProcate 1.8.6 tarball has now been released.

The previous issue with rpmbuild -tb failing on resiprocate tarballs has been fixed - it appears that rpmbuild choked because a second spec file was included in the tarball (repro/repro.spec) - that has been removed.  Now it is possible to just do:

wget https://www.resiprocate.org/files/pub/reSIProcate/releases/resiprocate-1.8.6.tar.gz

rpmbuild -tb resiprocate-1.8.6.tar.gz
Comment 4 Peter Lemenkov 2013-01-11 02:17:46 EST
I'll review it and I'll sponsor you as well.
Comment 5 Daniel Pocock 2013-01-11 03:29:57 EST
Thanks, please feel free to reach out to me by email or xmpp if you need to.  

This will probably be the first TURN server in Fedora as well - what do you thing about jointly proposing an F19 feature for federated VoIP support (SIP + XMPP + TURN + ENUM)?
Comment 6 Daniel Pocock 2013-03-13 05:21:46 EDT
Peter, could you please add the comments you submitted over chat?

Do you think this package is potentially ready (or close to being ready) for F19?

WebRTC (actually, SIP over WebSockets) support is also coming in the next release, 1.9.0 most likely, but it could be a couple of months away.  That is a real game-changer, but it may be too late for F19.
Comment 7 Daniel Pocock 2013-03-13 18:28:09 EDT
Peter's initial feedback:

made a few changes to the resiprocate.spec.in


Most of them are applicable to other RPM-based distros as well, although some might be problematic. This one for example:


Here is a resulting spec-file


Builds perfectly fine in Rawhide


Requesting updated spec-file from you.
Comment 8 Daniel Pocock 2013-03-14 03:52:15 EDT
I notice this change:


This was discussed in Debian.  The reSIProcate API (and often ABI) changes between releases.  Sadly, this is just the nature of developing code for a protocol like SIP.  So an application that compiles against 1.X won't always compile against 1.(X+1) without changes.

To make this easier, in Debian, we wanted to let people install multiple versions of the libs concurrently.

You will notice the version is also part of the SONAME (it is done with libtool):

Comment 9 Peter Lemenkov 2013-03-14 09:02:57 EDT
Sorry for the delay. Ok, let's continue reviewing this.

Fresh Koji scratch-build for F-18:

* http://koji.fedoraproject.org/koji/taskinfo?taskID=5120911


Legend: + = PASSED, - = FAILED, 0 = Not Applicable

- rpmlint is not silent and some of his messages must be addressed:

work ~/Desktop: rpmlint resiprocate-*
resiprocate.src: W: name-repeated-in-summary C Resiprocate

^^^ Not a critical but this clearly means that summary should be improved. Not a blocker.

resiprocate.src: W: invalid-url Source0: resiprocate-1.8.6.tar.gz

^^^ Should point to https://www.resiprocate.org/files/pub/reSIProcate/releases/resiprocate-1.8.6.tar.gz . Not a blocker but should be fixed.

resiprocate-b2bua.x86_64: W: summary-not-capitalized C basic SIP B2BUA

^^^ Not a blocker, but should be fixed as well.

resiprocate-b2bua.x86_64: W: spelling-error %description -l en_US repro -> retro, re pro, re-pro

^^^ false positive. Should be ignored.

resiprocate-b2bua.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/basicB2BUA ['/usr/lib64']

^^^ That should be removed. See this for the details - http://fedoraproject.org/wiki/Packaging:Guidelines#Beware_of_Rpath

resiprocate-b2bua.x86_64: W: no-documentation
resiprocate-b2bua.x86_64: W: no-manual-page-for-binary basicB2BUA

^^^ Not an issue.

resiprocate-clicktocall.x86_64: W: summary-not-capitalized C click-to-call server process

^^^ Not a blocker.

resiprocate-clicktocall.x86_64: W: spelling-error %description -l en_US repro -> retro, re pro, re-pro

^^^ false positive.

resiprocate-clicktocall.x86_64: E: binary-or-shlib-defines-rpath /usr/sbin/clicktocall ['/usr/lib64']

^^^ rpath issue - similar to one above.

resiprocate-clicktocall.x86_64: W: no-documentation
resiprocate-clicktocall.x86_64: W: no-manual-page-for-binary clicktocall
resiprocate-devel.x86_64: W: no-documentation

^^^ Not an issue, just another one friendly reminder.

resiprocate-libs.x86_64: W: summary-not-capitalized C shared libraries http://www.resiprocate.org

^^^ Should be fixed (not a blocker).

resiprocate-libs.x86_64: W: spelling-error %description -l en_US repro -> retro, re pro, re-pro
resiprocate-libs.x86_64: W: spelling-error %description -l en_US librutil -> librettist
resiprocate-libs.x86_64: W: spelling-error %description -l en_US libresip -> Libreville
resiprocate-libs.x86_64: W: spelling-error %description -l en_US libdum -> Librium
resiprocate-libs.x86_64: W: spelling-error %description -l en_US dialogs -> dialog, dialog s

^^^ false positives.

resiprocate-libs.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/libsipdial-1.8.so ['/usr/lib64']

^^^ rpath issue again.

resiprocate-libs.x86_64: W: shared-lib-calls-exit /usr/lib64/libb2bua-1.8.so exit@GLIBC_2.2.5

^^^ That's a bad architectural decision (shared libs shouldn't call exit but rather trow an exception/rerurn error code) but not an blocker issue. Think of this as of another friendly advice.

resiprocate-libs.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/libb2bua-1.8.so ['/usr/lib64']

^^^ rpath again.

resiprocate-libs.x86_64: W: no-documentation

^^^ Can be ignored. This package doesn't have any docs and that was intended.

resiprocate-presence-server.x86_64: W: summary-not-capitalized C basic SIP presence server

^^^ Should be fixed.

resiprocate-presence-server.x86_64: W: spelling-error %description -l en_US repro -> retro, re pro, re-pro

^^^ false positive.

resiprocate-presence-server.x86_64: E: binary-or-shlib-defines-rpath /usr/sbin/presSvr ['/usr/lib64']

^^^ rpath again.

resiprocate-presence-server.x86_64: W: no-documentation
resiprocate-presence-server.x86_64: W: no-manual-page-for-binary presSvr

^^^ another one friendly reminder.

resiprocate-repro.x86_64: E: binary-or-shlib-defines-rpath /usr/sbin/reprocmd ['/usr/lib64']
resiprocate-repro.x86_64: E: binary-or-shlib-defines-rpath /usr/sbin/repro ['/usr/lib64']

^^^ rpath. 

resiprocate-repro.x86_64: W: only-non-binary-in-usr-lib

^^^ false positive triggered by a systemd-related script.

resiprocate-repro.x86_64: W: non-standard-uid /var/lib/repro repro
resiprocate-repro.x86_64: W: non-standard-gid /var/lib/repro repro

^^^ Not an issue - this was intended.

resiprocate-sipdialer.x86_64: W: summary-not-capitalized C click-to-call utility

^^^ Looks like a copypasted leftover. Should be fixed.

resiprocate-sipdialer.x86_64: W: spelling-error %description -l en_US repro -> retro, re pro, re-pro

^^^ false positive.

resiprocate-sipdialer.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/sipdialer ['/usr/lib64']

^^^ rpath again - should be fixed.

resiprocate-turn-server.x86_64: W: spelling-error %description -l en_US reTurn -> re Turn, return, returns
resiprocate-turn-server.x86_64: W: spelling-error %description -l en_US standardised -> standardized, standardize, standard
resiprocate-turn-server.x86_64: W: spelling-error %description -l en_US repro -> retro, re pro, re-pro

^^^ false positive.

resiprocate-turn-server.x86_64: E: binary-or-shlib-defines-rpath /usr/sbin/reTurnServer ['/usr/lib64']

^^^ rpath again - should be fixed.

resiprocate-turn-server.x86_64: W: only-non-binary-in-usr-lib

^^^ false positive triggered by a systemd-related script.

10 packages and 0 specfiles checked; 9 errors, 32 warnings.
work ~/Desktop:

Ok, I see a number of issues and some of them should be fixed before final approval.

+ The package is named according to the  Package Naming Guidelines.
+ The spec file name matches the base package %{name}, in the format %{name}.spec.
+ The package meets the Packaging Guidelines except the issues already mentioned above.
+ The package is licensed with a Fedora approved license and meets the Licensing Guidelines.
+ The License field in the package spec file matches the actual license (Vovida).

- The file, containing the text of the license(s) for the package, MUST be included in %doc.

+ The spec file is written in American English.
+ The spec file for the package is legible.
+ The sources used to build the package, match the upstream source, as provided in the spec URL.

sulaco ~/rpmbuild/SOURCES: sha256sum resiprocate-1.8.6.tar.gz*
4dac3b7a17fa7842f5dbe994ba7cfef720f62b19781f8912f106ad6e3adfd5f8  resiprocate-1.8.6.tar.gz
4dac3b7a17fa7842f5dbe994ba7cfef720f62b19781f8912f106ad6e3adfd5f8  resiprocate-1.8.6.tar.gz.1
sulaco ~/rpmbuild/SOURCES:

+ The package successfully compiles and builds into binary rpms on at least one primary architecture. See koji link above.
+ All build dependencies are listed in BuildRequires.
0 No need to handle locales.
+ The package stores shared library files in some of the dynamic linker's default paths, and it calls ldconfig in %post and %postun.
+ The package does NOT bundle copies of system libraries.
0 The package is not designed to be relocatable.
+ The package owns all directories that it creates.
+ The package does not list a file more than once in the spec file's %files listings.
+ Permissions on files are set properly.
0 The package DOESN'T have a %clean section, so it won't build cleanly on systems with old rpm (EL-4 and EL-5). Beware.
+ The package consistently uses macros.
+ The package contains code, or permissible content.
0 No extremely large documentation files.
+ Anything, the package includes as %doc, does not affect the runtime of the application.
+ Header files are stored in a -devel package.
0 No static libraries.
0 No pkgconfig(.pc) files.
+ The library file(s) that end in .so (without suffix) is(are) stored in a -devel package.
+ The -devel package requires the lib package using a fully versioned dependency: Requires: %{name}-lib%{?_isa} = %{version}-%{release}
+ The package does NOT contain any .la libtool archives.
0 Not a GUI application.
+ The package does not own files or directories already owned by other packages.
0 At the beginning of %install, the package  does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) so it won't build cleanly on systems with old rpm (EL-4 and EL-5). Beware.
+ All filenames in rpm packages are valid UTF-8.

Ok, so here are some remaining issues:

- Remove rpath
- Fix capitalization of descriptions
- Fix sipdialer summary
- Add licensing info into package (mark it as %doc)
- Use a direct internel link to the source tarball

Please address/explain these issues and I'll finish review.
Comment 10 Daniel Pocock 2013-03-22 17:13:09 EDT
All issues except rpath appear quite trivial to fix (and I've just done them in trunk)

For the rpath issue:

* The configure.ac is relatively standard, no real hacks like some other projects
* I bootstrap the upstream releases on a Debian 6 (squeeze) system with the Debian autotools, that generates the configure script
* according to the Debian wiki about rpath, there are slight differences in the way libtool works in this scenario because Fedora has lib64 and Debian had lib32
* I suspect that running autoreconf will generate another configure script that is more Fedora friendly - is it safe to do that from within a spec file?  Have you seen this done elsewhere?


Can you also comment on the %doc issue?  Should I just include it in one (or all?) of the %files sections?  E.g.

%files libs

Or is there some way to tell it that file belongs in every package?
Comment 11 Daniel Pocock 2013-03-22 17:28:17 EDT

I found these comments on the autoreconf subject:



and this seems to confirm my guess that it is a Debian/Fedora autotools mismatch issue:

My own feeling is that:

a) wearing my upstream developer's hat, I'm not keen on different people re-running autoreconf and then asking for support, because they end up with different permutations of the Makefiles

b) but on the other hand, I'm the one who implement autotools for reSIProcate, and I tried to make the configure.ac and **/Makefile.am as conventional as possible (no special hacks) so they should be portable to newer/older autotools

Have you seen this issue before?  Do you think we should follow the suggestion from that first link, force autoreconf to run before configure?  Is there anywhere else where this should be discussed on the mailing list perhaps?
Comment 12 Daniel Pocock 2013-04-04 07:33:49 EDT
Discussion raised on the libtool and Fedora packaging lists:



So far, the most probably immediate solution appears to be from this email

> sed -i.libdir_syssearch -e \
>    '/sys_lib_dlsearch_path_spec/s|/usr/lib |/usr/lib /usr/lib64 /lib /lib64
> |' \ configure
> ------------------------------------------------------------------------
>        i.e. just add the needed paths to sys_lib_dlsearch_path_spec in
>        configure (note that libtool in the build directory is generated by
>        configure) before calling %configure.
Comment 13 Daniel Pocock 2013-04-05 09:06:15 EDT
I tried the configure option --disable-rpath, it is not supported, it appears to be a custom option.

Therefore, I've implemented the hack with sed:

sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool

and a new spec file is available:

These changes should be part of the official 1.8.7 upstream release too


Please let me know if further changes are required.
Comment 14 Peter Lemenkov 2013-04-06 02:14:58 EDT
(In reply to comment #13)
> I tried the configure option --disable-rpath, it is not supported, it
> appears to be a custom option.
> Therefore, I've implemented the hack with sed:
> sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g'
> libtool
> sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
> and a new spec file is available:
> These changes should be part of the official 1.8.7 upstream release too
> http://svn.resiprocate.org/viewsvn/resiprocate/main/resiprocate.spec.
> in?view=markup
> Please let me know if further changes are required.

Hello Daniel, and sorry for leaving you alone again. Yes, I don't see any other issues, so this package is 


ps proceed as described here:
* https://fedoraproject.org/wiki/Package_SCM_admin_requests#New_Packages
Comment 15 Peter Lemenkov 2013-04-06 02:18:43 EDT
Unblocking FE-NEEDSPONSOR - I've just sponsored Daniel.
Comment 16 Daniel Pocock 2013-04-06 13:04:27 EDT
New Package SCM Request
Package Name: resiprocate
Short Description: SIP reference implementation, SIP proxy, TURN server
Owners: pocock
Branches: f17 f18 f19 el6
InitialCC: peter
Comment 17 Pavol Babinčák 2013-04-08 04:56:33 EDT
Git done (by process-git-requests).
Comment 18 Fedora Update System 2013-04-19 02:44:19 EDT
resiprocate-1.8.7-1.fc18 has been submitted as an update for Fedora 18.
Comment 19 Fedora Update System 2013-04-19 02:44:37 EDT
resiprocate-1.8.7-1.fc17 has been submitted as an update for Fedora 17.
Comment 20 Fedora Update System 2013-04-19 02:44:47 EDT
resiprocate-1.8.7-1.fc19 has been submitted as an update for Fedora 19.
Comment 21 Fedora Update System 2013-04-19 12:51:22 EDT
resiprocate-1.8.7-1.fc19 has been pushed to the Fedora 19 testing repository.
Comment 22 Fedora Update System 2013-04-30 23:27:52 EDT
resiprocate-1.8.7-1.fc17 has been pushed to the Fedora 17 stable repository.
Comment 23 Fedora Update System 2013-04-30 23:36:29 EDT
resiprocate-1.8.7-1.fc18 has been pushed to the Fedora 18 stable repository.
Comment 24 Fedora Update System 2013-05-01 00:26:13 EDT
resiprocate-1.8.7-1.fc19 has been pushed to the Fedora 19 stable repository.

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