From 90d194bc8a80a478c91f5196da9eac770a755ca2 Mon Sep 17 00:00:00 2001 From: Jaco Kroon Date: Mon, 18 Nov 2019 11:45:56 +0200 Subject: net-libs/pjproject: Bump to 2.9. Drop libressl patches (upstream). Rebase configure for --enable-ssl. Pull in asterisk config_site.h file. Remove blocked on mediastreamer-bcg729 (bcg729 and mediastreamer-bcg729 are the actual blockers and marked as such already). Use ${ED} instead of ${D} on install Correctly rm static libs if USE=-static-libs Set the PJMEDIA_HAS_VIDEO #define as per https://bugs.gentoo.org/652196 Update package.use.mask for ppc to mask g729 for pjproject since net-libs/bcg729 isn't available (yet) on ppc. Closes: https://bugs.gentoo.org/609702 Closes: https://bugs.gentoo.org/618352 Closes: https://bugs.gentoo.org/652196 Closes: https://bugs.gentoo.org/650312 Closes: https://bugs.gentoo.org/653482 Closes: https://bugs.gentoo.org/657014 Closes: https://bugs.gentoo.org/686796 Package-Manager: Portage-2.3.76, Repoman-2.3.16 Signed-off-by: Jaco Kroon Closes: https://github.com/gentoo/gentoo/pull/13712 Signed-off-by: Joonas Niilola --- net-libs/pjproject/Manifest | 1 + .../pjproject/files/pjproject-2.9-config_site.h | 74 +++++++++++++ .../pjproject/files/pjproject-2.9-ssl-enable.patch | 100 +++++++++++++++++ net-libs/pjproject/metadata.xml | 3 +- net-libs/pjproject/pjproject-2.9.ebuild | 120 +++++++++++++++++++++ 5 files changed, 297 insertions(+), 1 deletion(-) create mode 100644 net-libs/pjproject/files/pjproject-2.9-config_site.h create mode 100644 net-libs/pjproject/files/pjproject-2.9-ssl-enable.patch create mode 100644 net-libs/pjproject/pjproject-2.9.ebuild (limited to 'net-libs/pjproject') diff --git a/net-libs/pjproject/Manifest b/net-libs/pjproject/Manifest index 12e01535ff43..3131fb359e1f 100644 --- a/net-libs/pjproject/Manifest +++ b/net-libs/pjproject/Manifest @@ -1,2 +1,3 @@ DIST pjproject-2.7.1.tar.bz2 4880007 BLAKE2B 33fca89f07abc0b9662b1070c96b903c236a60149734755286dad3111411dbeef5779077a77d21112be6db2957cb7e18c5c833b3c5fd32c26be44d4550fb215e SHA512 cd15afee2a02659668ff228b2652d2bd179393e3b5031afae1c326354fb9676babc08eb689e466165536abc360684299b4fdb41dbb1148aed89afe1ce7e5d979 DIST pjproject-2.7.2.tar.bz2 4994233 BLAKE2B 44ecaf0997d5dd9b18e0b811cead7c9104e63894fa06fb1d64e79b60fa4210968fd90ef47e5f5be3629675363c8756ce3bc1834caa9700654ab4c53efe676ee7 SHA512 3d355ffcbbeed62cfc711e574a987dc06043ccf4f2625820adffa89167022b8306fcee3fada71d3d45e7b902fc9c65ac8221de101cbafed25362a3921f702afd +DIST pjproject-2.9.tar.bz2 5009546 BLAKE2B 853f86e57c0f58943e977856bebc7dc20684ac4a6a16a55f3fe4ddf58ca58187bdc1011c5df2bc72de690f1695484012b582e56dd0e88a624ef319a5f3623772 SHA512 a65823a86ad0cd76890cf7dd2485f7547fd90aea2ef631c5420c009b35f39eda3b78551a42fc2816c2470de9eb728c26497774a8494824472ecaa1d2889cc20b diff --git a/net-libs/pjproject/files/pjproject-2.9-config_site.h b/net-libs/pjproject/files/pjproject-2.9-config_site.h new file mode 100644 index 000000000000..d41ac1d1947b --- /dev/null +++ b/net-libs/pjproject/files/pjproject-2.9-config_site.h @@ -0,0 +1,74 @@ +/* + * Based off of the Asterisk config_site.h file. + * + * In general it's the same with some removals due to being ebuild-managed. + */ + +#include + +/* handled by ebuild, default to disabled here */ +#ifndef PJMEDIA_HAS_SRTP +#define PJMEDIA_HAS_SRTP 0 +#endif + +#define PJ_MAX_HOSTNAME (256) +#define PJSIP_MAX_URL_SIZE (512) +#ifdef PJ_HAS_LINUX_EPOLL +#define PJ_IOQUEUE_MAX_HANDLES (5000) +#else +#define PJ_IOQUEUE_MAX_HANDLES (FD_SETSIZE) +#endif +#define PJ_IOQUEUE_HAS_SAFE_UNREG 1 +#define PJ_IOQUEUE_MAX_EVENTS_IN_SINGLE_POLL (16) + +#define PJ_SCANNER_USE_BITWISE 0 +#define PJ_OS_HAS_CHECK_STACK 0 + +#ifndef PJ_LOG_MAX_LEVEL +#define PJ_LOG_MAX_LEVEL 6 +#endif + +#define PJ_ENABLE_EXTRA_CHECK 1 +#define PJSIP_MAX_TSX_COUNT ((64*1024)-1) +#define PJSIP_MAX_DIALOG_COUNT ((64*1024)-1) +#define PJSIP_UDP_SO_SNDBUF_SIZE (512*1024) +#define PJSIP_UDP_SO_RCVBUF_SIZE (512*1024) +#define PJSIP_SAFE_MODULE 0 +#define PJ_HAS_STRICMP_ALNUM 0 + +/* + * Do not ever enable PJ_HASH_USE_OWN_TOLOWER because the algorithm is + * inconsistently used when calculating the hash value and doesn't + * convert the same characters as pj_tolower()/tolower(). Thus you + * can get different hash values if the string hashed has certain + * characters in it. (ASCII '@', '[', '\\', ']', '^', and '_') + */ +#undef PJ_HASH_USE_OWN_TOLOWER + +/* + It is imperative that PJSIP_UNESCAPE_IN_PLACE remain 0 or undefined. + Enabling it will result in SEGFAULTS when URIs containing escape sequences are encountered. +*/ +#undef PJSIP_UNESCAPE_IN_PLACE +#define PJSIP_MAX_PKT_LEN 32000 + +#undef PJ_TODO +#define PJ_TODO(x) + +/* Defaults too low for WebRTC */ +#define PJ_ICE_MAX_CAND 32 +#define PJ_ICE_MAX_CHECKS (PJ_ICE_MAX_CAND * PJ_ICE_MAX_CAND) + +/* Increase limits to allow more formats */ +#define PJMEDIA_MAX_SDP_FMT 64 +#define PJMEDIA_MAX_SDP_BANDW 4 +#define PJMEDIA_MAX_SDP_ATTR (PJMEDIA_MAX_SDP_FMT*2 + 4) +#define PJMEDIA_MAX_SDP_MEDIA 16 + +/* + * Turn off the periodic sending of CRLNCRLN. Default is on (90 seconds), + * which conflicts with the global section's keep_alive_interval option in + * pjsip.conf. + */ +#define PJSIP_TCP_KEEP_ALIVE_INTERVAL 0 +#define PJSIP_TLS_KEEP_ALIVE_INTERVAL 0 diff --git a/net-libs/pjproject/files/pjproject-2.9-ssl-enable.patch b/net-libs/pjproject/files/pjproject-2.9-ssl-enable.patch new file mode 100644 index 000000000000..bb8a11d7f457 --- /dev/null +++ b/net-libs/pjproject/files/pjproject-2.9-ssl-enable.patch @@ -0,0 +1,100 @@ +From 2942c73cd3b3389ec1a35258f22ac9d0f0742de1 Mon Sep 17 00:00:00 2001 +From: Jaco Kroon +Date: Thu, 24 May 2018 15:40:33 +0200 +Subject: [PATCH] Fix support for --enable-ssl. + +This change enables the explicit use of --enable-ssl in such a way that +package managers such as portage (Gentoo) that explicitly does +--enable-ssl or --disable-ssl will get the results that it's looking +for. + +Without this specifying --enable-ssl would end up actually disabling it. + +Additionally, if --enable-ssl is specified but the script ends up being +unable to enable ssl it will fail. +--- + aconfigure | 16 ++++++++++++---- + aconfigure.ac | 15 ++++++++++++--- + 2 files changed, 24 insertions(+), 7 deletions(-) + +diff --git a/aconfigure b/aconfigure +index 0cf17faae..57bdfba87 100755 +--- a/aconfigure ++++ b/aconfigure +@@ -8001,8 +8001,9 @@ if test "${enable_ssl+set}" = set; then : + $as_echo "Checking if SSL support is disabled... yes" >&6; } + fi + +-else ++fi + ++if test "x$ac_no_ssl" != "x1"; then + if test "x$with_ssl" != "xno" -a "x$with_ssl" != "x"; then + CFLAGS="$CFLAGS -I$with_ssl/include" + CPPFLAGS="$CPPFLAGS -I$with_ssl/include" +@@ -8317,16 +8318,23 @@ $as_echo "GnuTLS library found, SSL support enabled" >&6; } + + ac_ssl_backend="gnutls" + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** No GnuTLS libraries found, disabling SSL support **" >&5 +-$as_echo "** No GnuTLS libraries found, disabling SSL support **" >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ** No GnuTLS libraries found **" >&5 ++$as_echo "** No GnuTLS libraries found **" >&6; } + fi + + fi + ++ if test "x$ac_ssl_backend" = "x"; then ++ if test "x$enable_ssl" = "xyes"; then ++ as_fn_error $? "SSL Support requested but neither OpenSSL nor GnuTLS operational" "$LINENO" 5 ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: No SSL detected, disabling SSL support" >&5 ++$as_echo "No SSL detected, disabling SSL support" >&6; } ++ fi ++ fi + fi + + +- + # Check whether --with-opencore-amrnb was given. + if test "${with_opencore_amrnb+set}" = set; then : + withval=$with_opencore_amrnb; as_fn_error $? "This option is obsolete and replaced by --with-opencore-amr=DIR" "$LINENO" 5 +diff --git a/aconfigure.ac b/aconfigure.ac +index 8d7d944a1..45c42756b 100644 +--- a/aconfigure.ac ++++ b/aconfigure.ac +@@ -1607,7 +1607,8 @@ AC_ARG_ENABLE(ssl, + AC_MSG_RESULT([Checking if SSL support is disabled... yes]) + fi + ], +- [ ++ []) ++if test "x$ac_no_ssl" != "x1"; then + if test "x$with_ssl" != "xno" -a "x$with_ssl" != "x"; then + CFLAGS="$CFLAGS -I$with_ssl/include" + CPPFLAGS="$CPPFLAGS -I$with_ssl/include" +@@ -1692,11 +1693,19 @@ AC_ARG_ENABLE(ssl, + AC_DEFINE(PJ_SSL_SOCK_IMP, PJ_SSL_SOCK_IMP_GNUTLS) + ac_ssl_backend="gnutls" + else +- AC_MSG_RESULT([** No GnuTLS libraries found, disabling SSL support **]) ++ AC_MSG_RESULT([** No GnuTLS libraries found **]) + fi + + fi +- ]) ++ ++ if test "x$ac_ssl_backend" = "x"; then ++ if test "x$enable_ssl" = "xyes"; then ++ AC_MSG_ERROR([SSL Support requested but neither OpenSSL nor GnuTLS operational]) ++ else ++ AC_MSG_RESULT([No SSL detected, disabling SSL support]) ++ fi ++ fi ++fi + + dnl # Obsolete option --with-opencore-amrnb + AC_ARG_WITH(opencore-amrnb, +-- +2.23.0 + diff --git a/net-libs/pjproject/metadata.xml b/net-libs/pjproject/metadata.xml index d5f49d1aa55f..6d51c770dce3 100644 --- a/net-libs/pjproject/metadata.xml +++ b/net-libs/pjproject/metadata.xml @@ -11,17 +11,18 @@ Inlcude AMR codec in the build - Include Video4Linux v2 support in the build Use /dev/epoll ioqueue on Linux (experimental) Include G.711 codecs in the build Include G.722 codec in the build Include G.722.1 codec in the build + Include G.729 codec via net-libs/bcg729 Include iLBC codec in the build Include Linear/L16 codec family in the build Include libyuv in the build Include Open H.264 support in the build Include resampling implementations in the build Include SILK support in the build + Include Video4Linux v2 support in the build Enable WebRTC support diff --git a/net-libs/pjproject/pjproject-2.9.ebuild b/net-libs/pjproject/pjproject-2.9.ebuild new file mode 100644 index 000000000000..5a4d582b1e2e --- /dev/null +++ b/net-libs/pjproject/pjproject-2.9.ebuild @@ -0,0 +1,120 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit autotools flag-o-matic + +DESCRIPTION="Open source SIP, Media, and NAT Traversal Library" +HOMEPAGE="https://www.pjsip.org/" +SRC_URI="https://www.pjsip.org/release/${PV}/${P}.tar.bz2" +KEYWORDS="~amd64 ~ppc ~x86" + +LICENSE="GPL-2" +SLOT="0" + +# g729 not included due to special bcg729 handling. +CODEC_FLAGS="g711 g722 g7221 gsm ilbc speex l16" +VIDEO_FLAGS="sdl ffmpeg v4l2 openh264 libyuv" +SOUND_FLAGS="alsa portaudio" +IUSE="amr debug epoll examples ipv6 libressl opus resample silk ssl static-libs webrtc + ${CODEC_FLAGS} g729 + ${VIDEO_FLAGS} + ${SOUND_FLAGS}" + +PATCHES=( + "${FILESDIR}/pjproject-2.9-ssl-enable.patch" +) + +RDEPEND="net-libs/libsrtp:= + + alsa? ( media-libs/alsa-lib ) + amr? ( media-libs/opencore-amr ) + ffmpeg? ( virtual/ffmpeg:= ) + g729? ( media-libs/bcg729 ) + gsm? ( media-sound/gsm ) + ilbc? ( dev-libs/ilbc-rfc3951 ) + openh264? ( media-libs/openh264 ) + opus? ( media-libs/opus ) + portaudio? ( media-libs/portaudio ) + resample? ( media-libs/libsamplerate ) + sdl? ( media-libs/libsdl ) + speex? ( media-libs/speexdsp ) + ssl? ( + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= ) + ) +" +DEPEND="${RDEPEND}" +BDEPEND="virtual/pkgconfig" + +src_prepare() { + default + rm configure || die "Unable to remove unwanted wrapper" + mv aconfigure.ac configure.ac || die "Unable to rename configure script source" + eautoreconf + + cp "${FILESDIR}/pjproject-2.9-config_site.h" "${S}/pjlib/include/pj/config_site.h" || die "Unable to create config_site.h" +} + +src_configure() { + local myconf=() + local videnable="--disable-video" + local t + + use debug || append-cflags -DNDEBUG=1 + use ipv6 && append-cflags -DPJ_HAS_IPV6=1 + append-cflags -DPJMEDIA_HAS_SRTP=1 + + for t in ${CODEC_FLAGS}; do + myconf+=( $(use_enable ${t} ${t}-codec) ) + done + myconf+=( $(use_enable g729 bcg729) ) + + for t in ${VIDEO_FLAGS}; do + myconf+=( $(use_enable ${t}) ) + use "${t}" && videnable="--enable-video" + done + + [ "${videnable}" = "--enable-video" ] && append-cflags -DPJMEDIA_HAS_VIDEO=1 + + econf \ + --enable-shared \ + --with-external-srtp \ + ${videnable} \ + $(use_enable alsa sound) \ + $(use_enable amr opencore-amr) \ + $(use_enable epoll) \ + $(use_enable opus) \ + $(use_enable portaudio ext-sound) \ + $(use_enable resample libsamplerate) \ + $(use_enable resample resample-dll) \ + $(use_enable resample) \ + $(use_enable silk) \ + $(use_enable speex speex-aec) \ + $(use_enable ssl) \ + $(use_with gsm external-gsm) \ + $(use_with portaudio external-pa) \ + $(use_with speex external-speex) \ + $(usex webrtc '' --disable-libwebrtc) \ + "${myconf[@]}" +} + +src_compile() { + emake dep + emake +} + +src_install() { + default + + newbin pjsip-apps/bin/pjsua-${CHOST} pjsua + newbin pjsip-apps/bin/pjsystest-${CHOST} pjsystest + + if use examples; then + insinto "/usr/share/doc/${PF}/examples" + doins -r pjsip-apps/src/samples + fi + + use static-libs || rm "${ED}/usr/$(get_libdir)"/*.a || die "Error removing static archives" +} -- cgit v1.2.3-65-gdbad