Spec URL: http://marionline.fedorapeople.org/packages/SPECS/pjproject.spec SRPM URL: http://marionline.fedorapeople.org/packages/SRPMS/pjproject-1.10-1.fc14.src.rpm Description: This package provides the Open Source, comprehensive, high performance, small footprint multimedia communication libraries written in C language for building embedded/non-embedded VoIP applications. It contain: - PJSIP - Open Source SIP Stack - PJMEDIA - Open Source Media Stack - PJNATH - Open Source NAT Traversal Helper Library - PJLIB-UTIL - Auxiliary Library - PJLIB - Ultra Portable Base Framework Library In my fedora 14 64 bit I can create the packages whitout problems. I try to compile the package using mock but I obtain error...I don't understand where is my mistake... I'm creating this package to support SFLphone package: https://bugzilla.redhat.com/show_bug.cgi?id=692131
Just some comments: - Have a look at: http://fedoraproject.org/wiki/PackagingGuidelines#Shared_Libraries - Please try to build a shared library... - Don't use /usr/lib/ directly, there is %{_libdir} or it won't build on 64 bit machines properly. - You tried to build for 64 bit, so the library is in the wrong location: needs to be in /usr/lib64/ - Have a look at: http://fedoraproject.org/wiki/PackagingGuidelines#Exceptions_2
I update the spec file: http://marionline.fedorapeople.org/packages/SPECS/pjproject.spec and the src.rpm file: http://marionline.fedorapeople.org/packages/SRPMS/pjproject-1.10-2.fc14.src.rpm Now I can't create package for 64 bit and mock give me error...I don't undestand why...The installation try to put all the *.a files in the /usr/lib.
I try a scratch build using koji, here: http://koji.fedoraproject.org/koji/taskinfo?taskID=3272842
(In reply to comment #3) > I try a scratch build using koji, here: > http://koji.fedoraproject.org/koji/taskinfo?taskID=3272842 This failed because of: sed -e "s!@PREFIX@!/builddir/build/BUILDROOT/pjproject-1.10-2.fc14.x86_64/usr!" libpjproject.pc.in You could patch the install script to call this instead: sed -e "s!@PREFIX@!/usr!" libpjproject.pc.in (Don't know the autotools solution for that...) Other issues: - http://fedoraproject.org/wiki/PackagingGuidelines#Parallel_make - Here the library isn't build at all: File not found by glob: ~/rpmbuild/BUILDROOT/pjproject-1.10-2.fc15.x86_64/usr/lib64/*.a
(In reply to comment #4) > You could patch the install script to call this instead: > sed -e "s!@PREFIX@!/usr!" libpjproject.pc.in Please don't hardcode "/usr", use the macro "%{_prefix}" instead.
(In reply to comment #5) > (In reply to comment #4) > > You could patch the install script to call this instead: > > sed -e "s!@PREFIX@!/usr!" libpjproject.pc.in > > Please don't hardcode "/usr", use the macro "%{_prefix}" instead. That will not work, when you patch it in the buildsystem of the program, only if you use the sed in the spec file - depends on how Mario decides to get this program building,
(In reply to comment #6) > That will not work, when you patch it in the buildsystem of the program, only > if you use the sed in the spec file Right, that's what I meant. Sorry if I was unclear. The root of the problem may be that --program-prefix= in the configure call is empty, setting --program-prefix=%{_prefix} is worth a try.
Hi, thank you Christoph, I will test the opstion --program-prefix now...but I don't know if it works because in the Makefile is report "/lib" clearly. I develop a little patch to fix Makefile, I'm testing it...
Ok I create a patch for the Makefile and another file. I will contact the developer to ask them to add the "--libdir" option to configure file. Now I can create the packages without problems...hope the spec file is correct: SPEC: http://marionline.fedorapeople.org/packages/SPECS/pjproject.spec SRPMS: http://marionline.fedorapeople.org/packages/SRPMS/pjproject-1.10-4.fc14.src.rpm Koji scratch build for fedora 15: http://koji.fedoraproject.org/koji/taskinfo?taskID=3273319 For fedora 14: http://koji.fedoraproject.org/koji/taskinfo?taskID=3273314
I can help review this.
A few initial comments, As there's only a static library, 1. MUST drop ldconfig scriptlet(s). 2. there's no need that I can tell for any main runtime package here. MUST move %{_libdir}/lib*.a to -devel subpkg 3. MUST add Provides: %{name}-static = %{version}-%{release} to -devel 4. SHOULD drop --libdir=%{_libdir} , %%configure macro already includes that by default Oh my, /usr/lib64/libpjsip-simple-x86_64-unknown-linux-gnu.a wtf are they embedding the platform into the library name. I suppose if that's how this library is expected to work, so be it, but that's ... unconventional. 5. MUST fix libpjproject.pc on my x86_64 install, 1.10-4 still contains libdir=${exec_prefix}/lib
Thank you Rex for your reply. I try to update my rpm package the next year...I am on vacation :) so I don't think I can do it in these week...sorry... I report here my update as soon as possible!
I update the spec file: SPEC: http://marionline.fedorapeople.org/packages/SPECS/pjproject.spec SRPM: http://marionline.fedorapeople.org/packages/SRPMS/pjproject-1.10-5.fc16.src.rpm I don't understand the point 5. I will update the package with new release (1.12) as soon as possible.
point 5 is look in %{_libdir}/libpjproject.pc file it's containing libdir=${exec_prefix}/lib is wrong on many fedora 64bit platforms (like x86_64) where _%libdir = /usr/lib64
some more now, 6. Licensing. using licensecheck too, seems all files include the gpl 'or later' clause, so we can go with License: GPLv2+ 7. use the included configure script (esp to control build options, see 8). unless there's some good reasons not to, and if so, please document them in a .spec comment 8. bundled libraries in third_party, to better ensure they're not used, add build options: --with-external-speex --with-external-gsm --with-external-pa will require additional BuildRequires for each of these, like BuildRequires: speex-devel BuildRequires: gsm-devel BuildRequires: portaudio-devel respectively (there's other stuff in there that requires more scrutiny, but this is a good first effort) 9. document in %build section comment that %{?_smp_mflags} cannot be used 10. drop/omit empty main pkg, ie, remove %files and only do %files devel ...
5) should be ok now...I update the patch; 6) done; 7) 8) done; 9) if I add %{?_smp_mflags} the package is not build...Done; 10) done. SPEC: http://marionline.fedorapeople.org/packages/SPECS/pjproject.spec SRPM: http://marionline.fedorapeople.org/packages/SRPMS/pjproject-1.10-6.fc16.src.rpm
Excellent! I'm reviewing the remaining third_party bits. in the meantime, one piece of advice, I see stuff like %files devel %dir %{_includedir}/pj++/ %{_includedir}/pj++/*.hpp you can simplify these 2 down to 1 line: %{_includedir}/pj++/ (listing a directory will own it, and recursively everything under it) which, for me at least, is simpler and easier to read.
OK, found 2 bundled libraries that require clarification third_party/resample => libresample third_party/srtp => libsrtp both of these are included in fedora already, and it's not clear 1. why it's bundled, and distributing it's own copies of these libraries 2. why external/system copies cannot be used. See also, https://fedoraproject.org/wiki/Packaging:Treatment_Of_Bundled_Libraries if we are to justify an attempt to use the bundled libraries in this fedora package, could you contact pjproject upstream to provide the answers to these: https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries#Standard_questions
There is also bundled iLBC codec. See about iLBC http://lists.fedoraproject.org/pipermail/legal/2011-November/001755.html and http://lists.fedoraproject.org/pipermail/legal/2011-November/001756.html What about building shared pjproject library?
OK, ilbc will need to be stripped out (somehow), until the legal issues are sorted out. shared library... well, that's upstream's call, whether they are willing to support an ABI or not.
Reply to comment 17: Thanks Rex! :) Should be ok now...isn't? SPEC: http://marionline.fedorapeople.org/packages/SPECS/pjproject.spec SRPM: http://marionline.fedorapeople.org/packages/SRPMS/pjproject-1.10-7.fc16.src.rpm I write to upstream ML to understand if I can and how compile pjproject using external libresample and libsrtp libraries already included in fedora repository. For the iLBC, are there news? Should we ask to fedora-legal-list?
Blocking FE-Legal, pending iLBC.
Waiting a legal clarification I update the package to version 1.12. SPEC: http://marionline.fedorapeople.org/packages/SPECS/pjproject.spec SRPM: http://marionline.fedorapeople.org/packages/SRPMS/pjproject-1.12-0.fc16.src.rpm
Just to understand. The pjproject website report this license for iLBC codec: http://www.pjsip.org/licensing.htm If I understand clearly, they use the webrtc package for iLBC so iLBC in pjproject is release under webrtc license and for Fedora shouldn't be problems with iLBC in this package...Am I wrong?
Licensing is not at issue here, it is patents.
Lifting FE-Legal, iLBC is okay to include.
(In reply to comment #26) > Lifting FE-Legal, iLBC is okay to include. Great! This is perhaps the most awesome news from FE-LEGAL I've heard so far.
Wonderful, now it should be resolved these issues: - compile using libresample and libsrtp already included in Fedora repo; - use Fedora iLBC library? Is there an rpm library for this?
ping? I just came across a recommendation for sflphone, and I see its inclusion in Fedora is blocked by this review request, is there any progress?
I am waiting to understand how to compile the library with external official fedora packages. I report in comment 28 the two issues.
(In reply to comment #30) > I am waiting to understand how to compile the library with external official > fedora packages. I report in comment 28 the two issues. Took a look at this. The "resample" they use is not the same libresample that Fedora has, ours has a completely different API. It looks like at some point, someone took the application "resample" and converted it into a simple library. I think the pjsip upstream knows about this too, see: http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2007-September/000064.html Given that, I don't see how we can sanely replace the bundled resample with the system libresample. srtp is a different story, that was straightforward to do. I've attached a new spec and patch that uses the system libsrtp. (P.S. In the future, start Release at "1", not "0")
Created attachment 576866 [details] Updated spec file
Created attachment 576867 [details] patch to use system libsrtp
Thank you Mario and Tom. I tested the latest SPEC file. I modified Tom's patch to remove the .system from file names (otherwise it just kept asking me manually which files to patch). Unfortunately, then it only builds -devel and -debuginfo packages for me: Here's a snip from the output: Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.DnFuok + umask 022 + cd /home/cbm/src/fedora/rpmbuild/BUILD ----8<---- sed -e "s!@PJ_INSTALL_CFLAGS@!-I/usr/include -DPJ_AUTOCONF=1 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1!" > /home/cbm/src/fedora/rpmbuild/BUILDROOT/pjproject-1.12-1.fc16.i386//usr/lib/pkgconfig/libpjproject.pc + /usr/lib/rpm/find-debuginfo.sh --strict-build-id /home/cbm/src/fedora/rpmbuild/BUILD/pjproject-1.12 find: `debug': No such file or directory + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-compress + /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1 + /usr/lib/rpm/redhat/brp-python-hardlink + /usr/lib/rpm/redhat/brp-java-repack-jars Processing files: pjproject-devel-1.12-1.fc16.i686 ----8<---- Processing files: pjproject-debuginfo-1.12-1.fc16.i686 Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/cbm/src/fedora/rpmbuild/BUILDROOT/pjproject-1.12-1.fc16.i386 Wrote: /home/cbm/src/fedora/rpmbuild/RPMS/i686/pjproject-devel-1.12-1.fc16.i686.rpm Wrote: /home/cbm/src/fedora/rpmbuild/RPMS/i686/pjproject-debuginfo-1.12-1.fc16.i686.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.qfVZW9 + umask 022 + cd /home/cbm/src/fedora/rpmbuild/BUILD + cd pjproject-1.12 + /bin/rm -rf /home/cbm/src/fedora/rpmbuild/BUILDROOT/pjproject-1.12-1.fc16.i386 + exit 0
Created attachment 577648 [details] pjproject-1.12-use-system-srtp.patch I manually deleted the .system from each file path/name.
(In reply to comment #34) > Unfortunately, then it only builds -devel and -debuginfo packages for me: Isn't this expected? In %files only a devel package is listed, so building a devel and debuginfo package is the right thing to do. When you can build a shared library, the versioned one can go to the "normal" pjproject package and only *.so to -devel (and *.a needs to be in -static): When that is not possible/wanted/needed, it looks fine for me. (Only looked at the spec file, no deeper look into the package.)
I'm not sure what's expected. But when I tried to install the resulting -devel rpm it wanted the "normal" package as a dependency... $ rpm -ivh RPMS/i686/pjproject-devel-1.12-1.fc16.i686.rpm error: Failed dependencies: pjproject = 1.12-1.fc16 is needed by pjproject-devel-1.12-1.fc16.i686 $
(In reply to comment #37) > I'm not sure what's expected. But when I tried to install the resulting -devel > rpm it wanted the "normal" package as a dependency... > > $ rpm -ivh RPMS/i686/pjproject-devel-1.12-1.fc16.i686.rpm > error: Failed dependencies: > pjproject = 1.12-1.fc16 is needed by pjproject-devel-1.12-1.fc16.i686 > $ Yes, this is expected, when you have a library in -devel (*.so), which symlinks to the proper versioned one (e.g. *.so.1.0.0), which is in the pjproject package. But as you only have the static one... Then you need to delete "Requires: %{name} = %{version}-%{release}".
Update package: Spec URL: http://marionline.fedorapeople.org/packages/SPECS/pjproject.spec SRPM URL: http://marionline.fedorapeople.org/packages/SRPMS/pjproject-1.12-2.fc16.src.rpm Thank you Spot! If I run rpmlint I have got a lot of errors... > (P.S. In the future, start Release at "1", not "0") Ok, sorry... @Colin, I don't understand why you change the patch...For me spot's patch works... Now we need to resolve: - compile using libresample already included in Fedora repo; - use Fedora iLBC library? Is there an rpm library for this? - resolve rpmlint error (but we need a fix on upstream, I think). Thanks to all -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers
(In reply to comment #39) > Now we need to resolve: > - compile using libresample already included in Fedora repo; As I pointed out, this isn't going to be straightforward. Someone will need to port the code to the libresample API. It may be simpler to just ask for a bundling exception here. > - use Fedora iLBC library? Is there an rpm library for this? Not that I am aware of. I think webrtc is the iLBC codebase, but their website is rather... confusing.
Just FYI - I'm working on proper packaging WebRTC and here are some preliminary results: http://peter.fedorapeople.org/WebRTC/webrtc.spec http://peter.fedorapeople.org/WebRTC/webrtc-0-0.7.svn1950.fc17.src.rpm I'm using it (some libraries - audiocodecs and something else) for my own project since January and it works quite fine.
@Mario: not sure, maybe its a local problem (but its a pretty stock F16 system) Here's the output using the patch from comment #33: $ rpmbuild -bb SPECS/pjproject.spec Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.SCKXit + umask 022 + cd /home/cbm/src/fedora/rpmbuild/BUILD + LANG=C + export LANG + unset DISPLAY + cd /home/cbm/src/fedora/rpmbuild/BUILD + rm -rf pjproject-1.12 + /usr/bin/bzip2 -dc /home/cbm/src/fedora/rpmbuild/SOURCES/pjproject-1.12.tar.bz2 + /bin/tar -xf - + STATUS=0 + '[' 0 -ne 0 ']' + cd pjproject-1.12 + /bin/chmod -Rf a+rX,u+w,g-w,o-w . + echo 'Patch #0 (pjproject-1.12_fix_libdir.patch):' Patch #0 (pjproject-1.12_fix_libdir.patch): + /bin/cat /home/cbm/src/fedora/rpmbuild/SOURCES/pjproject-1.12_fix_libdir.patch + /usr/bin/patch -s -p1 --fuzz=0 + echo 'Patch #1 (pjproject-1.12-use-system-srtp.patch):' Patch #1 (pjproject-1.12-use-system-srtp.patch): + /bin/cat /home/cbm/src/fedora/rpmbuild/SOURCES/pjproject-1.12-use-system-srtp.patch + /usr/bin/patch -s -p1 -b --suffix .system --fuzz=0 The text leading up to this was: -------------------------- |--- pjproject-1.12/build.mak.in.system 2012-04-11 15:23:17.995573089 -0400 |+++ pjproject-1.12/build.mak.in.system 2012-04-11 15:23:17.999573058 -0400 -------------------------- File to patch: --------- I followed Thomas's suggestion in comment #38 and now it builds and installs. @Mario: I suppose you should delete that line from your spec file?
@Colin, from source package in comment 39 I can create packages for fedora 16 x86_64 and i386 without problems using mock... And yes I could delete the requires package because all file are in -devel... @Spot, yes, I read it...I am not a C/C++ developer or expert...I can't create a patch to resolve this issue...sorry... -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers
sorry I suck, but will have to drop out as official reviewer of this pkg for now, at least until I have more time to help finish it up.
I can review that. But as I think there unresolved stop issue libresample/resample? @Mario, would you like ask exception for that because it is not system library and modified program as Tom point before?? @Peter do you willing post your WebRTC to review? @Mario, did you try link it with WebRTC instead of iLBC or ask upstream authors?
Pavel, thank you for you interest. I think that ask an exception is the best thing...the library was modified and pjsip developers are releasing a new version of pjproject and I understand that have a lot of new features and functionalities...so this version will not be update...and a patch to use libresample means to change a lot of code (I am not a C/C++ developer, I don't know if it could be patch easly). I will try to link WebRTC using Peter package...but there is not a review request yet. Thank you! -- Fedora Bugzappers volunteer triage team https://fedoraproject.org/wiki/BugZappers
If exception will be granted and Peter will not add WebRTC into Fedora, I may help with it. But do not forward so, go step by step.
Sorry for my late... A new version of pjsip was released...It has the possibility to use ffmpeg that is included in rpmfusion repository. I start to create this package to help sflphone rpm review request and to see a free sip software client for KDE into fedora repository. I don't think that sflphone use new version of pjproject/pjsip nearly. So maybe it is better to continue with this package version and when sflphone use new version of pjsip update this package...but without ffmpeg support... I open my exception here: https://fedorahosted.org/fpc/ticket/179 Thank you!
Folks, heads up! Sorry for being late. I didn't submit full WebRTC suite for the review yet (it requires a lot of work, really) but I've just submitted ilbc - stripped down from WebRTC version. latter we'll replace it with some WebRTC sub-packages but I wouldn't hold my breath waiting for WebRTC in repos. See bug #845221 for further details.
Ok, thought I mentioned that I filed a separate packaging request for the extracted echo-cancellation from webrtc as it might affect the effort happening in this bug if there is code overlap. The upstream for this package is here: http://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing/ The bug report I filed is here: https://bugzilla.redhat.com/show_bug.cgi?id=863437
(In reply to comment #50) > Ok, thought I mentioned that I filed a separate packaging request for the > extracted echo-cancellation from webrtc as it might affect the effort > happening in this bug if there is code overlap. > > The upstream for this package is here: > http://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing/ > > The bug report I filed is here: > https://bugzilla.redhat.com/show_bug.cgi?id=863437 I started thinking that maybe it's time to pull in the entire WebRTC stack instead of cherry-picking some particular pieces.
(In reply to comment #51) I started thinking that maybe it's time to pull in the entire WebRTC stack > instead of cherry-picking some particular pieces. I don't have any opinion on that apart from wanting something ready in time for F18 so we can have working echo cancellation in PulseAudio and Empathy. If PulseAudio links to the library I packaged above or a properly packaged full webrtc library is equally fine for me. But I don't want to block on that comprehensive packaging.
Since SFLphone 1.2.1 (http://sflphone.org/news/stable-version-121-released) use the version 2.0.1 of pjsip, is there any plans to update this review request ?
Yes, it is planning but I need a bit of time to do so...
I update the package: Spec URL: http://marionline.fedorapeople.org/packages/SPECS/pjproject.spec SRPM URL: http://marionline.fedorapeople.org/packages/SRPMS/pjproject-2.0.1-1.fc18.src.rpm We should resolve: - compile using libresample already included in Fedora repo (I don't understand if new version check if it is already installed); - use Fedora iLBC library... I don't understand how to do this. - resolve rpmlint error (but we need a fix on upstream). Thank you
Any news here? I started packaging sflphone but there is a block in front of me.
(In reply to Mario Santagiuliana from comment #55) > I update the package: > Spec URL: http://marionline.fedorapeople.org/packages/SPECS/pjproject.spec > SRPM URL: > http://marionline.fedorapeople.org/packages/SRPMS/pjproject-2.0.1-1.fc18.src. > rpm > > We should resolve: > - compile using libresample already included in Fedora repo (I don't > understand if new version check if it is already installed); I got some inspiration here: http://svn.pjsip.org/repos/pjproject/trunk/third_party/build/samplerate/README.txt and I'm able to build the package with the following changes in the specfile: --- pjproject.spec~ 2013-02-16 15:16:03.000000000 +0100 +++ pjproject.spec 2013-07-31 15:22:29.408377163 +0200 @@ -17,6 +17,7 @@ BuildRequires: gsm-devel BuildRequires: portaudio-devel BuildRequires: libsrtp-devel +BuildRequires: libsamplerate-devel %description This package provides the Open Source, comprehensive, high @@ -48,11 +49,24 @@ %setup -q %patch0 -p1 %patch1 -p1 - +# make sure we don't bundle this code +rm -rf third_party/resample +# remove hardcoded references in ldflags +sed -i -e "/ac_resample_dll/,+8 d" build.mak.in +# this one seems unused: sed -i -e "s/-lresample-\$(TARGET_NAME)//" build/os-linux.mak +# fix include path to use the system library +sed -i -e "s#../../third_party/libsamplerate/src/samplerate.h#samplerate.h#" pjmedia/src/pjmedia/resample_libsamplerate.c %build env CFLAGS="%{optflags}" CXXFLAGS="%{optflags}" \ -%configure --with-external-speex --with-external-gsm --with-external-pa --libdir=%{_libdir} --disable-ffmpeg +%configure --with-external-speex --with-external-gsm --with-external-pa --libdir=%{_libdir} --disable-ffmpeg --enable-libsamplerate +# don't know where this comes from so modify Makefile directly +# to prevent the attempt to build the removed code +sed -i -e "s/resample//" third_party/build/Makefile +# the default value is PJMEDIA_RESAMPLE_LIBRESAMPLE +# and it is not redefined by configure after enabling libsamplerate +# so change that to PJMEDIA_RESAMPLE_LIBSAMPLERATE manually +echo "#define PJMEDIA_RESAMPLE_IMP PJMEDIA_RESAMPLE_LIBSAMPLERATE" > pjlib/include/pj/config_site.h make dep make clean make # cannot use %{?_smp_mflags}, the package will not build if used ... of course this is just a proof of concept, sed should be replaced with proper patches and we should patch configure rather than to modify third_party/build/Makefile after it gets configured, and try to get the changes upstream, but I guess this is a good start > - use Fedora iLBC library... I don't understand how to do this. I'd call Peter for help here (NEEDINFO) > - resolve rpmlint error (but we need a fix on upstream). you mean the FSF address issue? - this is not a blocker, but ... have you contacted upstream already?
Fedora packages Asterisk. Asterisk 12 will also need pjproject, but unfortunately, will not be able to use the upstream source and needs to be compiled especially for shared library usage. Instructions are available here: https://wiki.asterisk.org/wiki/display/AST/Installing+pjproject And Asterisk's fork of pjproject is here: https://github.com/asterisk/pjproject I'm not sure if this helps or hurts, but I'm wondering if packaging Asterisk's fork might resolve some issues with shared libraries.
Most of the Asterisk changes to pjproject are related to the build system, so that pjproject can be built as a shared object. While attending the AstriCon conference this week, this was discussed at length, and the changes are being pushed back upstream to the pjproject, and should hopefully appear in a future version of pjproject. In the meatime, I'd add my voice to those in support of using the Asterisk version of pjproject, at least in the short term.
vote for pjproject patched asterisk 12 compatible version
Hi folks, Has there been any change to this BZ? It seems there are multiple packages depending on pjproject. (Asterisk, slfphone). Is it fair to say we are waiting on upstream to provide an update? 2.1.x? Happy to help where needed.
In the short term, we should try to take the Asterisk version of pjproject and try to package it up, as it's been modified to build as a shared object. It was my intention to try packaging this up, but I haven't had a chance to get to it. The Asterisk version is at https://github.com/asterisk/pjproject, and some additional build instructions (at least with regards to Asterisk) are at https://wiki.asterisk.org/wiki/display/AST/Installing+pjproject In particular, you'll want to pay close attention to the ./configure line on that wiki page. In the long term, I'm hoping that pjproject will incorporate the Asterisk changes (so that pjproject can easily be built as a shared library), as well as eliminate the code from the third_party directory so that we don't have bundling issues. If you're willing to work on packaging this up (using the spec files above), I'd appreciate it. I'd be happy to help review and help suggest changes -- I just don't have time at the moment to do the package myself, as I'm getting ready to leave on vacation :-/
(In reply to Jared Smith from comment #62) > In the short term, we should try to take the Asterisk version of pjproject > and try to package it up, as it's been modified to build as a shared object. > It was my intention to try packaging this up, but I haven't had a chance to > get to it. > > The Asterisk version is at https://github.com/asterisk/pjproject, and some > additional build instructions (at least with regards to Asterisk) are at > https://wiki.asterisk.org/wiki/display/AST/Installing+pjproject > > In particular, you'll want to pay close attention to the ./configure line on > that wiki page. > > In the long term, I'm hoping that pjproject will incorporate the Asterisk > changes (so that pjproject can easily be built as a shared library), as well > as eliminate the code from the third_party directory so that we don't have > bundling issues. > > If you're willing to work on packaging this up (using the spec files above), > I'd appreciate it. I'd be happy to help review and help suggest changes -- > I just don't have time at the moment to do the package myself, as I'm > getting ready to leave on vacation :-/ If it helps, feel free to refer to the spec I'm using here: https://messinet.com/rpms/browser/pjproject which works well with Asterisk 12, which I've also been building here: https://messinet.com/rpms/browser/asterisk
> > If it helps, feel free to refer to the spec I'm using here: > https://messinet.com/rpms/browser/pjproject which works well with Asterisk > 12, which I've also been building here: > https://messinet.com/rpms/browser/asterisk Thanks Antony I have made a couple of changes to your spec. rpmlint was reporting a few warnings and errors. I've shortened the summary and moved the libraries into the -devel package. There is still an error reporting relating to the license.. "incorrect-fsf-address", However I mailed upstream and I was informed this morning that the license has been corrected and will be available in the next release. Remaining errors as follows [mac@rhodey rpmbuild]$ rpmlint SPECS/pjproject.spec SRPMS/pjproject-2.1-0.6.git217740d.fc20.src.rpm RPMS/x86_64/pjproject-2.1-0.6.git217740d.fc20.x86_64.rpm pjproject.x86_64: E: no-binary pjproject.x86_64: E: incorrect-fsf-address /usr/share/doc/pjproject/COPYING 2 packages and 1 specfiles checked; 2 errors, 0 warnings. [mac@rhodey rpmbuild]$ SPEC: http://dbmacartney.fedorapeople.org/pjproject/pjproject.spec SRPM: http://dbmacartney.fedorapeople.org/pjproject/pjproject-2.1-0.6.git217740d.fc20.src.rpm Successful scratch build below. http://koji.fedoraproject.org/koji/taskinfo?taskID=6420303
Just some "drive-by" comments: - The --prefix= in the call below is redundant to %configure %configure --prefix=%{_prefix} \ It doesn't hurt, but it can be removed. - You are shipping static libs: %{_libdir}/*.a These are multiply problematic. 1. Shipping static libs is strongly discouraged in Fedora. Please read: https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries 2. Their naming is weird naming, which technically reduces their applicability. 3. Static libs MUST be shipped in a *-static subpackage and not in *-devel - %doc contains superflous documents: README-RTEMS is not of any relevance to Fedora users and INSTALL.txt is not of use to users of Fedora packages.
Just noticed another issue: The *.pc's contain the CFLAGS having been used during compilation of this package. .. -I${includedir} -I/usr/include -DPJ_AUTOCONF=1 -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong .. This is not useful. Somewhat oversimplified, in general, *.pc's should only contain paths (-I, -L) and libraries (-l). -W/-f flags do not belong into *.pcs.
pjproject released version 2.2 yesterday, which fixes up all the items that were addressed by the Asterisk fork. I've put together an update .spec file and SRPM at http://jsmith.fedorapeople.org/Packaging/pjproject/pjproject.spec http://jsmith.fedorapeople.org/Packaging/pjproject/pjproject-2.2-2.fc20.src.rpm The only outstanding item that I'm aware of is that we're still using the bundled copy of ilbc, instead of using the system library. I would appreciate some help from those more skilled at hacking build systems to help me write a patch to use the system iLBC library instead of the bundled version. Everything else in the "third_party" directory has been eliminated.
I've fixed a number items that rpmlint caught, and have updated a newer version of the spec file and SPRM: http://jsmith.fedorapeople.org/Packaging/pjproject/pjproject.spec http://jsmith.fedorapeople.org/Packaging/pjproject/pjproject-2.2-3.fc20.src.rpm The only two warnings from rpmlint refer to an issue in ilbc that I hope we can resolve by using the system ilbc library and not using the bundled version, and the fact that the -devel subpackage has no documentation. [jsmith@slapshot pjproject]$ rpmlint pjproject.spec /home/jsmith/rpmbuild/SRPMS/pjproject-2.2-3.fc20.src.rpm /home/jsmith/rpmbuild/RPMS/x86_64/pjproject-2.2-3.fc20.x86_64.rpm /home/jsmith/rpmbuild/RPMS/x86_64/pjproject-devel-2.2-3.fc20.x86_64.rpm pjproject.x86_64: W: shared-lib-calls-exit /usr/lib64/libilbccodec.so.2 exit.5 pjproject-devel.x86_64: W: no-documentation 3 packages and 1 specfiles checked; 0 errors, 2 warnings.
Since Asterisk doesn't use any of the pjmedia-codec support at all, I'm tempted to build this package without ilbc support in order to get this in and packaged sooner rather than later. That being said, I know there are probably other potential users of this library (sflphone, for example), that might want this built with ilbc support. Thoughts? Concerns?
(In reply to Jared Smith from comment #69) > Since Asterisk doesn't use any of the pjmedia-codec support at all, I'm > tempted to build this package without ilbc support in order to get this in > and packaged sooner rather than later. That being said, I know there are > probably other potential users of this library (sflphone, for example), that > might want this built with ilbc support. > > Thoughts? Concerns? This sounds reasonable for the initial package. Since this package doesn't exist yet, it's primarily the update to Asterisk 12 that will require it as a dep.
Asterisk 12 will fail to build if the pj/config_site.h file is not present :( /usr/include/pj/config.h:287:28: fatal error: pj/config_site.h: No such file or directory
(In reply to Anthony Messina from comment #71) > Asterisk 12 will fail to build if the pj/config_site.h file is not present :( > > /usr/include/pj/config.h:287:28: fatal error: pj/config_site.h: No such file > or directory Yuck -- I removed the file, because rpmlint was complaining about it being an empty file. I guess instead of deleting it, I'll change it to be non-empty. http://jsmith.fedorapeople.org/Packaging/pjproject/pjproject.spec http://jsmith.fedorapeople.org/Packaging/pjproject/pjproject-2.2-4.fc20.src.rpm Anthony, can you test these and see if they work better for you in packaging up Asterisk 12?
(In reply to Jared Smith from comment #72) > (In reply to Anthony Messina from comment #71) > > Asterisk 12 will fail to build if the pj/config_site.h file is not present :( > > > > /usr/include/pj/config.h:287:28: fatal error: pj/config_site.h: No such file > > or directory > > Yuck -- I removed the file, because rpmlint was complaining about it being > an empty file. I guess instead of deleting it, I'll change it to be > non-empty. > > http://jsmith.fedorapeople.org/Packaging/pjproject/pjproject.spec > http://jsmith.fedorapeople.org/Packaging/pjproject/pjproject-2.2-4.fc20.src. > rpm > > Anthony, can you test these and see if they work better for you in packaging > up Asterisk 12? For reference, I've merged in your changes to my own spec to build in a private Koji instance. I've also disabled building iLBC for now and updated the no_third_party patch accordingly. Note, I'm also still using alpha/post gittag notations in the version to separate my package from the future upstream (for now) and to ensure that future patches from Asterisk's devs can be easily included. The remainder of the spec file should be usable. Using the files located here https://messinet.com/rpms/browser/pjproject/?rev=521998e499bbc39b42daa6cf7125d5b200ed4a6b I'm able to build pjproject without rpmlint errors. I am also able to build Asterisk 12.1.0 against this updated prjproject. I was wondering if your patch for the FSF address was submitted upstream to pjproject? I ask because it appears like they updated the COPYING file in their source, but not the header files. Perhaps some of the Asterisk devs would help getting a --use-external-ilbc patch upstream since they were able to get everything else they did upstream ;)
(In reply to Anthony Messina from comment #73) > I was wondering if your patch for the FSF address was submitted upstream to > pjproject? I ask because it appears like they updated the COPYING file in > their source, but not the header files. I mailed the guys at pjsip a little while ago about the FSF errors and they have corrected the license upsteam. This was prior to 2.2 being released so I presume it should be resolved soon(ish) in a future release if it hasn't been corrected already.
Any updates on this package? This needs to be accepted into Fedora before I'll even consider updating the Asterisk package to v12. I'm not in a super hurry because it'll probably be August before I have time to look at the upgrade.
(In reply to Jeffrey C. Ollie from comment #75) > Any updates on this package? This needs to be accepted into Fedora before > I'll even consider updating the Asterisk package to v12. I'm not in a super > hurry because it'll probably be August before I have time to look at the > upgrade. Jeffery, as an aside, I have done a lot of work (based entirely on your Fedora spec for Asterisk) to upgrade to Asterisk 12, and have been using it for some time with great success. Perhaps it may be of use to you when you are able to upgrade: https://messinet.com/rpms/browser/asterisk/?rev=d3df130e6e1f9cfb85eb696269b7f2ada976c1de
OK, I've updated my package for the new 2.2.1 release. Upstream still hasn't fixed the FSF address, so we're still carrying around a 500k patch just to correct that. Nothing has changed with regards to the packaging. http://jsmith.fedorapeople.org/Packaging/pjproject/pjproject.spec http://jsmith.fedorapeople.org/Packaging/pjproject/pjproject-2.2.1-1.fc21.src.rpm
Created attachment 925597 [details] licensecheck I'll take over the review if no-one minds. - Group unnecessary - lconfig on devel unnecessary - could use %make_install - run make selftest in %check? - the undefined-non-weak-symbol should be easily fixable - what is the status of ilbc resp what is preventing its unbundling? - review licences - fully versioned dependency on -devel Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed ===== MUST items ===== C/C++: [x]: Package does not contain kernel modules. [x]: Package contains no static executables. [x]: Header files in -devel subpackage, if present. [x]: ldconfig called in %post and %postun if required. [x]: Package does not contain any libtool archives (.la) [x]: Rpath absent or only used for internal libs. [x]: Development (unversioned) .so files in -devel subpackage, if present. Generic: [x]: Package is licensed with an open-source compatible license and meets other legal requirements as defined in the legal section of Packaging Guidelines. [!]: License field in the package spec file matches the actual license. Note: Checking patched sources after %prep for licenses. Licenses found: "LGPL (v2 or later)", "GPL (v2 or later)", "Unknown or generated", "*No copyright* Public domain". 320 files have unknown license. Detailed output of licensecheck attached. => Two files are LGPL (v2 or later), these actually are a bundled and slightly modified getopt pjproject-2.2.1/pjlib-util/include/pjlib-util/getopt.h pjproject-2.2.1/pjlib-util/src/pjlib-util/getopt.c [x]: License file installed when any subpackage combination is installed. [x]: %build honors applicable compiler flags or justifies otherwise. [!]: Package contains no bundled libraries without FPC exception. [x]: Changelog in prescribed format. [x]: Sources contain only permissible code or content. [-]: Package contains desktop file if it is a GUI application. [x]: Development files must be in a -devel package [x]: Package uses nothing in %doc for runtime. [x]: Package consistently uses macros (instead of hard-coded directory names). [x]: Package is named according to the Package Naming Guidelines. [x]: Package does not generate any conflict. [x]: Package obeys FHS, except libexecdir and /usr/target. [-]: If the package is a rename of another package, proper Obsoletes and Provides are present. [x]: Requires correct, justified where necessary. [x]: Spec file is legible and written in American English. [-]: Package contains systemd file(s) if in need. [x]: Useful -debuginfo package or justification otherwise. [x]: Package is not known to require an ExcludeArch tag. [-]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 61440 bytes in 4 files. [x]: Package complies to the Packaging Guidelines [x]: Package successfully compiles and builds into binary rpms on at least one supported primary architecture. [x]: Package installs properly. [x]: Rpmlint is run on all rpms the build produces. Note: There are rpmlint messages (see attachment). [x]: 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 is included in %doc. [x]: Package requires other packages for directories it uses. [x]: Package must own all directories that it creates. [x]: Package does not own files or directories owned by other packages. [x]: All build dependencies are listed in BuildRequires, except for any that are listed in the exceptions section of Packaging Guidelines. [x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT [x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the beginning of %install. [x]: Macros in Summary, %description expandable at SRPM build time. [x]: Package does not contain duplicates in %files. [x]: Permissions on files are set properly. [x]: Package use %makeinstall only when make install' ' DESTDIR=... doesn't work. [x]: Package is named using only allowed ASCII characters. [x]: Package do not use a name that already exist [x]: Package is not relocatable. [x]: Sources used to build the package match the upstream source, as provided in the spec URL. [x]: Spec file name must match the spec package %{name}, in the format %{name}.spec. [x]: File names are valid UTF-8. [x]: Packages must not store files under /srv, /opt or /usr/local ===== SHOULD items ===== Generic: [-]: If the source package does not include license text(s) as a separate file from upstream, the packager SHOULD query upstream to include it. [x]: Final provides and requires are sane (see attachments). [!]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in pjproject- devel [?]: Package functions as described. [x]: Latest version is packaged. [x]: Package does not include license text files separate from upstream. [x]: Patches link to upstream bugs/comments/lists or are otherwise justified. [x]: Scriptlets must be sane, if used. [-]: Description and summary sections in the package spec file contains translations for supported Non-English languages, if available. [?]: Package should compile and build into binary rpms on all supported architectures. [!]: %check is present and all tests pass. [x]: Packages should try to preserve timestamps of original installed files. [x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file [x]: Sources can be downloaded from URI in Source: tag [x]: Reviewer should test that the package builds in mock. [x]: Buildroot is not present [x]: Package has no %clean section with rm -rf %{buildroot} (or $RPM_BUILD_ROOT) [x]: Dist tag is present (not strictly required in GL). [x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin. [x]: Uses parallel make %{?_smp_mflags} macro. [x]: The placement of pkgconfig(.pc) files are correct. [x]: SourceX is a working URL. [x]: Spec use %global instead of %define unless justified. ===== EXTRA items ===== Generic: [x]: Rpmlint is run on all installed packages. Note: There are rpmlint messages (see attachment). [x]: Large data in /usr/share should live in a noarch subpackage if package is arched. [x]: Spec file according to URL is the same as in SRPM. Rpmlint ------- Checking: pjproject-2.2.1-1.fc22.x86_64.rpm pjproject-devel-2.2.1-1.fc22.x86_64.rpm pjproject-2.2.1-1.fc22.src.rpm pjproject.x86_64: W: shared-lib-calls-exit /usr/lib64/libilbccodec.so.2 exit.5 pjproject-devel.x86_64: W: only-non-binary-in-usr-lib pjproject-devel.x86_64: W: no-documentation 3 packages and 0 specfiles checked; 0 errors, 3 warnings. Rpmlint (installed packages) ---------------------------- # rpmlint pjproject-devel pjproject pjproject-devel.x86_64: W: only-non-binary-in-usr-lib pjproject-devel.x86_64: W: no-documentation pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-videodev.so.2 /lib64/libpj.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-videodev.so.2 /lib64/libilbccodec.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-videodev.so.2 /lib64/libsrtp.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-videodev.so.2 /lib64/libgsm.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-videodev.so.2 /lib64/libspeex.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-videodev.so.2 /lib64/libspeexdsp.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-videodev.so.2 /lib64/libuuid.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-videodev.so.2 /lib64/libm.so.6 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-videodev.so.2 /lib64/librt.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-videodev.so.2 /lib64/libpthread.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-videodev.so.2 /lib64/libcrypto.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-videodev.so.2 /lib64/libssl.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-codec.so.2 /lib64/libsrtp.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-codec.so.2 /lib64/libspeexdsp.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-codec.so.2 /lib64/libuuid.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-codec.so.2 /lib64/libm.so.6 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-codec.so.2 /lib64/librt.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-codec.so.2 /lib64/libpthread.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-codec.so.2 /lib64/libcrypto.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-codec.so.2 /lib64/libssl.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-simple.so.2 /lib64/libilbccodec.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-simple.so.2 /lib64/libsrtp.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-simple.so.2 /lib64/libgsm.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-simple.so.2 /lib64/libspeex.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-simple.so.2 /lib64/libspeexdsp.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-simple.so.2 /lib64/libuuid.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-simple.so.2 /lib64/libm.so.6 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-simple.so.2 /lib64/librt.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-simple.so.2 /lib64/libpthread.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-simple.so.2 /lib64/libcrypto.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-simple.so.2 /lib64/libssl.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-audiodev.so.2 /lib64/libilbccodec.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-audiodev.so.2 /lib64/libsrtp.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-audiodev.so.2 /lib64/libgsm.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-audiodev.so.2 /lib64/libspeex.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-audiodev.so.2 /lib64/libspeexdsp.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-audiodev.so.2 /lib64/libuuid.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-audiodev.so.2 /lib64/libm.so.6 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-audiodev.so.2 /lib64/librt.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-audiodev.so.2 /lib64/libpthread.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-audiodev.so.2 /lib64/libcrypto.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia-audiodev.so.2 /lib64/libssl.so.10 pjproject.x86_64: W: undefined-non-weak-symbol /usr/lib64/libilbccodec.so.2 sqrtf pjproject.x86_64: W: undefined-non-weak-symbol /usr/lib64/libilbccodec.so.2 cos pjproject.x86_64: W: undefined-non-weak-symbol /usr/lib64/libilbccodec.so.2 pow pjproject.x86_64: W: undefined-non-weak-symbol /usr/lib64/libilbccodec.so.2 log10 pjproject.x86_64: W: undefined-non-weak-symbol /usr/lib64/libilbccodec.so.2 sqrt pjproject.x86_64: W: shared-lib-calls-exit /usr/lib64/libilbccodec.so.2 exit.5 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/libpjsip-ua.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/libpjmedia-videodev.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/libpjmedia-codec.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/libpjnath.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/libilbccodec.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/libsrtp.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/libgsm.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/libspeex.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/libspeexdsp.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/libuuid.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/libm.so.6 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/librt.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/libcrypto.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua2.so.2 /lib64/libssl.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip.so.2 /lib64/libilbccodec.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip.so.2 /lib64/libsrtp.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip.so.2 /lib64/libgsm.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip.so.2 /lib64/libspeex.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip.so.2 /lib64/libspeexdsp.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip.so.2 /lib64/libuuid.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip.so.2 /lib64/libm.so.6 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip.so.2 /lib64/librt.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip.so.2 /lib64/libpthread.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip.so.2 /lib64/libcrypto.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip.so.2 /lib64/libssl.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-ua.so.2 /lib64/libilbccodec.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-ua.so.2 /lib64/libsrtp.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-ua.so.2 /lib64/libgsm.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-ua.so.2 /lib64/libspeex.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-ua.so.2 /lib64/libspeexdsp.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-ua.so.2 /lib64/libuuid.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-ua.so.2 /lib64/libm.so.6 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-ua.so.2 /lib64/librt.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-ua.so.2 /lib64/libpthread.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-ua.so.2 /lib64/libcrypto.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsip-ua.so.2 /lib64/libssl.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia.so.2 /lib64/libpjmedia-videodev.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia.so.2 /lib64/libilbccodec.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia.so.2 /lib64/libgsm.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia.so.2 /lib64/libspeex.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia.so.2 /lib64/libuuid.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia.so.2 /lib64/librt.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia.so.2 /lib64/libpthread.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia.so.2 /lib64/libcrypto.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjmedia.so.2 /lib64/libssl.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjlib-util.so.2 /lib64/libuuid.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjlib-util.so.2 /lib64/libm.so.6 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjlib-util.so.2 /lib64/librt.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjlib-util.so.2 /lib64/libpthread.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjlib-util.so.2 /lib64/libcrypto.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjlib-util.so.2 /lib64/libssl.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua.so.2 /lib64/libpjmedia-videodev.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua.so.2 /lib64/libilbccodec.so.2 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua.so.2 /lib64/libsrtp.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua.so.2 /lib64/libgsm.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua.so.2 /lib64/libspeex.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua.so.2 /lib64/libspeexdsp.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua.so.2 /lib64/libuuid.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua.so.2 /lib64/libm.so.6 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua.so.2 /lib64/librt.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua.so.2 /lib64/libpthread.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua.so.2 /lib64/libcrypto.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjsua.so.2 /lib64/libssl.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjnath.so.2 /lib64/libuuid.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjnath.so.2 /lib64/libm.so.6 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjnath.so.2 /lib64/librt.so.1 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjnath.so.2 /lib64/libpthread.so.0 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjnath.so.2 /lib64/libcrypto.so.10 pjproject.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libpjnath.so.2 /lib64/libssl.so.10 2 packages and 0 specfiles checked; 0 errors, 119 warnings. # echo 'rpmlint-done:' Requires -------- pjproject-devel (rpmlib, GLIBC filtered): /sbin/ldconfig /usr/bin/pkg-config libilbccodec.so.2()(64bit) libpj.so.2()(64bit) libpjlib-util.so.2()(64bit) libpjmedia-audiodev.so.2()(64bit) libpjmedia-codec.so.2()(64bit) libpjmedia-videodev.so.2()(64bit) libpjmedia.so.2()(64bit) libpjnath.so.2()(64bit) libpjsip-simple.so.2()(64bit) libpjsip-ua.so.2()(64bit) libpjsip.so.2()(64bit) libpjsua.so.2()(64bit) libpjsua2.so.2()(64bit) pjproject pjproject (rpmlib, GLIBC filtered): /sbin/ldconfig libc.so.6()(64bit) libcrypto.so.10()(64bit) libcrypto.so.10(libcrypto.so.10)(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgsm.so.1()(64bit) libilbccodec.so.2()(64bit) libm.so.6()(64bit) libpj.so.2()(64bit) libpjlib-util.so.2()(64bit) libpjmedia-audiodev.so.2()(64bit) libpjmedia-codec.so.2()(64bit) libpjmedia-videodev.so.2()(64bit) libpjmedia.so.2()(64bit) libpjnath.so.2()(64bit) libpjsip-simple.so.2()(64bit) libpjsip-ua.so.2()(64bit) libpjsip.so.2()(64bit) libpjsua.so.2()(64bit) libpthread.so.0()(64bit) librt.so.1()(64bit) libspeex.so.1()(64bit) libspeexdsp.so.1()(64bit) libsrtp.so.0()(64bit) libssl.so.10()(64bit) libssl.so.10(libssl.so.10)(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libuuid.so.1()(64bit) libuuid.so.1(UUID_1.0)(64bit) rtld(GNU_HASH) Provides -------- pjproject-devel: pjproject-devel pjproject-devel(x86-64) pkgconfig(libpjproject) pjproject: libilbccodec.so.2()(64bit) libpj.so.2()(64bit) libpjlib-util.so.2()(64bit) libpjmedia-audiodev.so.2()(64bit) libpjmedia-codec.so.2()(64bit) libpjmedia-videodev.so.2()(64bit) libpjmedia.so.2()(64bit) libpjnath.so.2()(64bit) libpjsip-simple.so.2()(64bit) libpjsip-ua.so.2()(64bit) libpjsip.so.2()(64bit) libpjsua.so.2()(64bit) libpjsua2.so.2()(64bit) pjproject pjproject(x86-64) Source checksums ---------------- http://www.pjsip.org/release/2.2.1/pjproject-2.2.1.tar.bz2 : CHECKSUM(SHA256) this package : da1933336b38b65ff2254bed05ea1076531b16915777a252ea999cf7f3284cb3 CHECKSUM(SHA256) upstream package : da1933336b38b65ff2254bed05ea1076531b16915777a252ea999cf7f3284cb3 Generated by fedora-review 0.5.2 (63c24cb) last change: 2014-07-14 Command line :/usr/bin/fedora-review -b 728302 Buildroot used: fedora-rawhide-x86_64 Active plugins: Generic, Shell-api, C/C++ Disabled plugins: Java, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP, Ruby Disabled flags: EXARCH, EPEL5, BATCH, DISTTAG
Reading through the above I see that unbundling the ilbc is simply a matter of hacking the build scripts. This seems to be feasible, I'll try to post a patch by tomorrow.
Notes: I've seen ilbc in many opensource projects, chromium, freeswitch. As ilbc is part of webrtc now, I still can download it from the original homepage: http://www.soft-switch.org/downloads/voipcodecs/ Should I use the ilbc from googlecode or just keep going from the old place? Thanks.
FYI, ilbc is already packaged for Fedora: https://apps.fedoraproject.org/packages/ilbc
(In reply to Tristan Matthews from comment #81) > FYI, ilbc is already packaged for Fedora: > https://apps.fedoraproject.org/packages/ilbc Thanks. Then I think ilbc in Fedora needs an update maybe.
Ok here we go: Patch: https://smani.fedorapeople.org/review/pjproject_no_third_party.patch SPEC: https://smani.fedorapeople.org/review/pjproject.spec SRPM: https://smani.fedorapeople.org/review/pjproject-2.2.1-2.fc22.src.rpm Made a few trivial changes to the SPEC while on the way: %changelog * Mon Aug 11 2014 Sandro Mani <manisandro> - 2.2.1-2 - Build against external ilbc - Remove ldconfig for -devel - Run make selftest in %%check - Use %%make_install Note that selftest fails (and hence the || exit 0), with the following error: DEBUG: 23:13:32.327 draft-denis-behave-rfc3489bis-test-vectors-02 DEBUG: 23:13:32.327 Running test 0/1 DEBUG: 23:13:32.327 Request authentication failed: Unauthorized DEBUG: 23:13:32.327 ..ERROR(-1070) DEBUG: Makefile:97: recipe for target 'pjnath-test' failed Haven't investigated though.
I'm a bit confused. The last comment of the reporter is from 2013-02-16 and since then there have been plenty SPEC/SRPM postings from different people. Who is now the review requestee and who is the reviewer?
My view is that Jared Smith has taken over the packaging effort, and requested help for unbundling ilbc in comment 67. And I would be the reviewer.
(In reply to Sandro Mani from comment #85) > My view is that Jared Smith has taken over the packaging effort, and > requested help for unbundling ilbc in comment 67. And I would be the > reviewer. He should then open a own review request and close this one as a duplicate, if Mario doesn't respond in proper time or has given up interest in this review request.
I haven't seen any other response from Mario, so I'm opening a new review request (BZ#1140324), and closing this one as a duplicate. FWIW, I have successfully updated the packaging to the recent 2.3 release, and removed the bundled ilbc codec support. *** This bug has been marked as a duplicate of bug 1140324 ***