diff options
author | Lars Wendler <polynomial-c@gentoo.org> | 2014-04-29 09:02:06 +0000 |
---|---|---|
committer | Lars Wendler <polynomial-c@gentoo.org> | 2014-04-29 09:02:06 +0000 |
commit | 41e62b2a8a86e5b09792c96a66da4215197290bc (patch) | |
tree | e05e1907b8eb4bbaf08529f56b5d975f272c1ae6 | |
parent | Stable for amd64 wrt bug #506700 (diff) | |
download | gentoo-2-41e62b2a8a86e5b09792c96a66da4215197290bc.tar.gz gentoo-2-41e62b2a8a86e5b09792c96a66da4215197290bc.tar.bz2 gentoo-2-41e62b2a8a86e5b09792c96a66da4215197290bc.zip |
Version bump. Fixed compilation with >=media-video/ffmpeg-2 and >=media-video/libav-9 (bug #443206)
(Portage version: 2.2.10/cvs/Linux x86_64, signed Manifest commit with key 0x981CA6FC)
-rw-r--r-- | net-libs/opal/ChangeLog | 9 | ||||
-rw-r--r-- | net-libs/opal/files/opal-3.10.11-libav9-gentoo.patch | 262 | ||||
-rw-r--r-- | net-libs/opal/opal-3.10.11.ebuild | 253 |
3 files changed, 523 insertions, 1 deletions
diff --git a/net-libs/opal/ChangeLog b/net-libs/opal/ChangeLog index 274384eaecce..3bd3f0966ae5 100644 --- a/net-libs/opal/ChangeLog +++ b/net-libs/opal/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for net-libs/opal # Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-libs/opal/ChangeLog,v 1.100 2014/04/03 10:10:20 tomwij Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-libs/opal/ChangeLog,v 1.101 2014/04/29 09:02:05 polynomial-c Exp $ + +*opal-3.10.11 (29 Apr 2014) + + 29 Apr 2014; Lars Wendler <polynomial-c@gentoo.org> +opal-3.10.11.ebuild, + +files/opal-3.10.11-libav9-gentoo.patch: + Version bump. Fixed compilation with >=media-video/ffmpeg-2 and + >=media-video/libav-9 (bug #443206). 03 Apr 2014; Tom Wijsman <TomWij@gentoo.org> opal-3.10.10.ebuild, opal-3.6.8-r2.ebuild: diff --git a/net-libs/opal/files/opal-3.10.11-libav9-gentoo.patch b/net-libs/opal/files/opal-3.10.11-libav9-gentoo.patch new file mode 100644 index 000000000000..6288866262d2 --- /dev/null +++ b/net-libs/opal/files/opal-3.10.11-libav9-gentoo.patch @@ -0,0 +1,262 @@ +--- plugins/video/common/dyna.cxx ++++ plugins/video/common/dyna.cxx +@@ -37,6 +37,7 @@ + * Craig Southeren (craigs@postincrement.com) + * Matthias Schneider (ma30002000@yahoo.de) + */ ++#include <stdio.h> + #include "dyna.h" + + bool DynaLink::Open(const char *name) +@@ -210,14 +211,14 @@ + #endif + + +-FFMPEGLibrary::FFMPEGLibrary(CodecID codec) ++FFMPEGLibrary::FFMPEGLibrary(AVCodecID codec) + { + m_codec = codec; +- if (m_codec==CODEC_ID_H264) ++ if (m_codec==AV_CODEC_ID_H264) + snprintf( m_codecString, sizeof(m_codecString), "H264"); +- if (m_codec==CODEC_ID_H263P) ++ if (m_codec==AV_CODEC_ID_H263P) + snprintf( m_codecString, sizeof(m_codecString), "H263+"); +- if (m_codec==CODEC_ID_MPEG4) ++ if (m_codec==AV_CODEC_ID_MPEG4) + snprintf( m_codecString, sizeof(m_codecString), "MPEG4"); + m_isLoadedOK = false; + } +@@ -348,12 +349,12 @@ + return true; + } + +-AVCodec *FFMPEGLibrary::AvcodecFindEncoder(enum CodecID id) ++AVCodec *FFMPEGLibrary::AvcodecFindEncoder(enum AVCodecID id) + { + return Favcodec_find_encoder(id); + } + +-AVCodec *FFMPEGLibrary::AvcodecFindDecoder(enum CodecID id) ++AVCodec *FFMPEGLibrary::AvcodecFindDecoder(enum AVCodecID id) + { + WaitAndSignal m(processLock); + +--- plugins/video/common/dyna.h ++++ plugins/video/common/dyna.h +@@ -88,13 +88,13 @@ + class FFMPEGLibrary + { + public: +- FFMPEGLibrary(CodecID codec); ++ FFMPEGLibrary(AVCodecID codec); + ~FFMPEGLibrary(); + + bool Load(); + +- AVCodec *AvcodecFindEncoder(enum CodecID id); +- AVCodec *AvcodecFindDecoder(enum CodecID id); ++ AVCodec *AvcodecFindEncoder(enum AVCodecID id); ++ AVCodec *AvcodecFindDecoder(enum AVCodecID id); + AVCodecContext *AvcodecAllocContext(void); + AVFrame *AvcodecAllocFrame(void); + int AvcodecOpen(AVCodecContext *ctx, AVCodec *codec); +@@ -117,15 +117,15 @@ + DynaLink m_libAvcodec; + DynaLink m_libAvutil; + +- CodecID m_codec; ++ AVCodecID m_codec; + char m_codecString[32]; + + void (*Favcodec_init)(void); + void (*Fav_init_packet)(AVPacket *pkt); + + void (*Favcodec_register_all)(void); +- AVCodec *(*Favcodec_find_encoder)(enum CodecID id); +- AVCodec *(*Favcodec_find_decoder)(enum CodecID id); ++ AVCodec *(*Favcodec_find_encoder)(enum AVCodecID id); ++ AVCodec *(*Favcodec_find_decoder)(enum AVCodecID id); + AVCodecContext *(*Favcodec_alloc_context)(void); + AVFrame *(*Favcodec_alloc_frame)(void); + int (*Favcodec_open)(AVCodecContext *ctx, AVCodec *codec); +--- plugins/video/H.263-1998/h263-1998.cxx ++++ plugins/video/H.263-1998/h263-1998.cxx +@@ -43,6 +43,12 @@ + * $Date: 2014/04/29 09:02:06 $ + */ + ++#define CODEC_FLAG_H263P_UMV 0x02000000 ++#define CODEC_FLAG_H263P_SLICE_STRUCT 0x10000000 ++#define CODEC_FLAG_H263P_AIV 0x00000008 ++#define CODEC_FLAG_OBMC 0x00000001 ++#define FF_I_TYPE 1 ++ + #ifndef PLUGIN_CODEC_DLL_EXPORTS + #include "plugin-config.h" + #endif +@@ -94,7 +100,7 @@ + { CIF16_WIDTH, CIF16_HEIGHT, PLUGINCODEC_CIF16_MPI }, + }; + +-static FFMPEGLibrary FFMPEGLibraryInstance(CODEC_ID_H263P); ++static FFMPEGLibrary FFMPEGLibraryInstance(AV_CODEC_ID_H263P); + + + ///////////////////////////////////////////////////////////////////////////// +@@ -203,7 +209,7 @@ + PTRACE(4, m_prefix, "Encoder closed"); + } + +-bool H263_Base_EncoderContext::Init(CodecID codecId) ++bool H263_Base_EncoderContext::Init(AVCodecID codecId) + { + PTRACE(5, m_prefix, "Opening encoder"); + +@@ -616,7 +622,7 @@ + + bool H263_RFC2190_EncoderContext::Init() + { +- if (!H263_Base_EncoderContext::Init(CODEC_ID_H263)) ++ if (!H263_Base_EncoderContext::Init(AV_CODEC_ID_H263)) + return false; + + #if LIBAVCODEC_RTP_MODE +@@ -661,7 +667,7 @@ + + bool H263_RFC2429_EncoderContext::Init() + { +- return H263_Base_EncoderContext::Init(CODEC_ID_H263P); ++ return H263_Base_EncoderContext::Init(AV_CODEC_ID_H263P); + } + + +@@ -685,7 +691,7 @@ + if (!FFMPEGLibraryInstance.Load()) + return; + +- if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(CODEC_ID_H263)) == NULL) { ++ if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(AV_CODEC_ID_H263)) == NULL) { + PTRACE(1, m_prefix, "Codec not found for decoder"); + return; + } +--- plugins/video/H.263-1998/h263-1998.h ++++ plugins/video/H.263-1998/h263-1998.h +@@ -115,7 +115,7 @@ + virtual ~H263_Base_EncoderContext(); + + virtual bool Init() = 0; +- virtual bool Init(CodecID codecId); ++ virtual bool Init(AVCodecID codecId); + + virtual bool SetOptions(const char * const * options); + virtual void SetOption(const char * option, const char * value); +--- plugins/video/H.263-1998/Makefile.in ++++ plugins/video/H.263-1998/Makefile.in +@@ -34,7 +34,7 @@ + $(COMMONDIR)/mpi.cxx \ + $(COMMONDIR)/dyna.cxx + +-CXXFLAGS += @LIBAVCODEC_CFLAGS@ -I$(COMMONDIR) ++CXXFLAGS += @LIBAVCODEC_CFLAGS@ -I$(COMMONDIR) -fpermissive + LIBS += @DL_LIBS@ + + HAVE_LIBAVCODEC_RTP_MODE=@HAVE_LIBAVCODEC_RTP_MODE@ +--- plugins/video/H.264/h264-x264.cxx ++++ plugins/video/H.264/h264-x264.cxx +@@ -36,6 +36,15 @@ + * $Date: 2014/04/29 09:02:06 $ + */ + ++#define FF_ER_AGGRESSIVE 3 ++#define CODEC_FLAG2_BRDO 0x00000400 ++#define CODEC_FLAG2_MEMC_ONLY 0x00001000 ++#define CODEC_FLAG2_DROP_FRAME_TIMECODE 0x00002000 ++#define CODEC_FLAG2_SKIP_RD 0x00004000 ///< RD optimal MB level residual skipping ++#define FF_IDCT_H264 11 ++ ++#include <stdio.h> ++ + #ifndef PLUGIN_CODEC_DLL_EXPORTS + #include "plugin-config.h" + #endif +@@ -104,7 +113,7 @@ + + /////////////////////////////////////////////////////////////////////////////// + +-FFMPEGLibrary FFMPEGLibraryInstance(CODEC_ID_H264); ++FFMPEGLibrary FFMPEGLibraryInstance(AV_CODEC_ID_H264); + + PLUGINCODEC_CONTROL_LOG_FUNCTION_DEF + +@@ -1064,7 +1073,7 @@ + allows you to fail the create operation (return false), which cannot + be done in the normal C++ constructor. */ + +- if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(CODEC_ID_H264)) == NULL) ++ if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(AV_CODEC_ID_H264)) == NULL) + return false; + + if ((m_context = FFMPEGLibraryInstance.AvcodecAllocContext()) == NULL) +@@ -1072,7 +1081,7 @@ + + m_context->workaround_bugs = FF_BUG_AUTODETECT; + #ifdef FF_ER_AGGRESSIVE +- m_context->error_recognition = FF_ER_AGGRESSIVE; ++ m_context->err_recognition = FF_ER_AGGRESSIVE; + #endif + m_context->idct_algo = FF_IDCT_H264; + m_context->error_concealment = FF_EC_GUESS_MVS | FF_EC_DEBLOCK; + +--- plugins/video/MPEG4-ffmpeg/mpeg4.cxx ++++ plugins/video/MPEG4-ffmpeg/mpeg4.cxx +@@ -53,6 +53,11 @@ + + */ + ++#define CODEC_FLAG_H263P_UMV 0x02000000 ++#define CODEC_FLAG_H263P_SLICE_STRUCT 0x10000000 ++#define FF_I_TYPE 1 ++#define CODEC_FLAG_PART 0x0080 ++ + // Plugin specific + #define _CRT_SECURE_NO_DEPRECATE + +@@ -205,7 +210,7 @@ + { 0 } + }; + +-FFMPEGLibrary FFMPEGLibraryInstance(CODEC_ID_MPEG4); ++FFMPEGLibrary FFMPEGLibraryInstance(AV_CODEC_ID_MPEG4); + + + static bool mpeg4IsIframe (BYTE * frameBuffer, unsigned int frameLen ) +@@ -701,7 +706,7 @@ + return false; + } + +- if((m_avcodec = FFMPEGLibraryInstance.AvcodecFindEncoder(CODEC_ID_MPEG4)) == NULL){ ++ if((m_avcodec = FFMPEGLibraryInstance.AvcodecFindEncoder(AV_CODEC_ID_MPEG4)) == NULL){ + PTRACE(1, "MPEG4", "Encoder not found"); + return false; + } +@@ -1391,7 +1396,7 @@ + + bool MPEG4DecoderContext::OpenCodec() + { +- if ((m_avcodec = FFMPEGLibraryInstance.AvcodecFindDecoder(CODEC_ID_MPEG4)) == NULL) { ++ if ((m_avcodec = FFMPEGLibraryInstance.AvcodecFindDecoder(AV_CODEC_ID_MPEG4)) == NULL) { + PTRACE(1, "MPEG4", "Decoder not found for encoder"); + return false; + } +--- plugins/video/MPEG4-ffmpeg/Makefile.in ++++ plugins/video/MPEG4-ffmpeg/Makefile.in +@@ -30,7 +30,7 @@ + SRCDIR := . + SRCS := mpeg4.cxx $(COMMONDIR)/dyna.cxx + +-CXXFLAGS += @LIBAVCODEC_CFLAGS@ -I$(COMMONDIR) ++CXXFLAGS += @LIBAVCODEC_CFLAGS@ -I$(COMMONDIR) -fpermissive + LIBS += @DL_LIBS@ + + # Add LIBAVCODEC_SOURCE_DIR to the include path so we can #include <libavcodec/...h> diff --git a/net-libs/opal/opal-3.10.11.ebuild b/net-libs/opal/opal-3.10.11.ebuild new file mode 100644 index 000000000000..68576fa744c2 --- /dev/null +++ b/net-libs/opal/opal-3.10.11.ebuild @@ -0,0 +1,253 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-libs/opal/opal-3.10.11.ebuild,v 1.1 2014/04/29 09:02:05 polynomial-c Exp $ + +EAPI=5 + +inherit eutils autotools toolchain-funcs java-pkg-opt-2 flag-o-matic + +DESCRIPTION="C++ class library normalising numerous telephony protocols" +HOMEPAGE="http://www.opalvoip.org/" +SRC_URI="mirror://sourceforge/opalvoip/${P}.tar.bz2 + doc? ( mirror://sourceforge/opalvoip/${P}-htmldoc.tar.bz2 )" + +LICENSE="MPL-1.0" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="+audio capi celt debug doc +dtmf examples fax ffmpeg h224 h281 h323 iax +ilbc ipv6 ivr ixj java ldap lid +plugins sbc sip sipim srtp ssl static-libs +stats swig theora +video vpb vxml wav x264 x264-static xml" + +REQUIRED_USE="x264-static? ( x264 ) + h281? ( h224 ) + sip? ( sipim )" + +RDEPEND=">=net-libs/ptlib-2.10.10:=[stun,debug=,audio?,dtmf,http,ipv6?,ldap?,ssl?,video?,vxml?,wav?,xml?] + >=media-libs/speex-1.2_beta + fax? ( net-libs/ptlib[asn] ) + h323? ( net-libs/ptlib[asn] ) + ivr? ( net-libs/ptlib[http,xml,vxml] ) + java? ( >=virtual/jre-1.4 ) + plugins? ( + media-sound/gsm + capi? ( net-dialup/capi4k-utils ) + celt? ( media-libs/celt ) + ffmpeg? ( virtual/ffmpeg[encode] !!>=media-libs/libav-9 ) + ixj? ( sys-kernel/linux-headers ) + ilbc? ( dev-libs/ilbc-rfc3951 ) + sbc? ( media-libs/libsamplerate ) + theora? ( media-libs/libtheora ) + x264? ( virtual/ffmpeg + media-libs/x264 ) ) + srtp? ( net-libs/libsrtp ) + vxml? ( net-libs/ptlib[http,vxml] )" +DEPEND="${RDEPEND} + virtual/pkgconfig + >=sys-devel/gcc-3 + java? ( swig? ( dev-lang/swig ) + >=virtual/jdk-1.4 )" + +# NOTES: +# ffmpeg[encode] is for h263 and mpeg4 +# ssl, xml, vxml, ipv6, ldap, audio, wav, and video are use flags +# herited from ptlib: feature is enabled if ptlib has enabled it +# however, disabling it if ptlib has it looks hard (coz of buildopts.h) +# forcing ptlib to disable it for opal is not a solution too +# atm, accepting the "auto-feature" looks like a good solution +# (asn is used for fax and config _only_ for examples) +# OPALDIR should not be used anymore but if a package still need it, create it + +pkg_setup() { + # workaround for bug 282838 + append-cxxflags "-fno-visibility-inlines-hidden" + append-cxxflags "-fno-strict-aliasing" + + # need >=gcc-3 + if [[ $(gcc-major-version) -lt 3 ]]; then + eerror "You need to use gcc-3 at least." + eerror "Please change gcc version with 'gcc-config'." + die "You need to use gcc-3 at least." + fi + + java-pkg-opt-2_pkg_setup +} + +src_prepare() { + # remove visual studio related files from samples/ + if use examples; then + rm -f samples/*/*.vcproj + rm -f samples/*/*.sln + rm -f samples/*/*.dsp + rm -f samples/*/*.dsw + fi + + epatch "${FILESDIR}/${PN}-3.10.9-svn_revision_override.patch" \ + "${FILESDIR}/${PN}-3.10.9-labs_is_in_stdlib.patch" \ + "${FILESDIR}/${PN}-3.10.9-avoid_cflags_mixup.patch" \ + "${FILESDIR}/${PN}-3.10.9-ffmpeg.patch" \ + "${FILESDIR}/${PN}-3.10.11-libav9-gentoo.patch" + + if ! use h323; then + # Without this patch, ekiga wont compile, even with + # USE=-h323. + epatch "${FILESDIR}/${PN}-3.10.9-disable-h323-workaround.patch" + fi + + epatch "${FILESDIR}/${PN}-3.10.9-java-ruby-swig-fix.patch" + + sed -i -e "s:\(.*HAS_H224.*\), \[OPAL_H323\]:\1:" configure.ac \ + || die "sed failed" + + eaclocal + eautoconf + + # in plugins + cd plugins/ + eaclocal + eautoconf + cd .. + + # disable celt if celt is not enabled (prevent auto magic dep) + # already in repository + if ! use celt; then + sed -i -e "s/HAVE_CELT=yes/HAVE_CELT=no/" plugins/configure \ + || die "sed failed" + fi + + # fix automatic swig detection, upstream bug 2712521 (upstream reject it) + if ! use swig; then + sed -i -e "/^SWIG=/d" configure || die "patching configure failed" + fi + + use ilbc || { rm -r plugins/audio/iLBC/ || die "removing iLBC failed"; } + + java-pkg-opt-2_src_prepare +} + +src_configure() { + local forcedconf="" + + # fix bug 277233, upstream bug 2820939 + if use fax; then + forcedconf="${forcedconf} --enable-statistics" + fi + + # --with-libavcodec-source-dir should _not_ be set, it's for trunk sources + # versioncheck: check for ptlib version + # shared: should always be enabled for a lib + # localspeex, localspeexdsp, localgsm, localilbc: never use bundled libs + # samples: only build some samples, useless + # libavcodec-stackalign-hack: prevent hack (default disable by upstream) + # default-to-full-capabilties: default enable by upstream + # aec: atm, only used when bundled speex, so it's painless for us + # zrtp doesn't depend on net-libs/libzrtpcpp but on libzrtp from + # http://zfoneproject.com/ wich is not in portage + # msrp: highly experimental + # spandsp: doesn't work with newest spandsp, upstream bug 2796047 + # g711plc: force enable + # rfc4103: not really used, upstream bug 2795831 + # t38, spandsp: merged in fax + # h450, h460, h501: merged in h323 (they are additional features of h323) + econf \ + --enable-versioncheck \ + --enable-shared \ + --disable-zrtp \ + --disable-localspeex \ + --disable-localspeexdsp \ + --disable-localgsm \ + --disable-localilbc \ + --disable-samples \ + --disable-libavcodec-stackalign-hack \ + --enable-default-to-full-capabilties \ + --enable-aec \ + --disable-msrp \ + --disable-spandsp \ + --enable-g711plc \ + --enable-rfc4103 \ + $(use_enable debug) \ + $(use_enable capi) \ + $(use_enable fax) \ + $(use_enable fax t38) \ + $(use_enable h224) \ + $(use_enable h281) \ + $(use_enable h323) \ + $(use_enable h323 h450) \ + $(use_enable h323 h460) \ + $(use_enable h323 h501) \ + $(use_enable iax) \ + $(use_enable ivr) \ + $(use_enable ixj) \ + $(use_enable java) \ + $(use_enable lid) \ + $(use_enable plugins) \ + $(use_enable sbc) \ + $(use_enable sip) \ + $(use_enable sipim) \ + $(use_enable stats statistics) \ + $(use_enable video) $(use_enable video rfc4175) \ + $(use_enable vpb) \ + $(use_enable x264 h264) \ + $(use_enable x264-static x264-link-static) \ + ${forcedconf} +} + +src_compile() { + local makeopts="" + + use debug && makeopts="debug" + + emake ${makeopts} || die "emake failed" +} + +src_install() { + emake DESTDIR="${D}" install || die "emake install failed" + + # Get rid of static libraries if not requested + # There seems to be no easy way to disable this in the build system + if ! use static-libs; then + rm -v "${D}"/usr/lib*/*.a || die + fi + + if use doc; then + dohtml -r "${WORKDIR}"/html/* docs/* || die "dohtml failed" + fi + + # ChangeLog is not standard and does not exist on 3.10.10 +# dodoc ChangeLog-${PN}-v${PV//./_}.txt || die "dodoc failed" + + if use examples; then + local exampledir="/usr/share/doc/${PF}/examples" + local basedir="samples" + local sampledirs="`ls ${basedir} --hide=configure* \ + --hide=opal_samples.mak.in`" + + # first, install files + insinto ${exampledir}/ + doins ${basedir}/{configure*,opal_samples*} \ + || die "doins failed" + + # now, all examples + for x in ${sampledirs}; do + insinto ${exampledir}/${x}/ + doins ${basedir}/${x}/* || die "doins failed" + done + + # some examples need version.h + insinto "/usr/share/doc/${PF}/" + doins version.h || die "doins failed" + fi +} + +pkg_postinst() { + if use examples; then + ewarn "All examples have been installed, some of them will not work on your system" + ewarn "it will depend of the enabled USE flags in ptlib and opal" + fi + + if ! use plugins || ! use audio || ! use video; then + ewarn "You have disabled audio, video or plugins USE flags." + ewarn "Most audio/video features or plugins have been disabled silently" + ewarn "even if enabled via USE flags." + ewarn "Having a feature enabled via USE flag but disabled can lead to issues." + fi +} |