Bug#680872: unblock: mumble/1.2.3-349-g315b5f5-2
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Please unblock package mumble
Movement on this one had mostly been blocked pending some resolution to
the zeroc-ice ABI breakage, but since people didn't want to relegate it
to unstable/bpo for fixing the outstanding issues, and zeroc-ice now has
a fixed version uploaded, here's one that addresses all the current RC
bugs, that's about as close to the minimal set of changes needed to put
it in a sane state for a stable release as seems to be practical.
It's more than I'd usually be comfortable changing during a freeze, but
given the number of RC issues that it and its deps shook out in the last
few weeks before the freeze, and the lack of a maintainer for zeroc-ice,
I wasn't really expecting this to be a viable candidate at all anymore
by the time the end of June deadline came - and there didn't seem to be
much point in fiddling around the edges while -ice was a showstopper.
But since some people really don't want to give up on saving it just yet,
I guess we'll see what we can do with the hand we've been dealt :)
Cheers,
Ron
unblock mumble/1.2.3-349-g315b5f5-2
debian/MurmurPHP.ini | 1 -
debian/changelog | 41 ++
debian/control | 48 ---
debian/mumble-server-web.README.Debian | 3 -
debian/mumble-server-web.conf | 10 -
debian/mumble-server-web.dirs | 1 -
debian/mumble-server-web.install | 3 -
debian/mumble-server-web.links | 1 -
debian/mumble-server-web.postinst | 35 --
debian/patches/10-use-celt-guard | 430 ++++++++++++++++++++++++++++
debian/patches/15-fix-noise-in-opus-mode | 31 ++
debian/patches/20-add-opus-threshold-option | 149 +++++++++
debian/patches/25-add-codec-warnings | 47 +++
debian/patches/series | 4
debian/rules | 34 --
debian/watch | 2
src/mumble/mumble.pro | 13
17 files changed, 737 insertions(+), 116 deletions(-)
diff -Nru mumble-1.2.3-348-g317f5a0/debian/changelog mumble-1.2.3-349-g315b5f5/debian/changelog
--- mumble-1.2.3-348-g317f5a0/debian/changelog 2012-05-25 04:03:03.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/changelog 2012-07-09 03:12:05.000000000 +0930
@@ -1,3 +1,44 @@
+mumble (1.2.3-349-g315b5f5-2) unstable; urgency=low
+
+ * Drop the hard dep on boost-1.46, that's been removed now. Closes: #678759
+ Drop the | dep on alternative boost, since that's what got this package
+ overlooked when people were removing boost-1.46.
+
+ * Drop the | dep on libgl-dev, that's been gone a long time now too and
+ leaves us vulnerable to a similar problem.
+
+ * Drop the mumble-server-web package altogether. Upstream reports that it
+ is unmaintained and "pretty useless anyway", which seems to be well backed
+ up by the fact that a call to Ice_intversion() was added in March 2010,
+ and that function has never existed in any version of zeroc-ice ever.
+ A function named Ice_intVersion was added to -ice 3.2.1 though ...
+ Since it's taken this long for anyone to notice, we can be pretty sure that
+ there aren't any actual users of it. Closes: #676815, #676816
+
+ * Build-Depend on the unfycked version of zeroc-ice, so the ABI broken one
+ doesn't accidentally get used by an out of date buildd. Closes: #675955
+ Force building with gcc-4.6, since that's required for zeroc-ice deps now,
+ until they get their act together and write some actually legal code.
+
+ * Cherry-pick the upstream patches to fix the "audio glitches", and provide
+ codec thresholds and warnings. Closes: #675971 since it fixes the only
+ actual bug reported there.
+
+ * Drop the watch file, since this has been building snapshots from git now
+ since 1.2.3-3 (and before).
+
+ -- Ron Lee <ron@debian.org> Sun, 08 Jul 2012 06:18:50 +0930
+
+mumble (1.2.3-349-g315b5f5-1) unstable; urgency=low
+
+ * Adopt the package. Closes: #674719
+ * Drop the dependency on the celt package. Closes: #674650
+ * Add the upstream patch to enable opus support.
+ * Explicitly disable the bundled libs, don't rely on system lib detection
+ doing that as a side-effect.
+
+ -- Ron Lee <ron@debian.org> Mon, 04 Jun 2012 03:56:35 +0930
+
mumble (1.2.3-348-g317f5a0-1) unstable; urgency=low
* New upstream snapshot from 20.05.2012.
diff -Nru mumble-1.2.3-348-g317f5a0/debian/control mumble-1.2.3-349-g315b5f5/debian/control
--- mumble-1.2.3-348-g317f5a0/debian/control 2012-05-25 04:03:03.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/control 2012-07-09 03:12:05.000000000 +0930
@@ -1,28 +1,26 @@
Source: mumble
Section: sound
Priority: optional
-Homepage: http://mumble.sourceforge.net/
-Maintainer: Debian VoIP Team <pkg-voip-maintainers@lists.alioth.debian.org>
-Uploaders: Patrick Matthäi <pmatthaei@debian.org>,
- Thorvald Natvig <thorvald@debian.org>
-Build-Depends: debhelper (>= 7.0.8),
+Maintainer: Ron Lee <ron@debian.org>
+Uploaders: Thorvald Natvig <thorvald@debian.org>
+Build-Depends: debhelper (>= 7.0.8), g++-4.6,
po-debconf,
- libboost1.46-dev | libboost-dev (>= 1.38.0),
- libboost-python1.46-dev | libboost-python-dev (>= 1.38.0),
+ libboost-dev (>= 1.42),
+ libboost-python-dev (>= 1.42),
libqt4-dev (>= 4.5.0),
hardening-wrapper,
- libgl1-mesa-dev | libgl-dev,
+ libgl1-mesa-dev,
libasound2-dev,
libpulse-dev,
libogg-dev,
libspeex-dev,
libspeexdsp-dev,
- libcelt-dev (>= 0.7.0),
+ libopus-dev,
libsndfile1-dev,
libssl-dev,
- libzeroc-ice34-dev | libzeroc-ice33-dev | libzeroc-ice32-dev | libzeroc-ice-dev,
- ice34-translators | ice33-translators | ice32-translators | ice-translators,
- ice34-slice | ice33-slice | ice32-slice | ice-slice,
+ libzeroc-ice34-dev (>= 3.4.2-8.1),
+ ice34-translators (>= 3.4.2-8.1),
+ ice34-slice (>= 3.4.2-8.1),
libg15daemon-client-dev,
libspeechd-dev,
protobuf-compiler,
@@ -30,15 +28,15 @@
libavahi-compat-libdnssd-dev,
libxi-dev,
libcap-dev [linux-any]
-Standards-Version: 3.9.3
-Vcs-Svn: svn://svn.debian.org/pkg-voip/mumble/trunk/
-Vcs-Browser: http://anonscm.debian.org/viewvc/pkg-voip/mumble/
+Standards-Version: 3.9.3.1
+Homepage: http://mumble.sourceforge.net/
+Vcs-Git: git://git.debian.org/users/ron/mumble.git
+Vcs-Browser: http://git.debian.org/?p=users/ron/mumble.git;a=summary
Package: mumble
Architecture: any
Depends: ${shlibs:Depends},
${misc:Depends},
- libcelt0 (>= 0.7.0) | libcelt0-0 (>= 0.7.1~),
libqt4-sql-sqlite,
lsb-release
Recommends: speech-dispatcher
@@ -87,21 +85,3 @@
.
This package contains the debugging symbols for the 'mumble' and
'mumble-server' packages.
-
-Package: mumble-server-web
-Architecture: all
-Depends: ${misc:Depends},
- ${perl:Depends},
- mumble-server (>= ${binary:Version}),
- apache2,
- exim4 | mail-transport-agent,
- libnet-dbus-perl,
- libcgi-session-perl,
- libhtml-template-perl,
- php-zeroc-ice,
- ice34-translators | ice33-translators | ice32-translators | ice-translators,
- ice34-slice | ice33-slice | ice32-slice | ice-slice
-Description: Web scripts for mumble-server
- Murmur (in the package mumble-server) is the VoIP server component for
- Mumble. This package contains web scripts for registering users, uploading
- custom textures and showing a list of currently connected users.
diff -Nru mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.conf mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.conf
--- mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.conf 2012-05-25 04:03:04.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.conf 1970-01-01 09:30:00.000000000 +0930
@@ -1,10 +0,0 @@
-Alias /mumble-server /usr/share/mumble-server-web/www/
-
-<Directory /usr/share/mumble-server-web/www/>
- Options FollowSymLinks ExecCGI
- AllowOverride None
- AddHandler cgi-script .cgi
- DirectoryIndex index.php
- Order allow,deny
- Allow from all
-</Directory>
diff -Nru mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.dirs mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.dirs
--- mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.dirs 2012-05-25 04:03:04.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.dirs 1970-01-01 09:30:00.000000000 +0930
@@ -1 +0,0 @@
-usr/share/mumble-server-web/www
diff -Nru mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.install mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.install
--- mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.install 2012-05-25 04:03:04.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.install 1970-01-01 09:30:00.000000000 +0930
@@ -1,3 +0,0 @@
-debian/MurmurPHP.ini etc/php5/conf.d
-debian/mumble-server-web.conf etc/apache2/conf.d
-scripts/weblist.php usr/share/mumble-server-web/www
diff -Nru mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.links mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.links
--- mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.links 2012-05-25 04:03:04.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.links 1970-01-01 09:30:00.000000000 +0930
@@ -1 +0,0 @@
-usr/share/mumble-server-web/www/weblist.php usr/share/mumble-server-web/www/index.php
diff -Nru mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.postinst mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.postinst
--- mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.postinst 2012-05-25 04:03:04.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.postinst 1970-01-01 09:30:00.000000000 +0930
@@ -1,35 +0,0 @@
-#! /bin/sh
-# postinst script for mumble-server-web
-
-set -e
-
-# summary of how this script can be called:
-# * <postinst> `configure' <most-recently-configured-version>
-# * <old-postinst> `abort-upgrade' <new version>
-# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
-# <new-version>
-# * <postinst> `abort-remove'
-# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
-# <failed-install-package> <version> `removing'
-# <conflicting-package> <version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-case "$1" in
- configure)
- # Restart apache2 to load new config
- invoke-rc.d --quiet apache2 reload
- ;;
-
- abort-upgrade|abort-remove|abort-deconfigure)
- ;;
-
- *)
- echo "postinst called with unknown argument \`$1'" >&2
- exit 1
- ;;
-esac
-
-#DEBHELPER#
-
-exit 0
diff -Nru mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.README.Debian mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.README.Debian
--- mumble-1.2.3-348-g317f5a0/debian/mumble-server-web.README.Debian 2012-05-25 04:03:04.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/mumble-server-web.README.Debian 1970-01-01 09:30:00.000000000 +0930
@@ -1,3 +0,0 @@
-If you have got Apache running, you can get a server list on:
-
- http://localhost/mumble-server/
diff -Nru mumble-1.2.3-348-g317f5a0/debian/MurmurPHP.ini mumble-1.2.3-349-g315b5f5/debian/MurmurPHP.ini
--- mumble-1.2.3-348-g317f5a0/debian/MurmurPHP.ini 2012-05-25 04:03:03.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/MurmurPHP.ini 1970-01-01 09:30:00.000000000 +0930
@@ -1 +0,0 @@
-ice.slice=/usr/share/slice/Murmur.ice
diff -Nru mumble-1.2.3-348-g317f5a0/debian/patches/10-use-celt-guard mumble-1.2.3-349-g315b5f5/debian/patches/10-use-celt-guard
--- mumble-1.2.3-348-g317f5a0/debian/patches/10-use-celt-guard 1970-01-01 09:30:00.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/patches/10-use-celt-guard 2012-07-09 03:12:05.000000000 +0930
@@ -0,0 +1,430 @@
+diff --git a/src/mumble/Audio.cpp b/src/mumble/Audio.cpp
+index ef78f81..dc2352d 100644
+--- a/src/mumble/Audio.cpp
++++ b/src/mumble/Audio.cpp
+@@ -49,6 +49,7 @@ LoopUser LoopUser::lpLoopy;
+ CodecInit ciInit;
+
+ void CodecInit::initialize() {
++#ifdef USE_CELT
+ CELTCodec *codec = NULL;
+
+ codec = new CELTCodec070(QLatin1String("0.7.0"));
+@@ -103,12 +104,15 @@ void CodecInit::initialize() {
+ delete codec;
+ }
+ }
++#endif
+ }
+
+ void CodecInit::destroy() {
++#ifdef USE_CELT
+ foreach(CELTCodec *codec, g.qmCodecs)
+ delete codec;
+ g.qmCodecs.clear();
++#endif
+ }
+
+ #ifdef Q_CC_GNU
+@@ -123,6 +127,7 @@ extern "C" {
+ };
+ #endif
+
++#ifdef USE_CELT
+ CELTCodec::CELTCodec(const QString &version) {
+ bValid = false;
+ cmMode = NULL;
+@@ -311,6 +316,7 @@ int CELTCodec011::encode(CELTEncoder *st, const celt_int16 *pcm, unsigned char *
+ int CELTCodec011::decode_float(CELTDecoder *st, const unsigned char *data, int len, float *pcm) {
+ return celt_decode_float(st, data, len, pcm, SAMPLE_RATE / 100);
+ }
++#endif // USE_CELT
+
+ LoopUser::LoopUser() {
+ qsName = QLatin1String("Loopy");
+diff --git a/src/mumble/Audio.h b/src/mumble/Audio.h
+index 3aa851d..d91027a 100644
+--- a/src/mumble/Audio.h
++++ b/src/mumble/Audio.h
+@@ -32,7 +32,10 @@
+ #define AUDIO_H_
+
+ #include <stdint.h>
++
++#ifdef USE_CELT
+ #include <celt.h>
++#endif
+
+ #include <QtCore/QByteArray>
+ #include <QtCore/QLibrary>
+@@ -52,6 +55,7 @@
+
+ typedef QPair<QString,QVariant> audioDevice;
+
++#ifdef USE_CELT
+ class CELTCodec {
+ private:
+ Q_DISABLE_COPY(CELTCodec)
+@@ -139,6 +143,7 @@ class CELTCodec011 : public CELTCodec {
+ virtual int encode(CELTEncoder *st, const celt_int16 *pcm, unsigned char *compressed, int nbCompressedBytes);
+ virtual int decode_float(CELTDecoder *st, const unsigned char *data, int len, float *pcm);
+ };
++#endif // USE_CELT
+
+ class LoopUser : public ClientUser {
+ private:
+diff --git a/src/mumble/AudioInput.cpp b/src/mumble/AudioInput.cpp
+index c663c3c..624e1df 100644
+--- a/src/mumble/AudioInput.cpp
++++ b/src/mumble/AudioInput.cpp
+@@ -100,10 +100,16 @@ AudioInput::AudioInput() : opusBuffer(g.s.iFramesPerPacket * (SAMPLE_RATE / 100)
+
+ g.iAudioBandwidth = getNetworkBandwidth(iAudioQuality, iAudioFrames);
+
++#ifdef USE_CELT
+ umtType = MessageHandler::UDPVoiceCELTAlpha;
++#else
++ umtType = MessageHandler::UDPVoiceOpus;
++#endif
+
++#ifdef USE_CELT
+ cCodec = NULL;
+ ceEncoder = NULL;
++#endif
+
+ iSampleRate = SAMPLE_RATE;
+ iFrameSize = SAMPLE_RATE / 100;
+@@ -166,9 +172,11 @@ AudioInput::~AudioInput() {
+ opus_encoder_destroy(opusState);
+ #endif
+
++#ifdef USE_CELT
+ if (ceEncoder) {
+ cCodec->celt_encoder_destroy(ceEncoder);
+ }
++#endif
+
+ foreach(short *buf, qlEchoFrames)
+ delete [] buf;
+@@ -610,6 +618,7 @@ bool AudioInput::selectCodec() {
+ }
+
+ if (!useOpus) {
++#ifdef USE_CELT
+ CELTCodec *switchto = NULL;
+ if ((!g.uiSession || (g.s.lmLoopMode == Settings::Local)) && (!g.qmCodecs.isEmpty())) {
+ // Use latest for local loopback
+@@ -640,6 +649,7 @@ bool AudioInput::selectCodec() {
+ }
+
+ if (!cCodec)
++#endif
+ return false;
+ }
+
+@@ -647,6 +657,7 @@ bool AudioInput::selectCodec() {
+ if (useOpus) {
+ umtType = MessageHandler::UDPVoiceOpus;
+ } else {
++#ifdef USE_CELT
+ if (!g.uiSession) {
+ umtType = MessageHandler::UDPVoiceCELTAlpha;
+ } else {
+@@ -659,6 +670,7 @@ bool AudioInput::selectCodec() {
+ qWarning() << "Couldn't find message type for codec version" << v;
+ }
+ }
++#endif
+ }
+
+ if (umtType != previousType) {
+@@ -688,6 +700,7 @@ int AudioInput::encodeOpusFrame(short *source, int size, unsigned char *buffer)
+
+ int AudioInput::encodeCELTFrame(short *psSource, unsigned char *buffer) {
+ int len = 0;
++#ifdef USE_CELT
+ if (!cCodec)
+ return len;
+
+@@ -699,7 +712,7 @@ int AudioInput::encodeCELTFrame(short *psSource, unsigned char *buffer) {
+ cCodec->celt_encoder_ctl(ceEncoder, CELT_SET_VBR_RATE(iAudioQuality));
+ len = cCodec->encode(ceEncoder, psSource, buffer, qMin(iAudioQuality / (8 * 100), 127));
+ iBitrate = len * 100 * 8;
+-
++#endif
+ return len;
+ }
+
+@@ -841,12 +854,15 @@ void AudioInput::encodeAudioFrame() {
+ if (!selectCodec())
+ return;
+
++#ifdef USE_CELT
+ if (umtType == MessageHandler::UDPVoiceCELTAlpha || umtType == MessageHandler::UDPVoiceCELTBeta) {
+ len = encodeCELTFrame(psSource, buffer);
+ if (len == 0)
+ return;
+ ++iBufferedFrames;
+- } else if (umtType == MessageHandler::UDPVoiceOpus) {
++ } else
++#endif
++ if (umtType == MessageHandler::UDPVoiceOpus) {
+ encoded = false;
+ opusBuffer.insert(opusBuffer.end(), psSource, psSource + iFrameSize);
+ ++iBufferedFrames;
+diff --git a/src/mumble/AudioInput.h b/src/mumble/AudioInput.h
+index c7b8f98..1ffbf1d 100644
+--- a/src/mumble/AudioInput.h
++++ b/src/mumble/AudioInput.h
+@@ -117,8 +117,10 @@ class AudioInput : public QThread {
+ SpeexPreprocessState *sppPreprocess;
+ SpeexEchoState *sesEcho;
+
++#ifdef USE_CELT
+ CELTCodec *cCodec;
+ CELTEncoder *ceEncoder;
++#endif
+
+ int iAudioQuality;
+ int iAudioFrames;
+diff --git a/src/mumble/AudioOutputSpeech.cpp b/src/mumble/AudioOutputSpeech.cpp
+index c09dabc..5939fe6 100644
+--- a/src/mumble/AudioOutputSpeech.cpp
++++ b/src/mumble/AudioOutputSpeech.cpp
+@@ -48,8 +48,10 @@ AudioOutputSpeech::AudioOutputSpeech(ClientUser *user, unsigned int freq, Messag
+ umtType = type;
+ iMixerFreq = freq;
+
++#ifdef USE_CELT
+ cCodec = NULL;
+ cdDecoder = NULL;
++#endif
+ dsSpeex = NULL;
+ opusState = NULL;
+
+@@ -113,9 +115,12 @@ AudioOutputSpeech::~AudioOutputSpeech() {
+ if (opusState)
+ opus_decoder_destroy(opusState);
+ #endif
++#ifdef USE_CELT
+ if (cdDecoder) {
+ cCodec->celt_decoder_destroy(cdDecoder);
+- } else if (dsSpeex) {
++ } else
++#endif
++ if (dsSpeex) {
+ speex_bits_destroy(&sbBits);
+ speex_decoder_destroy(dsSpeex);
+ }
+@@ -302,6 +307,7 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) {
+ if (! qlFrames.isEmpty()) {
+ QByteArray qba = qlFrames.takeFirst();
+
++#ifdef USE_CELT
+ if (umtType == MessageHandler::UDPVoiceCELTAlpha || umtType == MessageHandler::UDPVoiceCELTBeta) {
+ int wantversion = (umtType == MessageHandler::UDPVoiceCELTAlpha) ? g.iCodecAlpha : g.iCodecBeta;
+ if ((p == &LoopUser::lpLoopy) && (! g.qmCodecs.isEmpty())) {
+@@ -323,7 +329,9 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) {
+ cCodec->decode_float(cdDecoder, qba.isEmpty() ? NULL : reinterpret_cast<const unsigned char *>(qba.constData()), qba.size(), pOut);
+ else
+ memset(pOut, 0, sizeof(float) * iFrameSize);
+- } else if (umtType == MessageHandler::UDPVoiceOpus) {
++ } else
++#endif
++ if (umtType == MessageHandler::UDPVoiceOpus) {
+ #ifdef USE_OPUS
+ decodedSamples = opus_decode_float(opusState, qba.isEmpty() ? NULL : reinterpret_cast<const unsigned char *>(qba.constData()), qba.size(), pOut, iAudioBufferSize, 0);
+ iOutputSize = static_cast<unsigned int>(ceilf(static_cast<float>(decodedSamples * iMixerFreq) / static_cast<float>(iSampleRate)));
+@@ -369,12 +377,15 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) {
+ if (qlFrames.isEmpty() && bHasTerminator)
+ nextalive = false;
+ } else {
++#ifdef USE_CELT
+ if (umtType == MessageHandler::UDPVoiceCELTAlpha || umtType == MessageHandler::UDPVoiceCELTBeta) {
+ if (cdDecoder)
+ cCodec->decode_float(cdDecoder, NULL, 0, pOut);
+ else
+ memset(pOut, 0, sizeof(float) * iFrameSize);
+- } else if (umtType == MessageHandler::UDPVoiceOpus) {
++ } else
++#endif
++ if (umtType == MessageHandler::UDPVoiceOpus) {
+ #ifdef USE_OPUS
+ opus_decode_float(opusState, NULL, 0, pOut, iFrameSize, 0);
+ #endif
+diff --git a/src/mumble/AudioOutputSpeech.h b/src/mumble/AudioOutputSpeech.h
+index d123c8a..1199585 100644
+--- a/src/mumble/AudioOutputSpeech.h
++++ b/src/mumble/AudioOutputSpeech.h
+@@ -36,14 +36,20 @@
+ #include <speex/speex.h>
+ #include <speex/speex_resampler.h>
+ #include <speex/speex_jitter.h>
++
++#ifdef USE_CELT
+ #include <celt.h>
++#endif
+
+ #include <QtCore/QMutex>
+
+ #include "AudioOutputUser.h"
+ #include "Message.h"
+
++#ifdef USE_CELT
+ class CELTCodec;
++#endif
++
+ class ClientUser;
+ struct OpusDecoder;
+
+@@ -74,8 +80,10 @@ class AudioOutputSpeech : public AudioOutputUser {
+ JitterBuffer *jbJitter;
+ int iMissCount;
+
++#ifdef USE_CELT
+ CELTCodec *cCodec;
+ CELTDecoder *cdDecoder;
++#endif
+
+ OpusDecoder *opusState;
+
+diff --git a/src/mumble/Global.h b/src/mumble/Global.h
+index f50d8dd..d4669d8 100644
+--- a/src/mumble/Global.h
++++ b/src/mumble/Global.h
+@@ -54,7 +54,9 @@ class Overlay;
+ class LCD;
+ class BonjourClient;
+ class OverlayClient;
++#ifdef USE_CELT
+ class CELTCodec;
++#endif
+
+ class QNetworkAccessManager;
+
+@@ -92,7 +94,9 @@ public:
+ int iMaxBandwidth;
+ int iAudioBandwidth;
+ QDir qdBasePath;
++#ifdef USE_CELT
+ QMap<int, CELTCodec *> qmCodecs;
++#endif
+ int iCodecAlpha, iCodecBeta;
+ bool bPreferAlpha;
+ bool bOpus;
+diff --git a/src/mumble/MainWindow.cpp b/src/mumble/MainWindow.cpp
+index 1ff8eb1..178f2de 100644
+--- a/src/mumble/MainWindow.cpp
++++ b/src/mumble/MainWindow.cpp
+@@ -1046,12 +1046,16 @@ static const QString currentCodec() {
+ if (g.bOpus)
+ return QLatin1String("Opus");
+
++#ifdef USE_CELT
+ int v = g.bPreferAlpha ? g.iCodecAlpha : g.iCodecBeta;
+ CELTCodec* cc = g.qmCodecs.value(v);
+ if (cc)
+ return QString::fromLatin1("CELT %1").arg(cc->version());
+ else
+ return QString::fromLatin1("CELT %1").arg(QString::number(v, 16));
++#else
++ return QLatin1String("None");
++#endif
+ }
+
+ void MainWindow::on_qaServerInformation_triggered() {
+diff --git a/src/mumble/Messages.cpp b/src/mumble/Messages.cpp
+index 8806c0d..2aabbda 100644
+--- a/src/mumble/Messages.cpp
++++ b/src/mumble/Messages.cpp
+@@ -735,6 +735,7 @@ void MainWindow::msgCodecVersion(const MumbleProto::CodecVersion &msg) {
+ g.bOpus = msg.opus();
+ #endif
+
++#ifdef USE_CELT
+ // Workaround for broken 1.2.2 servers
+ if (g.sh && g.sh->uiVersion == 0x010202 && alpha != -1 && alpha == beta) {
+ if (pref)
+@@ -768,6 +769,7 @@ void MainWindow::msgCodecVersion(const MumbleProto::CodecVersion &msg) {
+ } else {
+ warned = false;
+ }
++#endif
+ }
+
+ void MainWindow::msgUserStats(const MumbleProto::UserStats &msg) {
+diff --git a/src/mumble/ServerHandler.cpp b/src/mumble/ServerHandler.cpp
+index b5bbc96..d0feb69 100644
+--- a/src/mumble/ServerHandler.cpp
++++ b/src/mumble/ServerHandler.cpp
+@@ -189,8 +189,10 @@ void ServerHandler::udpReady() {
+ accUDP(static_cast<double>(tTimestamp.elapsed() - t) / 1000.0);
+ }
+ break;
++#ifdef USE_CELT
+ case MessageHandler::UDPVoiceCELTAlpha:
+ case MessageHandler::UDPVoiceCELTBeta:
++#endif
+ case MessageHandler::UDPVoiceSpeex:
+ case MessageHandler::UDPVoiceOpus:
+ handleVoicePacket(msgFlags, pds, msgType);
+@@ -420,8 +422,10 @@ void ServerHandler::message(unsigned int msgType, const QByteArray &qbaMsg) {
+ PacketDataStream pds(qbaMsg.constData() + 1, qbaMsg.size());
+
+ switch (umsgType) {
++#ifdef USE_CELT
+ case MessageHandler::UDPVoiceCELTAlpha:
+ case MessageHandler::UDPVoiceCELTBeta:
++#endif
+ case MessageHandler::UDPVoiceSpeex:
+ handleVoicePacket(msgFlags, pds, umsgType);
+ break;
+@@ -539,9 +543,11 @@ void ServerHandler::serverConnectionConnected() {
+ foreach(const QString &qs, tokens)
+ mpa.add_tokens(u8(qs));
+
++#ifdef USE_CELT
+ QMap<int, CELTCodec *>::const_iterator i;
+ for (i=g.qmCodecs.constBegin(); i != g.qmCodecs.constEnd(); ++i)
+ mpa.add_celt_versions(i.key());
++#endif
+ #ifdef USE_OPUS
+ mpa.set_opus(true);
+ #else
+diff --git a/src/mumble/UserInformation.cpp b/src/mumble/UserInformation.cpp
+index af1dbe3..36fdde5 100644
+--- a/src/mumble/UserInformation.cpp
++++ b/src/mumble/UserInformation.cpp
+@@ -160,6 +160,7 @@ void UserInformation::update(const MumbleProto::UserStats &msg) {
+ qlVersion->setText(tr("%1 (%2)").arg(MumbleVersion::toString(mpv.version())).arg(u8(mpv.release())));
+ qlOS->setText(tr("%1 (%2)").arg(u8(mpv.os())).arg(u8(mpv.os_version())));
+ }
++#ifdef USE_CELT
+ if (msg.celt_versions_size() > 0) {
+ QStringList qsl;
+ for (int i=0;i<msg.celt_versions_size(); ++i) {
+@@ -172,6 +173,7 @@ void UserInformation::update(const MumbleProto::UserStats &msg) {
+ }
+ qlCELT->setText(qsl.join(tr(", ")));
+ }
++#endif
+ if (msg.has_opus()) {
+ qlOpus->setText(msg.opus() ? tr("Supported") : tr("Not Supported"));
+ }
+diff --git a/src/mumble/mumble_pch.hpp b/src/mumble/mumble_pch.hpp
+index d8c4dbd..2089c94 100644
+--- a/src/mumble/mumble_pch.hpp
++++ b/src/mumble/mumble_pch.hpp
+@@ -52,8 +52,12 @@
+ #define __int64_t __int64
+ #include <sndfile.h>
+ #undef __int64_t
++
++#ifdef USE_CELT
+ #include <celt.h>
+ #include <celt_header.h>
++#endif
++
+ #include <speex/speex.h>
+ #include <speex/speex_header.h>
+ #include <speex/speex_jitter.h>
diff -Nru mumble-1.2.3-348-g317f5a0/debian/patches/15-fix-noise-in-opus-mode mumble-1.2.3-349-g315b5f5/debian/patches/15-fix-noise-in-opus-mode
--- mumble-1.2.3-348-g317f5a0/debian/patches/15-fix-noise-in-opus-mode 1970-01-01 09:30:00.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/patches/15-fix-noise-in-opus-mode 2012-07-09 03:12:05.000000000 +0930
@@ -0,0 +1,31 @@
+diff --git a/src/mumble/AudioOutputSpeech.cpp b/src/mumble/AudioOutputSpeech.cpp
+index 5939fe6..e67fc87 100644
+--- a/src/mumble/AudioOutputSpeech.cpp
++++ b/src/mumble/AudioOutputSpeech.cpp
+@@ -334,8 +334,6 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) {
+ if (umtType == MessageHandler::UDPVoiceOpus) {
+ #ifdef USE_OPUS
+ decodedSamples = opus_decode_float(opusState, qba.isEmpty() ? NULL : reinterpret_cast<const unsigned char *>(qba.constData()), qba.size(), pOut, iAudioBufferSize, 0);
+- iOutputSize = static_cast<unsigned int>(ceilf(static_cast<float>(decodedSamples * iMixerFreq) / static_cast<float>(iSampleRate)));
+- resizeBuffer(iBufferFilled + iOutputSize);
+ #endif
+ } else {
+ if (qba.isEmpty()) {
+@@ -387,7 +385,7 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) {
+ #endif
+ if (umtType == MessageHandler::UDPVoiceOpus) {
+ #ifdef USE_OPUS
+- opus_decode_float(opusState, NULL, 0, pOut, iFrameSize, 0);
++ decodedSamples = opus_decode_float(opusState, NULL, 0, pOut, iFrameSize, 0);
+ #endif
+ } else {
+ speex_decode(dsSpeex, NULL, pOut);
+@@ -410,7 +408,7 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) {
+ }
+ nextframe:
+ spx_uint32_t inlen = decodedSamples;
+- spx_uint32_t outlen = iOutputSize;
++ spx_uint32_t outlen = static_cast<unsigned int>(ceilf(static_cast<float>(decodedSamples * iMixerFreq) / static_cast<float>(iSampleRate)));
+ if (srs && bLastAlive)
+ speex_resampler_process_float(srs, 0, fResamplerBuffer, &inlen, pfBuffer + iBufferFilled, &outlen);
+ iBufferFilled += outlen;
diff -Nru mumble-1.2.3-348-g317f5a0/debian/patches/20-add-opus-threshold-option mumble-1.2.3-349-g315b5f5/debian/patches/20-add-opus-threshold-option
--- mumble-1.2.3-348-g317f5a0/debian/patches/20-add-opus-threshold-option 1970-01-01 09:30:00.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/patches/20-add-opus-threshold-option 2012-07-09 03:12:05.000000000 +0930
@@ -0,0 +1,149 @@
+diff --git a/scripts/murmur.ini b/scripts/murmur.ini
+index f941531..87d49fd 100644
+--- a/scripts/murmur.ini
++++ b/scripts/murmur.ini
+@@ -86,6 +86,10 @@ bandwidth=72000
+ # Maximum number of concurrent clients allowed.
+ users=100
+
++# Amount of users with Opus support needed to force Opus usage, in percent.
++# 0 = Always enable Opus, 100 = enable Opus if it's supported by all clients.
++#opusthreshold=1
++
+ # Regular expression used to validate channel names
+ # (note that you have to escape backslashes with \ )
+ #channelname=[ \\-=\\w\\#\\[\\]\\{\\}\\(\\)\\@\\|]+
+diff --git a/src/murmur/Messages.cpp b/src/murmur/Messages.cpp
+index 0d7a5ed..4b6be72 100644
+--- a/src/murmur/Messages.cpp
++++ b/src/murmur/Messages.cpp
+@@ -391,7 +391,9 @@ void Server::msgAuthenticate(ServerUser *uSource, MumbleProto::Authenticate &msg
+ mpsug.set_positional(qvSuggestPositional.toBool());
+ if (! qvSuggestPushToTalk.isNull())
+ mpsug.set_push_to_talk(qvSuggestPushToTalk.toBool());
+- sendMessage(uSource, mpsug);
++ if (mpsug.ByteSize() > 0) {
++ sendMessage(uSource, mpsug);
++ }
+
+ log(uSource, "Authenticated");
+
+diff --git a/src/murmur/Meta.cpp b/src/murmur/Meta.cpp
+index dc55b3a..4333ae2 100644
+--- a/src/murmur/Meta.cpp
++++ b/src/murmur/Meta.cpp
+@@ -81,6 +81,8 @@ MetaParams::MetaParams() {
+ uiUid = uiGid = 0;
+ #endif
+
++ iOpusThreshold = 1;
++
+ qrUserName = QRegExp(QLatin1String("[-=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.]+"));
+ qrChannelName = QRegExp(QLatin1String("[ \\-=\\w\\#\\[\\]\\{\\}\\(\\)\\@\\|]+"));
+
+@@ -283,6 +285,8 @@ void MetaParams::read(QString fname) {
+ if (qvSuggestPushToTalk.toString().trimmed().isEmpty())
+ qvSuggestPushToTalk = QVariant();
+
++ iOpusThreshold = qsSettings->value("opusthreshold", iOpusThreshold).toInt();
++
+ #ifdef Q_OS_UNIX
+ qsName = qsSettings->value("uname").toString();
+ if (geteuid() == 0) {
+@@ -441,6 +445,7 @@ void MetaParams::read(QString fname) {
+ qmConfig.insert(QLatin1String("suggestversion"), qvSuggestVersion.isNull() ? QString() : qvSuggestVersion.toString());
+ qmConfig.insert(QLatin1String("suggestpositional"), qvSuggestPositional.isNull() ? QString() : qvSuggestPositional.toString());
+ qmConfig.insert(QLatin1String("suggestpushtotalk"), qvSuggestPushToTalk.isNull() ? QString() : qvSuggestPushToTalk.toString());
++ qmConfig.insert(QLatin1String("opusthreshold"), QString::number(iOpusThreshold));
+ }
+
+ Meta::Meta() {
+diff --git a/src/murmur/Meta.h b/src/murmur/Meta.h
+index 7ed0595..669e76c 100644
+--- a/src/murmur/Meta.h
++++ b/src/murmur/Meta.h
+@@ -60,6 +60,7 @@ struct MetaParams {
+ bool bRememberChan;
+ int iMaxTextMessageLength;
+ int iMaxImageMessageLength;
++ int iOpusThreshold;
+ bool bAllowHTML;
+ QString qsPassword;
+ QString qsWelcomeText;
+diff --git a/src/murmur/Server.cpp b/src/murmur/Server.cpp
+index 547d699..f015bac 100644
+--- a/src/murmur/Server.cpp
++++ b/src/murmur/Server.cpp
+@@ -331,6 +331,7 @@ void Server::readParams() {
+ qvSuggestVersion = Meta::mp.qvSuggestVersion;
+ qvSuggestPositional = Meta::mp.qvSuggestPositional;
+ qvSuggestPushToTalk = Meta::mp.qvSuggestPushToTalk;
++ iOpusThreshold = Meta::mp.iOpusThreshold;
+
+ QString qsHost = getConf("host", QString()).toString();
+ if (! qsHost.isEmpty()) {
+@@ -393,6 +394,8 @@ void Server::readParams() {
+ if (qvSuggestPushToTalk.toString().trimmed().isEmpty())
+ qvSuggestPushToTalk = QVariant();
+
++ iOpusThreshold = getConf("opusthreshold", iOpusThreshold).toInt();
++
+ qrUserName=QRegExp(getConf("username", qrUserName.pattern()).toString());
+ qrChannelName=QRegExp(getConf("channelname", qrChannelName.pattern()).toString());
+ }
+@@ -503,6 +506,8 @@ void Server::setLiveConf(const QString &key, const QString &value) {
+ qvSuggestPositional = ! v.isNull() ? (v.isEmpty() ? QVariant() : v) : Meta::mp.qvSuggestPositional;
+ else if (key == "suggestpushtotalk")
+ qvSuggestPushToTalk = ! v.isNull() ? (v.isEmpty() ? QVariant() : v) : Meta::mp.qvSuggestPushToTalk;
++ else if (key == "opusthreshold")
++ iOpusThreshold = i ? i : Meta::mp.iOpusThreshold;
+ }
+
+ #ifdef USE_BONJOUR
+@@ -1648,8 +1653,9 @@ void Server::recheckCodecVersions() {
+
+ if (! users)
+ return;
+-
+- bool allHasOpus = (opus == users);
++
++ // Enable Opus if the number of users with Opus is higher than the threshold
++ bool enableOpus = ((opus * 100 / users) >= iOpusThreshold);
+
+ // Find the best possible codec most users support
+ int version = 0;
+@@ -1680,17 +1686,17 @@ void Server::recheckCodecVersions() {
+ iCodecAlpha = version;
+ else
+ iCodecBeta = version;
+- } else if (bOpus == allHasOpus) {
++ } else if (bOpus == enableOpus) {
+ return;
+ }
+-
+- bOpus = allHasOpus;
+-
++
++ bOpus = enableOpus;
++
+ MumbleProto::CodecVersion mpcv;
+ mpcv.set_alpha(iCodecAlpha);
+ mpcv.set_beta(iCodecBeta);
+ mpcv.set_prefer_alpha(bPreferAlpha);
+- mpcv.set_opus(allHasOpus);
++ mpcv.set_opus(bOpus);
+ sendAll(mpcv);
+
+ log(QString::fromLatin1("CELT codec switch %1 %2 (prefer %3) (Opus %4)").arg(iCodecAlpha,0,16).arg(iCodecBeta,0,16).arg(bPreferAlpha ? iCodecAlpha : iCodecBeta,0,16).arg(bOpus));
+diff --git a/src/murmur/Server.h b/src/murmur/Server.h
+index 788eb89..66025de 100644
+--- a/src/murmur/Server.h
++++ b/src/murmur/Server.h
+@@ -132,6 +132,7 @@ class Server : public QThread {
+ bool bRememberChan;
+ int iMaxTextMessageLength;
+ int iMaxImageMessageLength;
++ int iOpusThreshold;
+ bool bAllowHTML;
+ QString qsPassword;
+ QString qsWelcomeText;
diff -Nru mumble-1.2.3-348-g317f5a0/debian/patches/25-add-codec-warnings mumble-1.2.3-349-g315b5f5/debian/patches/25-add-codec-warnings
--- mumble-1.2.3-348-g317f5a0/debian/patches/25-add-codec-warnings 1970-01-01 09:30:00.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/patches/25-add-codec-warnings 2012-07-09 03:12:05.000000000 +0930
@@ -0,0 +1,47 @@
+diff --git a/src/murmur/Messages.cpp b/src/murmur/Messages.cpp
+index 4b6be72..6310f89 100644
+--- a/src/murmur/Messages.cpp
++++ b/src/murmur/Messages.cpp
+@@ -201,6 +201,7 @@ void Server::msgAuthenticate(ServerUser *uSource, MumbleProto::Authenticate &msg
+ mpcrypt.set_client_nonce(std::string(reinterpret_cast<const char *>(uSource->csCrypt.decrypt_iv), AES_BLOCK_SIZE));
+ sendMessage(uSource, mpcrypt);
+
++ bool fake_celt_support = false;
+ if (msg.celt_versions_size() > 0) {
+ for (int i=0;i < msg.celt_versions_size(); ++i)
+ uSource->qlCodecs.append(msg.celt_versions(i));
+@@ -217,6 +219,12 @@ void Server::msgAuthenticate(ServerUser *uSource, MumbleProto::Authenticate &msg
+ mpcv.set_opus(bOpus);
+ sendMessage(uSource, mpcv);
+
++ if (!bOpus && uSource->bOpus && fake_celt_support) {
++ sendTextMessage(NULL, uSource, false, QLatin1String("<strong>WARNING:</strong> Your client doesn't support the CELT codec, you won't be able to talk to or hear most clients. Please make sure your client was built with CELT support."));
++ } else if (bOpus && !uSource->bOpus) {
++ sendTextMessage(NULL, uSource, false, QLatin1String("<strong>WARNING:</strong> Your client doesn't support the Opus codec, you won't be able to talk or hear anyone. Please upgrade to a client with Opus support."));
++ }
++
+ // Transmit channel tree
+ QQueue<Channel *> q;
+ QSet<Channel *> chans;
+diff --git a/src/murmur/Server.cpp b/src/murmur/Server.cpp
+index f015bac..b1700fd 100644
+--- a/src/murmur/Server.cpp
++++ b/src/murmur/Server.cpp
+@@ -773,6 +773,8 @@ void Server::run() {
+ case MessageHandler::UDPVoiceSpeex:
+ case MessageHandler::UDPVoiceCELTAlpha:
+ case MessageHandler::UDPVoiceCELTBeta:
++ if (bOpus)
++ break;
+ case MessageHandler::UDPVoiceOpus: {
+ u->bUdp = true;
+ processMsg(u, buffer, len);
+@@ -1275,6 +1277,8 @@ void Server::message(unsigned int uiType, const QByteArray &qbaMsg, ServerUser *
+ case MessageHandler::UDPVoiceCELTAlpha:
+ case MessageHandler::UDPVoiceCELTBeta:
+ case MessageHandler::UDPVoiceSpeex:
++ if (bOpus)
++ break;
+ case MessageHandler::UDPVoiceOpus:
+ processMsg(u, buffer, l);
+ break;
diff -Nru mumble-1.2.3-348-g317f5a0/debian/patches/series mumble-1.2.3-349-g315b5f5/debian/patches/series
--- mumble-1.2.3-348-g317f5a0/debian/patches/series 2012-05-25 04:03:03.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/patches/series 2012-07-09 03:12:05.000000000 +0930
@@ -1,2 +1,6 @@
02-reject-with-ip-in-log.diff
05-lsb-description.diff
+10-use-celt-guard
+15-fix-noise-in-opus-mode
+20-add-opus-threshold-option
+25-add-codec-warnings
diff -Nru mumble-1.2.3-348-g317f5a0/debian/rules mumble-1.2.3-349-g315b5f5/debian/rules
--- mumble-1.2.3-348-g317f5a0/debian/rules 2012-05-25 04:03:03.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/rules 2012-07-09 03:12:05.000000000 +0930
@@ -18,12 +18,14 @@
configure: configure-stamp
configure-stamp:
dh_testdir
- qmake-qt4 -recursive main.pro \
+ qmake-qt4 QMAKE_CXX=g++-4.6 QMAKE_CC=gcc-4.6 -recursive main.pro \
CONFIG*=release \
CONFIG*=symbols \
CONFIG*=no-embed-qt-translations \
CONFIG*=packaged \
CONFIG*=quiet-build-log \
+ CONFIG*=no-bundled-speex \
+ CONFIG*=no-bundled-celt \
DEFINES*=NO_UPDATE_CHECK \
DEFINES*=PLUGIN_PATH=/usr/lib/mumble \
DEFINES*=MUMBLE_VERSION=$(MUMBLE_DEB_VERSION) \
@@ -31,7 +33,7 @@
DEFINES*=HAVE_ENDIAN_H
touch configure-stamp
-build: build-arch build-indep
+build: build-arch
build-arch: build-arch-stamp
@@ -40,14 +42,13 @@
slice2html -I/usr/share/Ice-3.4.1/slice -I/usr/share/Ice-3.3.1/slice -I/usr/share/Ice/slice src/murmur/Murmur.ice --output-dir Ice
touch $@
-build-indep: build-indep-stamp
+build-indep:
-build-indep-stamp:
clean:
dh_testdir
dh_testroot
- rm -f build-arch-stamp build-indep-stamp configure-stamp
+ rm -f build-arch-stamp configure-stamp
[ ! -f Makefile ] || $(MAKE) distclean
[ ! -d gendoc ] || rm -rf Ice
rm -rf release debug
@@ -56,15 +57,7 @@
debconf-updatepo
dh_clean
-install: install-indep install-arch
-
-install-indep:
- dh_testdir
- dh_testroot
- dh_prep
- dh_installdirs -i
- dh_install -i
- install -m 0755 -D ./scripts/weblist.pl $(CURDIR)/debian/mumble-server-web/usr/share/mumble-server-web/www/weblist.cgi
+install: install-arch
install-arch:
dh_testdir
@@ -95,22 +88,19 @@
dh_strip --dbg-package=mumble-dbg
dh_compress
dh_fixperms
- dh_perl $(CURDIR)/debian/mumble-server-web/usr/lib/cgi-bin/mumble-server
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
-binary-indep: build-indep install-indep
- $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
+binary-indep:
binary-arch: build-arch install-arch
$(MAKE) -f debian/rules DH_OPTIONS=-s binary-common
-binary: binary-indep binary-arch
-
-get-orig-source:
- wget -O $(SOURCE_DIR)/mumble_$(VERSION).orig.tar.gz http://mumble.info/snapshot/mumble-$(VERSION).tar.gz
+binary: binary-arch
-.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch configure
+.PHONY: clean configure build build-arch build-indep \
+ binary binary-arch binary-indep binary-common \
+ install install-arch
diff -Nru mumble-1.2.3-348-g317f5a0/debian/watch mumble-1.2.3-349-g315b5f5/debian/watch
--- mumble-1.2.3-348-g317f5a0/debian/watch 2012-05-25 04:03:03.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/debian/watch 1970-01-01 09:30:00.000000000 +0930
@@ -1,2 +0,0 @@
-version=3
-http://sf.net/mumble/mumble-(.*)\.tar\.gz
diff -Nru mumble-1.2.3-348-g317f5a0/src/mumble/mumble.pro mumble-1.2.3-349-g315b5f5/src/mumble/mumble.pro
--- mumble-1.2.3-348-g317f5a0/src/mumble/mumble.pro 2012-05-20 21:30:56.000000000 +0930
+++ mumble-1.2.3-349-g315b5f5/src/mumble/mumble.pro 2012-06-04 03:42:20.000000000 +0930
@@ -77,10 +77,15 @@
DEFINES *= NO_VORBIS_RECORDING
}
-CONFIG(opus) {
- INCLUDEPATH *= ../../opus-src/celt ../../opus-src/include ../../opus-src/src ../../opus-build/src
- DEFINES *= USE_OPUS
- LIBS *= -lopus
+unix:system(pkg-config --exists opus) {
+ PKGCONFIG *= opus
+ DEFINES *= USE_OPUS
+} else {
+ CONFIG(opus) {
+ INCLUDEPATH *= ../../opus-src/celt ../../opus-src/include ../../opus-src/src ../../opus-build/src
+ DEFINES *= USE_OPUS
+ LIBS *= -lopus
+ }
}
win32 {
Reply to: