pjsip / pjproject

PJSIP project
http://www.pjsip.org
GNU General Public License v2.0
2.07k stars 782 forks source link

ABI stability #3420

Closed bastien-roucaries closed 1 year ago

bastien-roucaries commented 1 year ago

Describe the bug

following https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=969323: pjsip was removed from debian.

maintainer said lot of functionality and behaviour is selected at compile time using #define statements. Most of these define statements alter the ABI due to changing structs, which makes it ill-suited as a system wide library to be used by several programs.

Steps to reproduce

None

PJSIP version

Last

Context

None

Log, call stack, etc

None
bastien-roucaries commented 1 year ago

Could you have a plan to be ABI stable. https://lvc.github.io/abi-compliance-checker/ will help here

oliverepper commented 1 year ago

I don't think that would be sensible for pjproject. It covers a lot of ground on a lot of platforms and thus it is highly advisable to taylor your build. If you are building a softphone, or a specialized SIP server component you might want to provide your own library on top of what pjproject has to offer. That way you can provide ABI stability.

As for a debian package I don't think it's worth having a binary package. It would rarely fit any concrete needs.

bastien-roucaries commented 1 year ago

I don't think that would be sensible for pjproject. It covers a lot of ground on a lot of platforms and thus it is highly advisable to taylor your build. If you are building a softphone, or a specialized SIP server component you might want to provide your own library on top of what pjproject has to offer. That way you can provide ABI stability.

The problem is security support, with X embed copy in the archive it is a pain. We will welcome ABI stability at least for a max features version.

As for a debian package I don't think it's worth having a binary package. It would rarely fit any concrete needs.

sauwming commented 1 year ago

I tried it and it doesn't seem to work on my Mac machine.

WARNING: doesn't work with clang, please install GCC instead (and select it by -gcc-path option)
Using GCC 14.0.3 (arm64-apple-darwin22.2.0, target: arm)
WARNING: May not work properly with GCC 4.8.[0-2], 6.* and higher due to bug #78040 in GCC. Please try other GCC versions

It cannot work with clang, it doesn't work properly with GCC 4.8 and >= 6, while other versions of GCC have been deprecated (such as gcc@5 has been disabled because it is deprecated upstream), so it's basically useless?

sauwming commented 1 year ago

There is no one-size-fits-all. The customization via #define shouldn't be a supporting point that the library is ill-suited for usage by several programs. I believe the vanilla build of PJSIP should be sufficient for majority of apps wishing for standard SIP and/or audio call functionality, with the keyword here being standard. Since if an application requires extensive customization, embedding their own tailored copy will naturally become necessary.

As for security fixes, it will now always be in: https://github.com/pjsip/pjproject/security/advisories and we will make sure not to mix it up or combine it with other unrelated commits. Thanks for the feedbacks.