public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: media-sound/mixxx/, media-sound/mixxx/files/
@ 2017-01-18 23:36 Lars Wendler
  0 siblings, 0 replies; 7+ messages in thread
From: Lars Wendler @ 2017-01-18 23:36 UTC (permalink / raw
  To: gentoo-commits

commit:     8a278563748e136559a6cc193ae3895c6412c882
Author:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
AuthorDate: Wed Jan 18 22:04:49 2017 +0000
Commit:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
CommitDate: Wed Jan 18 23:36:06 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8a278563

media-sound/mixxx: Fixed compilation with >=media-libs/chromaprint-1.4

Fixes Gentoo bug #604528

Package-Manager: Portage-2.3.3, Repoman-2.3.1

 .../mixxx/files/mixxx-2.0.0-chromaprint-1.4.patch  | 40 ++++++++++++++++++++++
 media-sound/mixxx/mixxx-2.0.0-r3.ebuild            |  3 +-
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-chromaprint-1.4.patch b/media-sound/mixxx/files/mixxx-2.0.0-chromaprint-1.4.patch
new file mode 100644
index 00000000..77827f3
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.0.0-chromaprint-1.4.patch
@@ -0,0 +1,40 @@
+Backported chromaprint-1.4 API changes based on the fix suggested in:
+https://github.com/mixxxdj/mixxx/pull/1073
+
+and the work done by Charlie Gehlin in:
+https://bugs.gentoo.org/604528
+
+--- mixxx-2.0.0/src/musicbrainz/chromaprinter.cpp
++++ mixxx-2.0.0/src/musicbrainz/chromaprinter.cpp
+@@ -25,6 +25,16 @@
+ 
+ QString ChromaPrinter::calcFingerPrint(const Mixxx::SoundSourcePointer& pSoundSource) {
+ 
++    // Type declarations of *fprint and *encoded pointers need to account for Chromaprint API version
++    // (void* -> uint32_t*) and (void* -> char*) changed in versions v1.4.0 or later -- alyptik 12/2016
++    #if (CHROMAPRINT_VERSION_MINOR > 3) || (CHROMAPRINT_VERSION_MAJOR > 1)
++	typedef uint32_t* uint32_p;
++	typedef char* char_p;
++    #else
++	typedef void* uint32_p;
++	typedef void* char_p;
++    #endif
++
+     // this is worth 2min of audio, multiply by 2 because we have 2 channels
+     // AcoustID only stores a fingerprint for the first two minutes of a song
+     // on their server so we need only a fingerprint of the first two minutes
+@@ -57,12 +67,12 @@
+     }
+     chromaprint_finish(ctx);
+ 
+-    void* fprint = NULL;
++    uint32_p fprint = NULL;
+     int size = 0;
+     int ret = chromaprint_get_raw_fingerprint(ctx, &fprint, &size);
+     QByteArray fingerprint;
+     if (ret == 1) {
+-        void* encoded = NULL;
++        char_p encoded = NULL;
+         int encoded_size = 0;
+         chromaprint_encode_fingerprint(fprint, size,
+                                        CHROMAPRINT_ALGORITHM_DEFAULT,

diff --git a/media-sound/mixxx/mixxx-2.0.0-r3.ebuild b/media-sound/mixxx/mixxx-2.0.0-r3.ebuild
index 3856e2e..c9ae13a 100644
--- a/media-sound/mixxx/mixxx-2.0.0-r3.ebuild
+++ b/media-sound/mixxx/mixxx-2.0.0-r3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2016 Gentoo Foundation
+# Copyright 1999-2017 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
@@ -70,6 +70,7 @@ PATCHES=(
 	"${FILESDIR}"/${PN}-2.0.0-docs.patch
 	"${DISTDIR}"/${P}-ffmpeg30.patch
 	"${DISTDIR}"/${P}-ffmpeg31.patch
+	"${FILESDIR}"/${P}-chromaprint-1.4.patch #604528
 )
 
 src_prepare() {


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-sound/mixxx/, media-sound/mixxx/files/
@ 2017-05-06 22:51 Lars Wendler
  0 siblings, 0 replies; 7+ messages in thread
From: Lars Wendler @ 2017-05-06 22:51 UTC (permalink / raw
  To: gentoo-commits

commit:     13cb9bf35c722ff7207da51ecdd16d24df710aab
Author:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
AuthorDate: Sat May  6 22:50:37 2017 +0000
Commit:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
CommitDate: Sat May  6 22:51:03 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=13cb9bf3

media-sound/mixxx: Revbump to fix compilation with gcc-6 (bug #595090).

This revbump also comes with a couple of fixes backported and provided
by David Guglielmi (sunny-overlay) in bug #608430.

Package-Manager: Portage-2.3.5, Repoman-2.3.2

 ...nate-unnecessary-heap-allocation-of-qtime.patch |  55 ++++
 ...xx-2.0.0-fix-formatting-of-time-durations.patch |  24 ++
 ...x-2.0.0-fix-formatting-of-time-durations2.patch | 139 ++++++++++
 ...-2.0.0-fix-missing-pointer-initialization.patch | 271 ++++++++++++++++++++
 media-sound/mixxx/files/mixxx-2.0.0-gcc62.patch    |  24 ++
 ...n-of-time-formatseconds-into-dot-cpp-file.patch |  88 +++++++
 ...xx-2.0.0-rmx2-backport-controller-scripts.patch | 280 +++++++++++++++++++++
 media-sound/mixxx/mixxx-2.0.0-r4.ebuild            | 140 +++++++++++
 8 files changed, 1021 insertions(+)

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-eliminate-unnecessary-heap-allocation-of-qtime.patch b/media-sound/mixxx/files/mixxx-2.0.0-eliminate-unnecessary-heap-allocation-of-qtime.patch
new file mode 100644
index 00000000000..04538a01e15
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.0.0-eliminate-unnecessary-heap-allocation-of-qtime.patch
@@ -0,0 +1,55 @@
+diff -dNur a/src/analyserwaveform.cpp b/src/analyserwaveform.cpp
+--- a/src/analyserwaveform.cpp	2015-12-29 17:10:41.000000000 +0100
++++ b/src/analyserwaveform.cpp	2017-02-04 21:12:30.127952910 +0100
+@@ -1,6 +1,3 @@
+-#include <QImage>
+-#include <QtDebug>
+-#include <QTime>
+ #include <QtDebug>
+ 
+ #include "analyserwaveform.h"
+@@ -40,7 +37,6 @@
+         }
+     }
+ 
+-    m_timer = new QTime();
+     m_analysisDao = new AnalysisDao(m_database, pConfig);
+ }
+ 
+@@ -48,14 +44,13 @@
+     qDebug() << "AnalyserWaveform::~AnalyserWaveform()";
+     destroyFilters();
+     m_database.close();
+-    delete m_timer;
+     delete m_analysisDao;
+ }
+ 
+ bool AnalyserWaveform::initialise(TrackPointer tio, int sampleRate, int totalSamples) {
+     m_skipProcessing = false;
+ 
+-    m_timer->start();
++    m_timer.start();
+ 
+     if (totalSamples == 0) {
+         qWarning() << "AnalyserWaveform::initialise - no waveform/waveform summary";
+@@ -320,7 +315,7 @@
+ #endif
+ 
+     qDebug() << "Waveform generation for track" << tio->getId() << "done"
+-             << m_timer->elapsed()/1000.0 << "s";
++             << m_timer.elapsed()/1000.0 << "s";
+ }
+ 
+ void AnalyserWaveform::storeIfGreater(float* pDest, float source) {
+diff -dNur a/src/analyserwaveform.h b/src/analyserwaveform.h
+--- a/src/analyserwaveform.h	2015-12-29 17:10:41.000000000 +0100
++++ b/src/analyserwaveform.h	2017-02-04 21:12:45.367713395 +0100
+@@ -171,7 +171,7 @@
+     EngineFilterIIRBase* m_filter[FilterCount];
+     std::vector<float> m_buffers[FilterCount];
+ 
+-    QTime* m_timer;
++    QTime m_timer;
+     QSqlDatabase m_database;
+     AnalysisDao* m_analysisDao;
+ 

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-fix-formatting-of-time-durations.patch b/media-sound/mixxx/files/mixxx-2.0.0-fix-formatting-of-time-durations.patch
new file mode 100644
index 00000000000..654c01f53b9
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.0.0-fix-formatting-of-time-durations.patch
@@ -0,0 +1,24 @@
+From 76c53b0f0a2be7b5cf85fa523f3521a5725affb2 Mon Sep 17 00:00:00 2001
+From: Uwe Klotz <uwe_klotz@web.de>
+Date: Fri, 8 Jan 2016 18:22:33 +0100
+Subject: [PATCH] Fix formatting of time durations
+
+---
+ src/util/time.h | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/util/time.h b/src/util/time.h
+index 29187ad..7b38eb4 100644
+--- a/src/util/time.h
++++ b/src/util/time.h
+@@ -75,7 +75,9 @@ class Time {
+         const int days = static_cast<int>(dSeconds) / kSecondsPerDay;
+         dSeconds -= days * kSecondsPerDay;
+ 
+-        QTime t = QTime().addMSecs(dSeconds * kMillisPerSecond);
++        // NOTE(uklotzde): Time() constructs a 'null' object, but
++        // we need 'zero' here.
++        QTime t = QTime(0, 0).addMSecs(dSeconds * kMillisPerSecond);
+ 
+         QString formatString =
+                 (days > 0 ? (QString::number(days) %

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-fix-formatting-of-time-durations2.patch b/media-sound/mixxx/files/mixxx-2.0.0-fix-formatting-of-time-durations2.patch
new file mode 100644
index 00000000000..f8c041e4043
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.0.0-fix-formatting-of-time-durations2.patch
@@ -0,0 +1,139 @@
+diff -dNur a/src/library/basesqltablemodel.cpp b/src/library/basesqltablemodel.cpp
+--- a/src/library/basesqltablemodel.cpp	2015-12-29 17:10:41.000000000 +0100
++++ b/src/library/basesqltablemodel.cpp	2017-02-04 21:33:39.403861857 +0100
+@@ -559,7 +559,7 @@
+             if (column == fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DURATION)) {
+                 int duration = value.toInt();
+                 if (duration > 0) {
+-                    value = Time::formatSeconds(duration, false);
++                    value = Time::formatSeconds(duration);
+                 } else {
+                     value = QString();
+                 }
+diff -dNur a/src/library/browse/browsethread.cpp b/src/library/browse/browsethread.cpp
+--- a/src/library/browse/browsethread.cpp	2015-12-29 17:10:41.000000000 +0100
++++ b/src/library/browse/browsethread.cpp	2017-02-04 21:32:23.605066421 +0100
+@@ -185,8 +185,7 @@
+         item->setData(item->text(), Qt::UserRole);
+         row_data.insert(COLUMN_COMMENT, item);
+ 
+-        QString duration = Time::formatSeconds(qVariantValue<int>(
+-                tio.getDuration()), false);
++        QString duration = Time::formatSeconds(tio.getDuration());
+         item = new QStandardItem(duration);
+         item->setToolTip(item->text());
+         item->setData(item->text(), Qt::UserRole);
+diff -dNur a/src/library/cratefeature.cpp b/src/library/cratefeature.cpp
+--- a/src/library/cratefeature.cpp	2015-12-29 17:10:41.000000000 +0100
++++ b/src/library/cratefeature.cpp	2017-02-04 21:30:54.962474898 +0100
+@@ -493,7 +493,7 @@
+             crateListTableModel.index(row, durationColumn)).toInt();
+         m_crateList.append(qMakePair(id, QString("%1 (%2) %3")
+                                      .arg(name, QString::number(count),
+-                                          Time::formatSeconds(duration, false))));
++                                          Time::formatSeconds(duration))));
+     }
+ }
+ 
+diff -dNur a/src/library/playlistfeature.cpp b/src/library/playlistfeature.cpp
+--- a/src/library/playlistfeature.cpp	2015-12-29 17:10:41.000000000 +0100
++++ b/src/library/playlistfeature.cpp	2017-02-04 21:33:06.920378091 +0100
+@@ -168,7 +168,7 @@
+             playlistTableModel.index(row, durationColumn)).toInt();
+         m_playlistList.append(qMakePair(id, QString("%1 (%2) %3")
+                                         .arg(name, QString::number(count),
+-                                             Time::formatSeconds(duration, false))));
++                                             Time::formatSeconds(duration))));
+     }
+ }
+ 
+diff -dNur a/src/trackinfoobject.cpp b/src/trackinfoobject.cpp
+--- a/src/trackinfoobject.cpp	2015-12-29 17:10:41.000000000 +0100
++++ b/src/trackinfoobject.cpp	2017-02-04 21:42:36.423323807 +0100
+@@ -293,7 +293,7 @@
+     int iDuration = m_iDuration;
+     lock.unlock();
+ 
+-    return Time::formatSeconds(iDuration, false);
++    return Time::formatSeconds(iDuration);
+ }
+ 
+ void TrackInfoObject::setLocation(const QString& location) {
+diff -dNur a/src/util/time.cpp b/src/util/time.cpp
+--- a/src/util/time.cpp	2017-02-04 21:29:44.439595305 +0100
++++ b/src/util/time.cpp	2017-02-04 21:37:54.739803100 +0100
+@@ -1,5 +1,7 @@
+ #include "util/time.h"
+ 
++#include "util/assert.h"
++
+ // static
+ LLTIMER Time::s_timer;
+ // static
+@@ -8,7 +10,7 @@
+ qint64 Time::s_testElapsed_nsecs = 0;
+ 
+ // static
+-QString Time::formatSeconds(double dSeconds, bool showCentis) {
++QString Time::formatSeconds(double dSeconds, Precision precision) {
+     if (dSeconds < 0) {
+         return "?";
+     }
+@@ -24,13 +26,14 @@
+             (days > 0 ? (QString::number(days) %
+                          QLatin1String("'d', ")) : QString()) %
+             QLatin1String(days > 0 || t.hour() > 0 ? "hh:mm:ss" : "mm:ss") %
+-            QLatin1String(showCentis ? ".zzz" : "");
++            QLatin1String(Precision::SECONDS == precision ? "" : ".zzz");
+ 
+     QString timeString = t.toString(formatString);
+ 
+     // The format string gives us milliseconds but we want
+     // centiseconds. Slice one character off.
+-    if (showCentis) {
++    if (Precision::CENTISECONDS == precision) {
++        DEBUG_ASSERT(1 <= timeString.length());
+         timeString = timeString.left(timeString.length() - 1);
+     }
+ 
+diff -dNur a/src/util/time.h b/src/util/time.h
+--- a/src/util/time.h	2017-02-04 21:29:44.439595305 +0100
++++ b/src/util/time.h	2017-02-04 21:41:01.476833822 +0100
+@@ -55,10 +55,17 @@
+         s_testElapsed_nsecs = elapsed * 1000000;
+     }
+ 
+-    // The standard way of formatting a time in seconds. Used for display of
+-    // track duration, etc. showCentis indicates whether to include
+-    // centisecond-precision or to round to the nearest second.
+-    static QString formatSeconds(double dSeconds, bool showCentis);
++    enum class Precision {
++        SECONDS,
++        CENTISECONDS,
++        MILLISECONDS
++    };
++
++    // The standard way of formatting a time in seconds. Used for display
++    // of track duration, etc.
++    static QString formatSeconds(
++            double dSeconds,
++            Precision precision = Time::Precision::SECONDS);
+ 
+   private:
+     static LLTIMER s_timer;
+diff -dNur a/src/widget/wnumberpos.cpp b/src/widget/wnumberpos.cpp
+--- a/src/widget/wnumberpos.cpp	2015-12-29 17:10:41.000000000 +0100
++++ b/src/widget/wnumberpos.cpp	2017-02-04 21:41:57.023950430 +0100
+@@ -92,10 +92,10 @@
+     QString valueString;
+     if (valueMillis >= 0) {
+         valueString = m_skinText % Time::formatSeconds(
+-                valueMillis / Time::kMillisPerSecond, true);
++                valueMillis / Time::kMillisPerSecond, Time::Precision::MILLISECONDS);
+     } else {
+         valueString = m_skinText % QLatin1String("-") % Time::formatSeconds(
+-                -valueMillis / Time::kMillisPerSecond, true);
++                -valueMillis / Time::kMillisPerSecond, Time::Precision::CENTISECONDS);
+     }
+     setText(valueString);
+ }

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-fix-missing-pointer-initialization.patch b/media-sound/mixxx/files/mixxx-2.0.0-fix-missing-pointer-initialization.patch
new file mode 100644
index 00000000000..3364995ce4f
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.0.0-fix-missing-pointer-initialization.patch
@@ -0,0 +1,271 @@
+diff -dNur a/src/analyserwaveform.cpp b/src/analyserwaveform.cpp
+--- a/src/analyserwaveform.cpp	2017-02-04 21:14:33.266016824 +0100
++++ b/src/analyserwaveform.cpp	2017-02-04 21:19:09.205671982 +0100
+@@ -11,8 +11,8 @@
+ 
+ AnalyserWaveform::AnalyserWaveform(ConfigObject<ConfigValue>* pConfig) :
+         m_skipProcessing(false),
+-        m_waveformData(NULL),
+-        m_waveformSummaryData(NULL),
++        m_waveformData(nullptr),
++        m_waveformSummaryData(nullptr),
+         m_stride(0, 0),
+         m_currentStride(0),
+         m_currentSummaryStride(0) {
+@@ -37,14 +37,13 @@
+         }
+     }
+ 
+-    m_analysisDao = new AnalysisDao(m_database, pConfig);
++    m_pAnalysisDao = std::make_unique<AnalysisDao>(m_database, pConfig);
+ }
+ 
+ AnalyserWaveform::~AnalyserWaveform() {
+     qDebug() << "AnalyserWaveform::~AnalyserWaveform()";
+     destroyFilters();
+     m_database.close();
+-    delete m_analysisDao;
+ }
+ 
+ bool AnalyserWaveform::initialise(TrackPointer tio, int sampleRate, int totalSamples) {
+@@ -115,7 +114,7 @@
+ 
+     if (trackId != -1 && (missingWaveform || missingWavesummary)) {
+         QList<AnalysisDao::AnalysisInfo> analyses =
+-                m_analysisDao->getAnalysesForTrack(trackId);
++                m_pAnalysisDao->getAnalysesForTrack(trackId);
+ 
+         QListIterator<AnalysisDao::AnalysisInfo> it(analyses);
+         while (it.hasNext()) {
+@@ -130,7 +129,7 @@
+                     missingWaveform = false;
+                 } else if (vc != WaveformFactory::VC_KEEP) {
+                     // remove all other Analysis except that one we should keep
+-                    m_analysisDao->deleteAnalysis(analysis.analysisId);
++                    m_pAnalysisDao->deleteAnalysis(analysis.analysisId);
+                 }
+             } if (analysis.type == AnalysisDao::TYPE_WAVESUMMARY) {
+                 vc = WaveformFactory::waveformSummaryVersionToVersionClass(analysis.version);
+@@ -140,7 +139,7 @@
+                     missingWavesummary = false;
+                 } else if (vc != WaveformFactory::VC_KEEP) {
+                     // remove all other Analysis except that one we should keep
+-                    m_analysisDao->deleteAnalysis(analysis.analysisId);
++                    m_pAnalysisDao->deleteAnalysis(analysis.analysisId);
+                 }
+             }
+         }
+@@ -273,13 +272,13 @@
+     tio->setWaveform(ConstWaveformPointer());
+     // Since clear() could delete the waveform, clear our pointer to the
+     // waveform's vector data first.
+-    m_waveformData = NULL;
++    m_waveformData = nullptr;
+     m_waveform.clear();
+ 
+     tio->setWaveformSummary(ConstWaveformPointer());
+     // Since clear() could delete the waveform, clear our pointer to the
+     // waveform's vector data first.
+-    m_waveformSummaryData = NULL;
++    m_waveformSummaryData = nullptr;
+     m_waveformSummary.clear();
+ }
+ 
+@@ -295,7 +294,7 @@
+         m_waveform->setDescription(WaveformFactory::currentWaveformDescription());
+         // Since clear() could delete the waveform, clear our pointer to the
+         // waveform's vector data first.
+-        m_waveformData = NULL;
++        m_waveformData = nullptr;
+         m_waveform.clear();
+     }
+ 
+@@ -306,7 +305,7 @@
+         m_waveformSummary->setDescription(WaveformFactory::currentWaveformSummaryDescription());
+         // Since clear() could delete the waveform, clear our pointer to the
+         // waveform's vector data first.
+-        m_waveformSummaryData = NULL;
++        m_waveformSummaryData = nullptr;
+         m_waveformSummary.clear();
+     }
+ 
+diff -dNur a/src/analyserwaveform.h b/src/analyserwaveform.h
+--- a/src/analyserwaveform.h	2017-02-04 21:14:33.266016824 +0100
++++ b/src/analyserwaveform.h	2017-02-04 21:20:17.308598419 +0100
+@@ -4,12 +4,14 @@
+ #include <QTime>
+ #include <QImage>
+ #include <QSqlDatabase>
++
+ #include <limits>
+ 
+ #include "configobject.h"
+ #include "analyser.h"
+ #include "waveform/waveform.h"
+ #include "util/math.h"
++#include "util/memory.h"
+ 
+ //NOTS vrince some test to segment sound, to apply color in the waveform
+ //#define TEST_HEAT_MAP
+@@ -173,7 +175,7 @@
+ 
+     QTime m_timer;
+     QSqlDatabase m_database;
+-    AnalysisDao* m_analysisDao;
++    std::unique_ptr<AnalysisDao> m_pAnalysisDao;
+ 
+ #ifdef TEST_HEAT_MAP
+     QImage* test_heatMap;
+diff -dNur a/src/util/memory.h b/src/util/memory.h
+--- a/src/util/memory.h	1970-01-01 01:00:00.000000000 +0100
++++ b/src/util/memory.h	2017-02-04 22:19:41.846922929 +0100
+@@ -0,0 +1,149 @@
++// Taken from https://github.com/bstreiff/cppbits
++// Thank you Brandon Streiff!
++
++// Implementation of C++14's make_unique for C++11 compilers.
++//
++// This has been tested with:
++// - MSVC 11.0 (Visual Studio 2012)
++// - gcc 4.6.3
++// - Xcode 4.4 (with clang "4.0")
++//
++// It is based off an implementation proposed by Stephan T. Lavavej for
++// inclusion in the C++14 standard:
++//    http://isocpp.org/files/papers/N3656.txt
++// Where appropriate, it borrows the use of MSVC's _VARIADIC_EXPAND_0X macro
++// machinery to compensate for lack of variadic templates.
++//
++// This file injects make_unique into the std namespace, which I acknowledge is
++// technically forbidden ([C++11: 17.6.4.2.2.1/1]), but is necessary in order
++// to have syntax compatibility with C++14.
++//
++// I perform compiler version checking for MSVC, gcc, and clang to ensure that
++// we don't add make_unique if it is already there (instead, we include
++// <memory> to get the compiler-provided one). You can override the compiler
++// version checking by defining the symbol COMPILER_SUPPORTS_MAKE_UNIQUE.
++//
++//
++// ===============================================================================
++// This file is released into the public domain. See LICENCE for more information.
++// ===============================================================================
++
++#ifndef MIXXX_UTIL_MEMORY_H
++#define MIXXX_UTIL_MEMORY_H
++
++// If user hasn't specified COMPILER_SUPPORTS_MAKE_UNIQUE then try to figure out
++// based on compiler version if std::make_unique is provided.
++#if !defined(COMPILER_SUPPORTS_MAKE_UNIQUE)
++   // Compiling with -std=c++11 sets __cplusplus=201103L and disables
++   // std::make_unique() from C++14! We need to take this into account.
++   #define CPLUSPLUS_SUPPORTS_MAKE_UNIQUE (__cplusplus > 201103L)
++   #if defined(_MSC_VER)
++      // std::make_unique was added in MSVC 12.0
++      #if _MSC_VER >= 1800 // MSVC 12.0 (Visual Studio 2013)
++         #define COMPILER_SUPPORTS_MAKE_UNIQUE
++      #endif
++   #elif defined(__clang__)
++      // std::make_unique was added in clang 3.4, but not until Xcode 6.
++      // Annoyingly, Apple makes the clang version defines match the version
++      // of Xcode, not the version of clang.
++      #define CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
++      #if defined(__APPLE__) && CLANG_VERSION >= 60000 && CPLUSPLUS_SUPPORTS_MAKE_UNIQUE
++         #define COMPILER_SUPPORTS_MAKE_UNIQUE
++      #elif !defined(__APPLE__) && CLANG_VERSION >= 30400 && CPLUSPLUS_SUPPORTS_MAKE_UNIQUE
++         #define COMPILER_SUPPORTS_MAKE_UNIQUE
++      #endif
++   #elif defined(__GNUC__)
++      // std::make_unique was added in gcc 4.9
++      #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
++      #if GCC_VERSION >= 40900 && CPLUSPLUS_SUPPORTS_MAKE_UNIQUE
++         #define COMPILER_SUPPORTS_MAKE_UNIQUE
++      #endif
++   #endif
++#endif
++
++#if defined(COMPILER_SUPPORTS_MAKE_UNIQUE)
++
++// If the compiler supports std::make_unique, then pull in <memory> to get it.
++#include <memory>
++
++#else
++
++// Otherwise, the compiler doesn't provide it, so implement it ourselves.
++
++#include <cstddef>
++#include <memory>
++#include <type_traits>
++#include <utility>
++
++namespace std {
++
++template<class _Ty> struct _Unique_if {
++   typedef unique_ptr<_Ty> _Single_object;
++};
++
++template<class _Ty> struct _Unique_if<_Ty[]> {
++   typedef unique_ptr<_Ty[]> _Unknown_bound;
++};
++
++template<class _Ty, size_t N> struct _Unique_if<_Ty[N]> {
++   typedef void _Known_bound;
++};
++
++//
++// template< class T, class... Args >
++// unique_ptr<T> make_unique( Args&&... args);
++//
++
++#if defined(_MSC_VER) && (_MSC_VER < 1800)
++
++// Macro machinery because MSVC 11.0 doesn't support variadic templates.
++// The _VARIADIC_EXPAND_0X stuff is defined in <xstddef>
++#define _MAKE_UNIQUE( \
++   TEMPLATE_LIST, PADDING_LIST, LIST, COMMA, X1, X2, X3, X4) \
++   template<class _Ty COMMA LIST(_CLASS_TYPE)> inline \
++      typename _Unique_if<_Ty>::_Single_object make_unique(LIST(_TYPE_REFREF_ARG)) \
++   { \
++      return unique_ptr<_Ty>(new _Ty(LIST(_FORWARD_ARG))); \
++   } \
++
++_VARIADIC_EXPAND_0X(_MAKE_UNIQUE, , , , )
++#undef _MAKE_UNIQUE
++
++#else // not MSVC 11.0 or earlier
++
++template<class _Ty, class... Args>
++   typename _Unique_if<_Ty>::_Single_object
++   make_unique(Args&&... args) {
++      return unique_ptr<_Ty>(new _Ty(std::forward<Args>(args)...));
++   }
++
++#endif
++
++// template< class T >
++// unique_ptr<T> make_unique( std::size_t size );
++
++template<class _Ty>
++   typename _Unique_if<_Ty>::_Unknown_bound
++   make_unique(size_t n) {
++      typedef typename remove_extent<_Ty>::type U;
++      return unique_ptr<_Ty>(new U[n]());
++   }
++
++// template< class T, class... Args >
++// /* unspecified */ make_unique( Args&&... args ) = delete;
++
++// MSVC 11.0 doesn't support deleted functions, so the best we can do
++// is simply not define the function.
++#if !(defined(_MSC_VER) && (_MSC_VER < 1800))
++
++template<class T, class... Args>
++   typename _Unique_if<T>::_Known_bound
++   make_unique(Args&&...) = delete;
++
++#endif
++
++} // namespace std
++
++#endif // !COMPILER_SUPPORTS_MAKE_UNIQUE
++
++#endif /* MIXXX_UTIL_MEMORY_H */

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-gcc62.patch b/media-sound/mixxx/files/mixxx-2.0.0-gcc62.patch
new file mode 100644
index 00000000000..c19c914b330
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.0.0-gcc62.patch
@@ -0,0 +1,24 @@
+--- a/src/util/math.h	2015-12-29 17:10:41.000000000 +0100
++++ b/src/util/math.h	2016-09-25 12:54:18.345291146 +0200
+@@ -3,8 +3,20 @@
+ 
+ // Causes MSVC to define M_PI and friends.
+ // http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
++// Our SConscript defines this but check anyway.
++#ifdef __WINDOWS__
++#ifndef _USE_MATH_DEFINES
+ #define _USE_MATH_DEFINES
+-#include <cmath>
++#endif
++#endif
++
++#include <math.h>
++#include <cmath> 
++// Note: Because of our fpclassify hack, we actualy need to inlude both, 
++// the c and the c++ version of the math header.  
++// From GCC 6.1.1 math.h depends on cmath, which failes to compile if included 
++// after our fpclassify hack 
++
+ #include <algorithm>
+ 
+ #include "util/assert.h"

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-move-definition-of-time-formatseconds-into-dot-cpp-file.patch b/media-sound/mixxx/files/mixxx-2.0.0-move-definition-of-time-formatseconds-into-dot-cpp-file.patch
new file mode 100644
index 00000000000..9a95a5d675e
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.0.0-move-definition-of-time-formatseconds-into-dot-cpp-file.patch
@@ -0,0 +1,88 @@
+From c2af9e6eeb469718b9aa069b90a719fac80dd0d9 Mon Sep 17 00:00:00 2001
+From: Uwe Klotz <uwe_klotz@web.de>
+Date: Fri, 8 Jan 2016 19:25:58 +0100
+Subject: [PATCH] Move definition of Time::formatSeconds() into .cpp file
+
+---
+ src/util/time.cpp | 30 ++++++++++++++++++++++++++++++
+ src/util/time.h   | 29 +----------------------------
+ 2 files changed, 31 insertions(+), 28 deletions(-)
+
+diff --git a/src/util/time.cpp b/src/util/time.cpp
+index 998fa73..d8a122b 100644
+--- a/src/util/time.cpp
++++ b/src/util/time.cpp
+@@ -6,3 +6,33 @@ LLTIMER Time::s_timer;
+ bool Time::s_testMode = false;
+ // static
+ qint64 Time::s_testElapsed_nsecs = 0;
++
++// static
++QString Time::formatSeconds(double dSeconds, bool showCentis) {
++    if (dSeconds < 0) {
++        return "?";
++    }
++
++    const int days = static_cast<int>(dSeconds) / kSecondsPerDay;
++    dSeconds -= days * kSecondsPerDay;
++
++    // NOTE(uklotzde): Time() constructs a 'null' object, but
++    // we need 'zero' here.
++    QTime t = QTime(0, 0).addMSecs(dSeconds * kMillisPerSecond);
++
++    QString formatString =
++            (days > 0 ? (QString::number(days) %
++                         QLatin1String("'d', ")) : QString()) %
++            QLatin1String(days > 0 || t.hour() > 0 ? "hh:mm:ss" : "mm:ss") %
++            QLatin1String(showCentis ? ".zzz" : "");
++
++    QString timeString = t.toString(formatString);
++
++    // The format string gives us milliseconds but we want
++    // centiseconds. Slice one character off.
++    if (showCentis) {
++        timeString = timeString.left(timeString.length() - 1);
++    }
++
++    return timeString;
++}
+diff --git a/src/util/time.h b/src/util/time.h
+index 7b38eb4..b4e2c2d 100644
+--- a/src/util/time.h
++++ b/src/util/time.h
+@@ -67,34 +67,7 @@ class Time {
+     // The standard way of formatting a time in seconds. Used for display of
+     // track duration, etc. showCentis indicates whether to include
+     // centisecond-precision or to round to the nearest second.
+-    static QString formatSeconds(double dSeconds, bool showCentis) {
+-        if (dSeconds < 0) {
+-            return "?";
+-        }
+-
+-        const int days = static_cast<int>(dSeconds) / kSecondsPerDay;
+-        dSeconds -= days * kSecondsPerDay;
+-
+-        // NOTE(uklotzde): Time() constructs a 'null' object, but
+-        // we need 'zero' here.
+-        QTime t = QTime(0, 0).addMSecs(dSeconds * kMillisPerSecond);
+-
+-        QString formatString =
+-                (days > 0 ? (QString::number(days) %
+-                             QLatin1String("'d', ")) : QString()) %
+-                QLatin1String(days > 0 || t.hour() > 0 ? "hh:mm:ss" : "mm:ss") %
+-                QLatin1String(showCentis ? ".zzz" : "");
+-
+-        QString timeString = t.toString(formatString);
+-
+-        // The format string gives us milliseconds but we want
+-        // centiseconds. Slice one character off.
+-        if (showCentis) {
+-            timeString = timeString.left(timeString.length() - 1);
+-        }
+-
+-        return timeString;
+-    }
++    static QString formatSeconds(double dSeconds, bool showCentis);
+ 
+   private:
+     static LLTIMER s_timer;

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-rmx2-backport-controller-scripts.patch b/media-sound/mixxx/files/mixxx-2.0.0-rmx2-backport-controller-scripts.patch
new file mode 100644
index 00000000000..a82f27166ab
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.0.0-rmx2-backport-controller-scripts.patch
@@ -0,0 +1,280 @@
+diff -dNur a/res/controllers/Hercules-DJ-Console-RMX-2-scripts.js b/res/controllers/Hercules-DJ-Console-RMX-2-scripts.js
+--- a/res/controllers/Hercules-DJ-Console-RMX-2-scripts.js	2015-12-29 17:10:41.000000000 +0100
++++ b/res/controllers/Hercules-DJ-Console-RMX-2-scripts.js	2017-02-04 22:01:01.629506434 +0100
+@@ -1,128 +1,159 @@
+-/*╔══:::Made Lovingly By Circuitfry:::═════════════════════════════════╗
+-  ║     Hercules DJConsole RMX 2 Mapping Scripts v. 0.1.3              ║
+-  ╚════════════════════════════════════════════════════════════════════╝
+-  * Version 0.1.0: Basic Midi Wizard Mapping
+-  * Version 0.1.1: Partially-Functional platters (version 1).
+-  * Version 0.1.2: Functional platters (version 1)
+-  * Version 0.1.3: Functional EQ Kill/Pitch Bending buttons
+-                   Functional Looping/Sample/Effect pads
+-                   Bugfix: Source 2 Gain knob doesn't load tracks.
+-                   Overhaul: MIDI Scripting file.
+-    Worklog: Need to implement Microphone/Source1/Source2 input.
+-  * Note 1: [DEP] Means the command is meant for Mixxx v1.10.x + below.
+-  * Note 2: [FUT] Means the command is meant for Mixxx v1.11.x + above.
+-*/
+-function DJCRMX2(){}
+-DJCRMX2.scratching = [];
++/* ╔══:::Made Lovingly By Circuitfry:::═════════════════════════════════╗
++ * ║     Hercules DJConsole RMX 2 Mapping Scripts                       ║
++ * ╚════════════════════════════════════════════════════════════════════╝
++ */
+ 
+-/*  [ Function init ] - Version 0.1.3
+-  * Initiates some global variables and assigns an ID. Required.
+-*/
+-DJCRMX2.init = function(id){	
+- DJCRMX2.id = id;
+- DJCRMX2.scratching[1]=false;
+- DJCRMX2.scratching[2]=false;
+- engine.setValue("[Microphone]","enabled",0);
+- engine.setValue("[Microphone]","talkover",0);
++function DJCRMX2() {}
++DJCRMX2.decks = [];
++
++/* [ Function init ]
++ * Initiates some global variables and assigns an ID. Required.
++ */
++DJCRMX2.init = function (id) {
++    DJCRMX2.id = id;
++    DJCRMX2.decks[1] = new DJCRMX2.Deck(1);
++    DJCRMX2.decks[2] = new DJCRMX2.Deck(2);
++    engine.setValue("[Microphone]", "enabled", 0);
++    engine.setValue("[Microphone]", "talkover", 0);
+ }
+ 
+-/*  [ Function wheelPress ] - Version 0.1.2
+-  * Detects whether a jog wheel is pressed or not and sets a specific
+-  * variable on and off accordingly.
+-*/
+-DJCRMX2.wheelPress = function (channel, control, value, status, group){
+- if (status == 0x90) // If status #144 is active (2 possibilities)
+- {
+-  if (value == 0x7F) // And the jog wheel is pressed down:
+-  {  /*  engine.scratchEnable(int,int,float,float,float,bool);
+-       * [ int deck ]              Which track/platter is playing?
+-       * [ int intervalsPerRev ]   # of MIDI signals sent in 1 spin.
+-       * [ float rpm ]             Imaginary vinyl rotation speed.
+-       * [ float alpha ]           Just a fine-tuning variable.
+-       * [ float beta ]            Just a fine-tuning variable.
+-       * [ bool ramp ]             As far as I know, nothing...
+-     */
+-      var alpha = 1.0/8;
+-      var beta = alpha/32;
+-      if(group=="[Channel1]")
+-      {
+-       engine.scratchEnable(1, 250, 50, alpha, beta);
+-       DJCRMX2.scratching[1] = true; //[DEP]
+-	  }
+-	  if(group=="[Channel2]")
+-	  {
+-	   engine.scratchEnable(2, 250, 50, alpha, beta);
+-	   DJCRMX2.scratching[2] = true; //[DEP]
+-	  }
+-      
+-  }
+-  if (value == 0x00 ) // If the jog wheel is released:
+-  {
+-   if(group=="[Channel1]")
+-   {
+-    DJCRMX2.scratching[1] = false; // <- v1.10.x and below
+-    engine.scratchDisable(1);
+-   }
+-   if(group=="[Channel2]")
+-   {
+-    DJCRMX2.scratching[2] = false; // <- v1.10.x and below
+-   engine.scratchDisable(2);
+-   }
+-  }
+- }
+- else //Default setting where button is not held down.
+- {
+-  DJCRMX2.scratching[1] = false;  // Only for v1.10.x and below
+-  DJCRMX2.scratching[2] = false;  // Only for v1.10.x and below
+-  engine.scratchDisable(1);
+-  engine.scratchDisable(2);
+- }
+- return;
++////////////////////////////////////////////////////////////////////////
++// Decks                                                              //
++////////////////////////////////////////////////////////////////////////
++
++DJCRMX2.Deck = function(number) {
++    this.number = number;
++    this.group = "[Channel" + this.number + "]";
++    this.scratchTimer = 0;
++};
++
++DJCRMX2.Deck.prototype.wheelPress = function (value) {
++    if (this.scratchTimer != 0) {
++        // The wheel was touched again, reset the timer.
++        engine.stopTimer(this.scratchTimer);
++        this.scratchTimer = 0;
++    }
++    if (value == 0x7F) {
++        // And the jog wheel is pressed down:
++
++         /*  engine.scratchEnable(int,int,float,float,float,bool);
++         * [ int deck ]              Which track/platter is playing?
++         * [ int intervalsPerRev ]   # of MIDI signals sent in 1 spin.
++         * [ float rpm ]             Imaginary vinyl rotation speed.
++         * [ float alpha ]           Just a fine-tuning variable.
++         * [ float beta ]            Just a fine-tuning variable.
++         * [ bool ramp ]             As far as I know, nothing...
++         */
++
++         var alpha = 1.0 / 8;
++         var beta = alpha / 32;
++         engine.scratchEnable(this.number, 256, 33 + 1/3, alpha, beta);
++    } else {
++        // The wheel touch sensor can be overly sensitive, so don't release scratch mode right away.
++        // Depending on how fast the platter was moving, lengthen the time we'll wait.
++        var scratchRate = Math.abs(engine.getValue(this.group, "scratch2"));
++        var inertiaTime = Math.pow(1.8, scratchRate) * 50;
++        if (inertiaTime < 100) {
++            // Just do it now.
++            this.finishWheelPress();
++        } else {         
++            this.scratchTimer = engine.beginTimer(
++                    100, "DJCRMX2.decks[" + this.number + "].finishWheelPress()", true);
++        }
++    }
++}
++
++DJCRMX2.Deck.prototype.finishWheelPress = function() {
++    this.scratchTimer = 0;
++    var play = engine.getValue(this.group, "play");
++    if (play != 0) {
++        // If we are playing, just hand off to the engine.
++        engine.scratchDisable(this.number, true);
++    } else {
++        // If things are paused, there will be a non-smooth handoff between scratching and jogging.
++        // Instead, keep scratch on until the platter is not moving.
++        var scratchRate = Math.abs(engine.getValue(this.group, "scratch2"));
++        if (scratchRate < 0.01) {
++            // The platter is basically stopped, now we can disable scratch and hand off to jogging.
++            engine.scratchDisable(this.number, false);
++        } else {
++            // Check again soon.
++            this.scratchTimer = engine.beginTimer(
++                    100, "DJCRMX2.decks[" + this.number + "].finishWheelPress()", true);
++        }
++    }
++};
++
++
++/* [ Function wheelTurn ]
++ * Pays attention to the current deck, checks scratching, affects the
++ * song accordingly.
++ */
++DJCRMX2.Deck.prototype.wheelTurn = function (value) {
++    var newValue = 0;
++    // Spinning backwards = 127 or less (less meaning faster)
++    // Spinning forwards  = 1 or more (more meaning faster)
++    if (value - 64 > 0) {
++        newValue = value - 128;
++    } else {
++        newValue = value;
++    }
++    
++    if (engine.isScratching(this.number)) {
++        engine.scratchTick(this.number, newValue);
++    } else {
++        engine.setValue(this.group, "jog", newValue);
++    }   
+ }
++
++/*  [ Function wheelPress ]
++ * Detects whether a jog wheel is pressed or not and sets a specific
++ * variable on and off accordingly.
++ */
++DJCRMX2.wheelPress = function (channel, control, value, status, group) {
++    var deck = 0;     
++    if (group == "[Channel1]") {
++        deck = 1;
++    } else  if (group == "[Channel2]") {
++        deck = 2;
++    } else {
++        return; 
++    }
++    DJCRMX2.decks[deck].wheelPress(value);
++}
++
+  
+-/*  [ Function wheelTurn ] - Version 0.1.2
+-  * Pays attention to the current deck, checks scratching, affects the
+-  * song accordingly.
+-*/
+-DJCRMX2.wheelTurn = function (channel, control, value, status, group){
+- var newValue=0;
+- // Spinning backwards = 127 or less (less meaning faster)
+- // Spinning forwards  = 1 or more (more meaning faster)
+- if (value-64 > 0) newValue = (value-128);
+- else newValue=value;
+- //if (!engine.isScratching(DJCRMX2.currentDeck)) // [FUT]
+- if(group=="[Channel1]")
+- {
+-  if(DJCRMX2.scratching[1]==true) {engine.scratchTick(1,newValue);return;}
+- }
+- else if(group=="[Channel2]")
+- {
+-  if(DJCRMX2.scratching[2]==true) {engine.scratchTick(2,newValue);return;}
+- }
+- engine.setValue(group, "jog", newValue);
+- return;
++/* [ Function wheelTurn ]
++ * Pays attention to the current deck, checks scratching, affects the
++ * song accordingly.
++ */
++DJCRMX2.wheelTurn = function (channel, control, value, status, group) {
++    var deck = 0;     
++    if (group == "[Channel1]") {
++        deck = 1;
++    } else  if (group == "[Channel2]") {
++        deck = 2;
++    } else {
++        return; 
++    }
++    DJCRMX2.decks[deck].wheelTurn(value);
+ }
+ 
+-DJCRMX2.micSwitch = function (channel, control, value, status) //???
++DJCRMX2.micSwitch = function (channel, control, value, status)
+ {
+- if(status == 0x90 && control == 0x48 && value == 0x7F)
+- {
+-  engine.setValue("[Microphone]","enabled",1);
+-  engine.setValue("[Microphone]","talkover",1);
+- }
+- if(status == 0x90 && control == 0x48 && value == 0x00)
+- {
+-  engine.setValue("[Microphone]","enabled",0);
+-  engine.setValue("[Microphone]","talkover",0);
+- }
++    if (status == 0x90 && control == 0x48 && value == 0x7F) {
++        engine.setValue("[Microphone]","enabled",1);
++        engine.setValue("[Microphone]","talkover",1);
++    } else if (status == 0x90 && control == 0x48 && value == 0x00) {
++        engine.setValue("[Microphone]","enabled",0);
++        engine.setValue("[Microphone]","talkover",0);
++    }
+ }
+ 
+-/*  [ Function shutdown ] - Version 0.1.3
+-  * Sets variables down for shutoff.
+-*/
+-DJCRMX2.shutdown = function(id){
+- DJCRMX2.scratching[1]=false;
+- DJCRMX2.scratching[2]=false;
+- engine.setValue("[Microphone]","enabled",0);
+- engine.setValue("[Microphone]","talkover",0);
++/* [ Function shutdown ] - Version 0.1.3
++ * Sets variables down for shutoff.
++ */
++DJCRMX2.shutdown = function (id) {
++    engine.setValue("[Microphone]", "enabled", 0);
++    engine.setValue("[Microphone]", "talkover", 0);
+ }

diff --git a/media-sound/mixxx/mixxx-2.0.0-r4.ebuild b/media-sound/mixxx/mixxx-2.0.0-r4.ebuild
new file mode 100644
index 00000000000..a67c794493a
--- /dev/null
+++ b/media-sound/mixxx/mixxx-2.0.0-r4.ebuild
@@ -0,0 +1,140 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit flag-o-matic scons-utils toolchain-funcs
+
+DESCRIPTION="Advanced Digital DJ tool based on Qt"
+HOMEPAGE="http://www.mixxx.org/"
+SRC_URI="http://downloads.${PN}.org/${P}/${P}-src.tar.gz"
+
+# Upstream patches
+SRC_URI+=" https://github.com/mixxxdj/mixxx/commit/51d95ba58d99309f439cb7e2d1285cfb33aa0f63.patch -> ${PN}-2.0.0-ffmpeg30.patch"
+SRC_URI+=" https://github.com/mixxxdj/mixxx/commit/869e07067b15e09bf7ef886a8772afdfb79cbc3c.patch -> ${PN}-2.0.0-ffmpeg31.patch"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="aac debug doc ffmpeg hid mp3 mp4 shout wavpack"
+
+# fails to compile system-fidlib. Add ">media-libs/fidlib-0.9.10-r1" once this
+# got fixed
+RDEPEND="
+	dev-db/sqlite
+	dev-libs/protobuf:0=
+	dev-qt/qtconcurrent:5
+	dev-qt/qtcore:5
+	dev-qt/qtgui:5
+	dev-qt/qtnetwork:5
+	dev-qt/qtopengl:5
+	dev-qt/qtscript:5[scripttools]
+	dev-qt/qtsql:5
+	dev-qt/qtsvg:5
+	dev-qt/qtwidgets:5
+	dev-qt/qtxml:5
+	media-libs/chromaprint
+	media-libs/flac
+	media-libs/libid3tag
+	media-libs/libogg
+	media-libs/libsndfile
+	>=media-libs/libsoundtouch-1.5
+	media-libs/libvorbis
+	>=media-libs/portaudio-19_pre
+	media-libs/portmidi
+	media-libs/rubberband
+	media-libs/taglib
+	media-libs/vamp-plugin-sdk
+	sci-libs/fftw:3.0=
+	virtual/libusb:1
+	virtual/opengl
+	x11-libs/libX11
+	aac? (
+		media-libs/faad2
+		media-libs/libmp4v2:0
+	)
+	hid? ( dev-libs/hidapi )
+	mp3? ( media-libs/libmad )
+	mp4? ( media-libs/libmp4v2:= )
+	shout? ( media-libs/libshout )
+	wavpack? ( media-sound/wavpack )
+	ffmpeg? ( media-video/ffmpeg:0= )
+"
+# media-libs/rubberband RDEPENDs on sci-libs/fftw:3.0
+DEPEND="
+	${RDEPEND}
+	virtual/pkgconfig
+	dev-qt/qttest:5
+	dev-qt/qtxmlpatterns:5
+"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-2.0.0-docs.patch
+
+	"${DISTDIR}"/${P}-ffmpeg30.patch
+	"${DISTDIR}"/${P}-ffmpeg31.patch
+
+	"${FILESDIR}"/${P}-chromaprint-1.4.patch #604528
+	"${FILESDIR}"/${P}-gcc62.patch #595090
+
+	# The following patches were taken from sunny-overlay (bug #608430)
+	"${FILESDIR}"/${P}-fix-formatting-of-time-durations.patch
+	"${FILESDIR}"/${P}-eliminate-unnecessary-heap-allocation-of-qtime.patch
+	"${FILESDIR}"/${P}-fix-missing-pointer-initialization.patch
+	"${FILESDIR}"/${P}-move-definition-of-time-formatseconds-into-dot-cpp-file.patch
+	"${FILESDIR}"/${P}-fix-formatting-of-time-durations2.patch
+	"${FILESDIR}"/${P}-rmx2-backport-controller-scripts.patch
+)
+
+src_prepare() {
+	# use multilib compatible directory for plugins
+	sed -i -e "/unix_lib_path =/s/'lib'/'$(get_libdir)'/" src/SConscript || die
+
+	default
+}
+
+src_configure() {
+	local myoptimize=0
+
+	# Required for >=qt-5.7.0 (bug #590690)
+	append-cxxflags -std=c++11
+
+	# Try to get cpu type based on CFLAGS.
+	# Bug #591968
+	for i in $(get-flag mcpu) $(get-flag march) ; do
+		if [[ ${i} = native ]] ; then
+			myoptimize="native"
+			break
+		fi
+	done
+
+	myesconsargs=(
+		prefix="${EPREFIX}/usr"
+		qtdir="${EPREFIX}/usr/$(get_libdir)/qt5"
+		faad="$(usex aac 1 0)"
+		ffmpeg="$(usex ffmpeg 1 0)"
+		hid="$(usex hid 1 0)"
+		hifieq=1
+		m4a="$(usex mp4 1 0)"
+		mad="$(usex mp3 1 0)"
+		optimize="${myoptimize}"
+		qdebug="$(usex debug 1 0)"
+		qt5=1
+		shoutcast="$(usex shout 1 0)"
+		vinylcontrol=1
+		wv="$(usex wavpack 1 0)"
+	)
+}
+
+src_compile() {
+	CC="$(tc-getCC)" CXX="$(tc-getCXX)" LINKFLAGS="${LDFLAGS}" \
+	LIBDIR="${EPREFIX}/usr/$(get_libdir)" escons ${myesconsargs[@]}
+}
+
+src_install() {
+	CC="$(tc-getCC)" CXX="$(tc-getCXX)" LINKFLAGS="${LDFLAGS}" \
+	LIBDIR="${EPREFIX}/usr/$(get_libdir)" escons ${myesconsargs[@]} \
+		install_root="${ED}"/usr install
+
+	dodoc README Mixxx-Manual.pdf
+}


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-sound/mixxx/, media-sound/mixxx/files/
@ 2017-08-10 23:55 Lars Wendler
  0 siblings, 0 replies; 7+ messages in thread
From: Lars Wendler @ 2017-08-10 23:55 UTC (permalink / raw
  To: gentoo-commits

commit:     a97286de5285e5dcb4f707c5fa3b24c5a5ed8c21
Author:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 10 23:55:26 2017 +0000
Commit:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
CommitDate: Thu Aug 10 23:55:43 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a97286de

media-sound/mixxx: Fixed build with recent sqlite versions (bug #622776).

Package-Manager: Portage-2.3.6, Repoman-2.3.3

 media-sound/mixxx/files/mixxx-2.0.0-sqlite3.patch | 14 ++++++++++++++
 media-sound/mixxx/mixxx-2.0.0-r4.ebuild           |  2 ++
 2 files changed, 16 insertions(+)

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-sqlite3.patch b/media-sound/mixxx/files/mixxx-2.0.0-sqlite3.patch
new file mode 100644
index 00000000000..a8cb15e63c6
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.0.0-sqlite3.patch
@@ -0,0 +1,14 @@
+https://bugs.gentoo.org/622776
+
+--- mixxx-2.0.0/src/library/trackcollection.h
++++ mixxx-2.0.0/src/library/trackcollection.h
+@@ -34,8 +34,7 @@
+ #include "library/dao/libraryhashdao.h"
+ 
+ #ifdef __SQLITE3__
+-typedef struct sqlite3_context sqlite3_context;
+-typedef struct Mem sqlite3_value;
++#include <sqlite3.h>
+ #endif
+ 
+ class TrackInfoObject;

diff --git a/media-sound/mixxx/mixxx-2.0.0-r4.ebuild b/media-sound/mixxx/mixxx-2.0.0-r4.ebuild
index 3b71fc236f6..1d968f368e3 100644
--- a/media-sound/mixxx/mixxx-2.0.0-r4.ebuild
+++ b/media-sound/mixxx/mixxx-2.0.0-r4.ebuild
@@ -77,6 +77,8 @@ PATCHES=(
 	"${FILESDIR}"/${P}-chromaprint-1.4.patch #604528
 	"${FILESDIR}"/${P}-gcc62.patch #595090
 
+	"${FILESDIR}"/${PN}-2.0.0-sqlite3.patch #622776
+
 	# The following patches were taken from sunny-overlay (bug #608430)
 	"${FILESDIR}"/${P}-fix-formatting-of-time-durations.patch
 	"${FILESDIR}"/${P}-eliminate-unnecessary-heap-allocation-of-qtime.patch


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-sound/mixxx/, media-sound/mixxx/files/
@ 2018-09-07 20:34 Andreas Sturmlechner
  0 siblings, 0 replies; 7+ messages in thread
From: Andreas Sturmlechner @ 2018-09-07 20:34 UTC (permalink / raw
  To: gentoo-commits

commit:     13663ab3d2b090900cb411d0df9ad6a89b887f22
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 30 22:45:56 2018 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Fri Sep  7 20:33:51 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=13663ab3

media-sound/mixxx: Drop 2.0.0

Package-Manager: Portage-2.3.48, Repoman-2.3.10

 media-sound/mixxx/Manifest                         |   3 -
 .../mixxx/files/mixxx-2.0.0-chromaprint-1.4.patch  |  40 ---
 ...nate-unnecessary-heap-allocation-of-qtime.patch |  55 ----
 ...xx-2.0.0-fix-formatting-of-time-durations.patch |  24 --
 ...x-2.0.0-fix-formatting-of-time-durations2.patch | 139 ----------
 ...-2.0.0-fix-missing-pointer-initialization.patch | 271 --------------------
 media-sound/mixxx/files/mixxx-2.0.0-gcc62.patch    |  24 --
 ...n-of-time-formatseconds-into-dot-cpp-file.patch |  88 -------
 ...xx-2.0.0-rmx2-backport-controller-scripts.patch | 280 ---------------------
 media-sound/mixxx/files/mixxx-2.0.0-sqlite3.patch  |  14 --
 media-sound/mixxx/mixxx-2.0.0-r5.ebuild            | 144 -----------
 11 files changed, 1082 deletions(-)

diff --git a/media-sound/mixxx/Manifest b/media-sound/mixxx/Manifest
index 81cb96df556..878c9c13d2a 100644
--- a/media-sound/mixxx/Manifest
+++ b/media-sound/mixxx/Manifest
@@ -1,5 +1,2 @@
-DIST mixxx-2.0.0-ffmpeg30.patch 714 BLAKE2B 00c5cdc233262e64fa52abcc97fc15d1347a391d411b5a0e2650bc3d06f1ef994b28c1f5bd942026201850925f6959fa0b3896c5dff48fbad1c28df8bcd8067b SHA512 60788ecab1fa92b825815fff5dfdfefe02fb097e46f7f55f318bb8a8677da42e4601cce51eaaec51988990eebb72d59346d1ec45ed76cac3c8a7f9a9d1e8cf54
-DIST mixxx-2.0.0-ffmpeg31.patch 2844 BLAKE2B ee44c1da8af553cff478d12bc4fb05ae50bd788340ba5e414b6a535873a3c1868363762697ab21580bfa8f4006c0314acdc2c778f80a910c316a49d91c3e0205 SHA512 7207ad72d0ea851b1425ff7472aafe5f828ca70aad0821a1ef1eb54845527532489ac7913f6584e3af5fb53bf3459abc173fbf482f83be8a22358d28b1b5cf74
-DIST mixxx-2.0.0-src.tar.gz 25300881 BLAKE2B a0dbc03350bf6d6a8ce5abd06df50bf58cf3d75fcc3f8614873c807ad8a77d1afb12a8715944ebba80da5750e4c6d6570ea60a5afb83b87f8cc54c7c4d0ccb00 SHA512 8878c0f785e4c5f67724deeca61154d2587969a81d28aef8fa9d526aec8419a218ce2a7ef88d6fcf468d30fa13d31ac9a56ca9082431a35b7e4e040a7ccfbb1a
 DIST mixxx-2.1.1.tar.gz 34458368 BLAKE2B cf718cfea64fe71e2ccd5f299454fc9d396266052cc2516fa4494216a9d8ae9cea62858bf02e026d5072705df780d6243616d1d1705e3f251bc2392b4dc3d166 SHA512 c0047a238bf39e464f2bc25646ba03138d0b8d27cde667ca7b12bfba5f40d339ce4b426853e048d695b2c59c847e88322e27b91bead467899d7bf1cb43358f20
 DIST mixxx-2.1.3.tar.gz 34471372 BLAKE2B 88b634003a6014ebe746cf0f5f2b3d3de6775c6b2a5298898e70c55feb1ae5a54a692f9428103419943e829438b2ac2fdbfa93c45d4624a7aede59f8ecbe98ae SHA512 3aaf207963cb7380d98c9458f9c1d85c2c72bc0bc2197758a47af50ea38a80158c1abacc70ef50398ccd89a4bd4c30d93c65d70112332e529f3a3aed31509324

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-chromaprint-1.4.patch b/media-sound/mixxx/files/mixxx-2.0.0-chromaprint-1.4.patch
deleted file mode 100644
index 77827f3d8d8..00000000000
--- a/media-sound/mixxx/files/mixxx-2.0.0-chromaprint-1.4.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Backported chromaprint-1.4 API changes based on the fix suggested in:
-https://github.com/mixxxdj/mixxx/pull/1073
-
-and the work done by Charlie Gehlin in:
-https://bugs.gentoo.org/604528
-
---- mixxx-2.0.0/src/musicbrainz/chromaprinter.cpp
-+++ mixxx-2.0.0/src/musicbrainz/chromaprinter.cpp
-@@ -25,6 +25,16 @@
- 
- QString ChromaPrinter::calcFingerPrint(const Mixxx::SoundSourcePointer& pSoundSource) {
- 
-+    // Type declarations of *fprint and *encoded pointers need to account for Chromaprint API version
-+    // (void* -> uint32_t*) and (void* -> char*) changed in versions v1.4.0 or later -- alyptik 12/2016
-+    #if (CHROMAPRINT_VERSION_MINOR > 3) || (CHROMAPRINT_VERSION_MAJOR > 1)
-+	typedef uint32_t* uint32_p;
-+	typedef char* char_p;
-+    #else
-+	typedef void* uint32_p;
-+	typedef void* char_p;
-+    #endif
-+
-     // this is worth 2min of audio, multiply by 2 because we have 2 channels
-     // AcoustID only stores a fingerprint for the first two minutes of a song
-     // on their server so we need only a fingerprint of the first two minutes
-@@ -57,12 +67,12 @@
-     }
-     chromaprint_finish(ctx);
- 
--    void* fprint = NULL;
-+    uint32_p fprint = NULL;
-     int size = 0;
-     int ret = chromaprint_get_raw_fingerprint(ctx, &fprint, &size);
-     QByteArray fingerprint;
-     if (ret == 1) {
--        void* encoded = NULL;
-+        char_p encoded = NULL;
-         int encoded_size = 0;
-         chromaprint_encode_fingerprint(fprint, size,
-                                        CHROMAPRINT_ALGORITHM_DEFAULT,

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-eliminate-unnecessary-heap-allocation-of-qtime.patch b/media-sound/mixxx/files/mixxx-2.0.0-eliminate-unnecessary-heap-allocation-of-qtime.patch
deleted file mode 100644
index 04538a01e15..00000000000
--- a/media-sound/mixxx/files/mixxx-2.0.0-eliminate-unnecessary-heap-allocation-of-qtime.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-diff -dNur a/src/analyserwaveform.cpp b/src/analyserwaveform.cpp
---- a/src/analyserwaveform.cpp	2015-12-29 17:10:41.000000000 +0100
-+++ b/src/analyserwaveform.cpp	2017-02-04 21:12:30.127952910 +0100
-@@ -1,6 +1,3 @@
--#include <QImage>
--#include <QtDebug>
--#include <QTime>
- #include <QtDebug>
- 
- #include "analyserwaveform.h"
-@@ -40,7 +37,6 @@
-         }
-     }
- 
--    m_timer = new QTime();
-     m_analysisDao = new AnalysisDao(m_database, pConfig);
- }
- 
-@@ -48,14 +44,13 @@
-     qDebug() << "AnalyserWaveform::~AnalyserWaveform()";
-     destroyFilters();
-     m_database.close();
--    delete m_timer;
-     delete m_analysisDao;
- }
- 
- bool AnalyserWaveform::initialise(TrackPointer tio, int sampleRate, int totalSamples) {
-     m_skipProcessing = false;
- 
--    m_timer->start();
-+    m_timer.start();
- 
-     if (totalSamples == 0) {
-         qWarning() << "AnalyserWaveform::initialise - no waveform/waveform summary";
-@@ -320,7 +315,7 @@
- #endif
- 
-     qDebug() << "Waveform generation for track" << tio->getId() << "done"
--             << m_timer->elapsed()/1000.0 << "s";
-+             << m_timer.elapsed()/1000.0 << "s";
- }
- 
- void AnalyserWaveform::storeIfGreater(float* pDest, float source) {
-diff -dNur a/src/analyserwaveform.h b/src/analyserwaveform.h
---- a/src/analyserwaveform.h	2015-12-29 17:10:41.000000000 +0100
-+++ b/src/analyserwaveform.h	2017-02-04 21:12:45.367713395 +0100
-@@ -171,7 +171,7 @@
-     EngineFilterIIRBase* m_filter[FilterCount];
-     std::vector<float> m_buffers[FilterCount];
- 
--    QTime* m_timer;
-+    QTime m_timer;
-     QSqlDatabase m_database;
-     AnalysisDao* m_analysisDao;
- 

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-fix-formatting-of-time-durations.patch b/media-sound/mixxx/files/mixxx-2.0.0-fix-formatting-of-time-durations.patch
deleted file mode 100644
index 654c01f53b9..00000000000
--- a/media-sound/mixxx/files/mixxx-2.0.0-fix-formatting-of-time-durations.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 76c53b0f0a2be7b5cf85fa523f3521a5725affb2 Mon Sep 17 00:00:00 2001
-From: Uwe Klotz <uwe_klotz@web.de>
-Date: Fri, 8 Jan 2016 18:22:33 +0100
-Subject: [PATCH] Fix formatting of time durations
-
----
- src/util/time.h | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/util/time.h b/src/util/time.h
-index 29187ad..7b38eb4 100644
---- a/src/util/time.h
-+++ b/src/util/time.h
-@@ -75,7 +75,9 @@ class Time {
-         const int days = static_cast<int>(dSeconds) / kSecondsPerDay;
-         dSeconds -= days * kSecondsPerDay;
- 
--        QTime t = QTime().addMSecs(dSeconds * kMillisPerSecond);
-+        // NOTE(uklotzde): Time() constructs a 'null' object, but
-+        // we need 'zero' here.
-+        QTime t = QTime(0, 0).addMSecs(dSeconds * kMillisPerSecond);
- 
-         QString formatString =
-                 (days > 0 ? (QString::number(days) %

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-fix-formatting-of-time-durations2.patch b/media-sound/mixxx/files/mixxx-2.0.0-fix-formatting-of-time-durations2.patch
deleted file mode 100644
index f8c041e4043..00000000000
--- a/media-sound/mixxx/files/mixxx-2.0.0-fix-formatting-of-time-durations2.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-diff -dNur a/src/library/basesqltablemodel.cpp b/src/library/basesqltablemodel.cpp
---- a/src/library/basesqltablemodel.cpp	2015-12-29 17:10:41.000000000 +0100
-+++ b/src/library/basesqltablemodel.cpp	2017-02-04 21:33:39.403861857 +0100
-@@ -559,7 +559,7 @@
-             if (column == fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DURATION)) {
-                 int duration = value.toInt();
-                 if (duration > 0) {
--                    value = Time::formatSeconds(duration, false);
-+                    value = Time::formatSeconds(duration);
-                 } else {
-                     value = QString();
-                 }
-diff -dNur a/src/library/browse/browsethread.cpp b/src/library/browse/browsethread.cpp
---- a/src/library/browse/browsethread.cpp	2015-12-29 17:10:41.000000000 +0100
-+++ b/src/library/browse/browsethread.cpp	2017-02-04 21:32:23.605066421 +0100
-@@ -185,8 +185,7 @@
-         item->setData(item->text(), Qt::UserRole);
-         row_data.insert(COLUMN_COMMENT, item);
- 
--        QString duration = Time::formatSeconds(qVariantValue<int>(
--                tio.getDuration()), false);
-+        QString duration = Time::formatSeconds(tio.getDuration());
-         item = new QStandardItem(duration);
-         item->setToolTip(item->text());
-         item->setData(item->text(), Qt::UserRole);
-diff -dNur a/src/library/cratefeature.cpp b/src/library/cratefeature.cpp
---- a/src/library/cratefeature.cpp	2015-12-29 17:10:41.000000000 +0100
-+++ b/src/library/cratefeature.cpp	2017-02-04 21:30:54.962474898 +0100
-@@ -493,7 +493,7 @@
-             crateListTableModel.index(row, durationColumn)).toInt();
-         m_crateList.append(qMakePair(id, QString("%1 (%2) %3")
-                                      .arg(name, QString::number(count),
--                                          Time::formatSeconds(duration, false))));
-+                                          Time::formatSeconds(duration))));
-     }
- }
- 
-diff -dNur a/src/library/playlistfeature.cpp b/src/library/playlistfeature.cpp
---- a/src/library/playlistfeature.cpp	2015-12-29 17:10:41.000000000 +0100
-+++ b/src/library/playlistfeature.cpp	2017-02-04 21:33:06.920378091 +0100
-@@ -168,7 +168,7 @@
-             playlistTableModel.index(row, durationColumn)).toInt();
-         m_playlistList.append(qMakePair(id, QString("%1 (%2) %3")
-                                         .arg(name, QString::number(count),
--                                             Time::formatSeconds(duration, false))));
-+                                             Time::formatSeconds(duration))));
-     }
- }
- 
-diff -dNur a/src/trackinfoobject.cpp b/src/trackinfoobject.cpp
---- a/src/trackinfoobject.cpp	2015-12-29 17:10:41.000000000 +0100
-+++ b/src/trackinfoobject.cpp	2017-02-04 21:42:36.423323807 +0100
-@@ -293,7 +293,7 @@
-     int iDuration = m_iDuration;
-     lock.unlock();
- 
--    return Time::formatSeconds(iDuration, false);
-+    return Time::formatSeconds(iDuration);
- }
- 
- void TrackInfoObject::setLocation(const QString& location) {
-diff -dNur a/src/util/time.cpp b/src/util/time.cpp
---- a/src/util/time.cpp	2017-02-04 21:29:44.439595305 +0100
-+++ b/src/util/time.cpp	2017-02-04 21:37:54.739803100 +0100
-@@ -1,5 +1,7 @@
- #include "util/time.h"
- 
-+#include "util/assert.h"
-+
- // static
- LLTIMER Time::s_timer;
- // static
-@@ -8,7 +10,7 @@
- qint64 Time::s_testElapsed_nsecs = 0;
- 
- // static
--QString Time::formatSeconds(double dSeconds, bool showCentis) {
-+QString Time::formatSeconds(double dSeconds, Precision precision) {
-     if (dSeconds < 0) {
-         return "?";
-     }
-@@ -24,13 +26,14 @@
-             (days > 0 ? (QString::number(days) %
-                          QLatin1String("'d', ")) : QString()) %
-             QLatin1String(days > 0 || t.hour() > 0 ? "hh:mm:ss" : "mm:ss") %
--            QLatin1String(showCentis ? ".zzz" : "");
-+            QLatin1String(Precision::SECONDS == precision ? "" : ".zzz");
- 
-     QString timeString = t.toString(formatString);
- 
-     // The format string gives us milliseconds but we want
-     // centiseconds. Slice one character off.
--    if (showCentis) {
-+    if (Precision::CENTISECONDS == precision) {
-+        DEBUG_ASSERT(1 <= timeString.length());
-         timeString = timeString.left(timeString.length() - 1);
-     }
- 
-diff -dNur a/src/util/time.h b/src/util/time.h
---- a/src/util/time.h	2017-02-04 21:29:44.439595305 +0100
-+++ b/src/util/time.h	2017-02-04 21:41:01.476833822 +0100
-@@ -55,10 +55,17 @@
-         s_testElapsed_nsecs = elapsed * 1000000;
-     }
- 
--    // The standard way of formatting a time in seconds. Used for display of
--    // track duration, etc. showCentis indicates whether to include
--    // centisecond-precision or to round to the nearest second.
--    static QString formatSeconds(double dSeconds, bool showCentis);
-+    enum class Precision {
-+        SECONDS,
-+        CENTISECONDS,
-+        MILLISECONDS
-+    };
-+
-+    // The standard way of formatting a time in seconds. Used for display
-+    // of track duration, etc.
-+    static QString formatSeconds(
-+            double dSeconds,
-+            Precision precision = Time::Precision::SECONDS);
- 
-   private:
-     static LLTIMER s_timer;
-diff -dNur a/src/widget/wnumberpos.cpp b/src/widget/wnumberpos.cpp
---- a/src/widget/wnumberpos.cpp	2015-12-29 17:10:41.000000000 +0100
-+++ b/src/widget/wnumberpos.cpp	2017-02-04 21:41:57.023950430 +0100
-@@ -92,10 +92,10 @@
-     QString valueString;
-     if (valueMillis >= 0) {
-         valueString = m_skinText % Time::formatSeconds(
--                valueMillis / Time::kMillisPerSecond, true);
-+                valueMillis / Time::kMillisPerSecond, Time::Precision::MILLISECONDS);
-     } else {
-         valueString = m_skinText % QLatin1String("-") % Time::formatSeconds(
--                -valueMillis / Time::kMillisPerSecond, true);
-+                -valueMillis / Time::kMillisPerSecond, Time::Precision::CENTISECONDS);
-     }
-     setText(valueString);
- }

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-fix-missing-pointer-initialization.patch b/media-sound/mixxx/files/mixxx-2.0.0-fix-missing-pointer-initialization.patch
deleted file mode 100644
index 3364995ce4f..00000000000
--- a/media-sound/mixxx/files/mixxx-2.0.0-fix-missing-pointer-initialization.patch
+++ /dev/null
@@ -1,271 +0,0 @@
-diff -dNur a/src/analyserwaveform.cpp b/src/analyserwaveform.cpp
---- a/src/analyserwaveform.cpp	2017-02-04 21:14:33.266016824 +0100
-+++ b/src/analyserwaveform.cpp	2017-02-04 21:19:09.205671982 +0100
-@@ -11,8 +11,8 @@
- 
- AnalyserWaveform::AnalyserWaveform(ConfigObject<ConfigValue>* pConfig) :
-         m_skipProcessing(false),
--        m_waveformData(NULL),
--        m_waveformSummaryData(NULL),
-+        m_waveformData(nullptr),
-+        m_waveformSummaryData(nullptr),
-         m_stride(0, 0),
-         m_currentStride(0),
-         m_currentSummaryStride(0) {
-@@ -37,14 +37,13 @@
-         }
-     }
- 
--    m_analysisDao = new AnalysisDao(m_database, pConfig);
-+    m_pAnalysisDao = std::make_unique<AnalysisDao>(m_database, pConfig);
- }
- 
- AnalyserWaveform::~AnalyserWaveform() {
-     qDebug() << "AnalyserWaveform::~AnalyserWaveform()";
-     destroyFilters();
-     m_database.close();
--    delete m_analysisDao;
- }
- 
- bool AnalyserWaveform::initialise(TrackPointer tio, int sampleRate, int totalSamples) {
-@@ -115,7 +114,7 @@
- 
-     if (trackId != -1 && (missingWaveform || missingWavesummary)) {
-         QList<AnalysisDao::AnalysisInfo> analyses =
--                m_analysisDao->getAnalysesForTrack(trackId);
-+                m_pAnalysisDao->getAnalysesForTrack(trackId);
- 
-         QListIterator<AnalysisDao::AnalysisInfo> it(analyses);
-         while (it.hasNext()) {
-@@ -130,7 +129,7 @@
-                     missingWaveform = false;
-                 } else if (vc != WaveformFactory::VC_KEEP) {
-                     // remove all other Analysis except that one we should keep
--                    m_analysisDao->deleteAnalysis(analysis.analysisId);
-+                    m_pAnalysisDao->deleteAnalysis(analysis.analysisId);
-                 }
-             } if (analysis.type == AnalysisDao::TYPE_WAVESUMMARY) {
-                 vc = WaveformFactory::waveformSummaryVersionToVersionClass(analysis.version);
-@@ -140,7 +139,7 @@
-                     missingWavesummary = false;
-                 } else if (vc != WaveformFactory::VC_KEEP) {
-                     // remove all other Analysis except that one we should keep
--                    m_analysisDao->deleteAnalysis(analysis.analysisId);
-+                    m_pAnalysisDao->deleteAnalysis(analysis.analysisId);
-                 }
-             }
-         }
-@@ -273,13 +272,13 @@
-     tio->setWaveform(ConstWaveformPointer());
-     // Since clear() could delete the waveform, clear our pointer to the
-     // waveform's vector data first.
--    m_waveformData = NULL;
-+    m_waveformData = nullptr;
-     m_waveform.clear();
- 
-     tio->setWaveformSummary(ConstWaveformPointer());
-     // Since clear() could delete the waveform, clear our pointer to the
-     // waveform's vector data first.
--    m_waveformSummaryData = NULL;
-+    m_waveformSummaryData = nullptr;
-     m_waveformSummary.clear();
- }
- 
-@@ -295,7 +294,7 @@
-         m_waveform->setDescription(WaveformFactory::currentWaveformDescription());
-         // Since clear() could delete the waveform, clear our pointer to the
-         // waveform's vector data first.
--        m_waveformData = NULL;
-+        m_waveformData = nullptr;
-         m_waveform.clear();
-     }
- 
-@@ -306,7 +305,7 @@
-         m_waveformSummary->setDescription(WaveformFactory::currentWaveformSummaryDescription());
-         // Since clear() could delete the waveform, clear our pointer to the
-         // waveform's vector data first.
--        m_waveformSummaryData = NULL;
-+        m_waveformSummaryData = nullptr;
-         m_waveformSummary.clear();
-     }
- 
-diff -dNur a/src/analyserwaveform.h b/src/analyserwaveform.h
---- a/src/analyserwaveform.h	2017-02-04 21:14:33.266016824 +0100
-+++ b/src/analyserwaveform.h	2017-02-04 21:20:17.308598419 +0100
-@@ -4,12 +4,14 @@
- #include <QTime>
- #include <QImage>
- #include <QSqlDatabase>
-+
- #include <limits>
- 
- #include "configobject.h"
- #include "analyser.h"
- #include "waveform/waveform.h"
- #include "util/math.h"
-+#include "util/memory.h"
- 
- //NOTS vrince some test to segment sound, to apply color in the waveform
- //#define TEST_HEAT_MAP
-@@ -173,7 +175,7 @@
- 
-     QTime m_timer;
-     QSqlDatabase m_database;
--    AnalysisDao* m_analysisDao;
-+    std::unique_ptr<AnalysisDao> m_pAnalysisDao;
- 
- #ifdef TEST_HEAT_MAP
-     QImage* test_heatMap;
-diff -dNur a/src/util/memory.h b/src/util/memory.h
---- a/src/util/memory.h	1970-01-01 01:00:00.000000000 +0100
-+++ b/src/util/memory.h	2017-02-04 22:19:41.846922929 +0100
-@@ -0,0 +1,149 @@
-+// Taken from https://github.com/bstreiff/cppbits
-+// Thank you Brandon Streiff!
-+
-+// Implementation of C++14's make_unique for C++11 compilers.
-+//
-+// This has been tested with:
-+// - MSVC 11.0 (Visual Studio 2012)
-+// - gcc 4.6.3
-+// - Xcode 4.4 (with clang "4.0")
-+//
-+// It is based off an implementation proposed by Stephan T. Lavavej for
-+// inclusion in the C++14 standard:
-+//    http://isocpp.org/files/papers/N3656.txt
-+// Where appropriate, it borrows the use of MSVC's _VARIADIC_EXPAND_0X macro
-+// machinery to compensate for lack of variadic templates.
-+//
-+// This file injects make_unique into the std namespace, which I acknowledge is
-+// technically forbidden ([C++11: 17.6.4.2.2.1/1]), but is necessary in order
-+// to have syntax compatibility with C++14.
-+//
-+// I perform compiler version checking for MSVC, gcc, and clang to ensure that
-+// we don't add make_unique if it is already there (instead, we include
-+// <memory> to get the compiler-provided one). You can override the compiler
-+// version checking by defining the symbol COMPILER_SUPPORTS_MAKE_UNIQUE.
-+//
-+//
-+// ===============================================================================
-+// This file is released into the public domain. See LICENCE for more information.
-+// ===============================================================================
-+
-+#ifndef MIXXX_UTIL_MEMORY_H
-+#define MIXXX_UTIL_MEMORY_H
-+
-+// If user hasn't specified COMPILER_SUPPORTS_MAKE_UNIQUE then try to figure out
-+// based on compiler version if std::make_unique is provided.
-+#if !defined(COMPILER_SUPPORTS_MAKE_UNIQUE)
-+   // Compiling with -std=c++11 sets __cplusplus=201103L and disables
-+   // std::make_unique() from C++14! We need to take this into account.
-+   #define CPLUSPLUS_SUPPORTS_MAKE_UNIQUE (__cplusplus > 201103L)
-+   #if defined(_MSC_VER)
-+      // std::make_unique was added in MSVC 12.0
-+      #if _MSC_VER >= 1800 // MSVC 12.0 (Visual Studio 2013)
-+         #define COMPILER_SUPPORTS_MAKE_UNIQUE
-+      #endif
-+   #elif defined(__clang__)
-+      // std::make_unique was added in clang 3.4, but not until Xcode 6.
-+      // Annoyingly, Apple makes the clang version defines match the version
-+      // of Xcode, not the version of clang.
-+      #define CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
-+      #if defined(__APPLE__) && CLANG_VERSION >= 60000 && CPLUSPLUS_SUPPORTS_MAKE_UNIQUE
-+         #define COMPILER_SUPPORTS_MAKE_UNIQUE
-+      #elif !defined(__APPLE__) && CLANG_VERSION >= 30400 && CPLUSPLUS_SUPPORTS_MAKE_UNIQUE
-+         #define COMPILER_SUPPORTS_MAKE_UNIQUE
-+      #endif
-+   #elif defined(__GNUC__)
-+      // std::make_unique was added in gcc 4.9
-+      #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
-+      #if GCC_VERSION >= 40900 && CPLUSPLUS_SUPPORTS_MAKE_UNIQUE
-+         #define COMPILER_SUPPORTS_MAKE_UNIQUE
-+      #endif
-+   #endif
-+#endif
-+
-+#if defined(COMPILER_SUPPORTS_MAKE_UNIQUE)
-+
-+// If the compiler supports std::make_unique, then pull in <memory> to get it.
-+#include <memory>
-+
-+#else
-+
-+// Otherwise, the compiler doesn't provide it, so implement it ourselves.
-+
-+#include <cstddef>
-+#include <memory>
-+#include <type_traits>
-+#include <utility>
-+
-+namespace std {
-+
-+template<class _Ty> struct _Unique_if {
-+   typedef unique_ptr<_Ty> _Single_object;
-+};
-+
-+template<class _Ty> struct _Unique_if<_Ty[]> {
-+   typedef unique_ptr<_Ty[]> _Unknown_bound;
-+};
-+
-+template<class _Ty, size_t N> struct _Unique_if<_Ty[N]> {
-+   typedef void _Known_bound;
-+};
-+
-+//
-+// template< class T, class... Args >
-+// unique_ptr<T> make_unique( Args&&... args);
-+//
-+
-+#if defined(_MSC_VER) && (_MSC_VER < 1800)
-+
-+// Macro machinery because MSVC 11.0 doesn't support variadic templates.
-+// The _VARIADIC_EXPAND_0X stuff is defined in <xstddef>
-+#define _MAKE_UNIQUE( \
-+   TEMPLATE_LIST, PADDING_LIST, LIST, COMMA, X1, X2, X3, X4) \
-+   template<class _Ty COMMA LIST(_CLASS_TYPE)> inline \
-+      typename _Unique_if<_Ty>::_Single_object make_unique(LIST(_TYPE_REFREF_ARG)) \
-+   { \
-+      return unique_ptr<_Ty>(new _Ty(LIST(_FORWARD_ARG))); \
-+   } \
-+
-+_VARIADIC_EXPAND_0X(_MAKE_UNIQUE, , , , )
-+#undef _MAKE_UNIQUE
-+
-+#else // not MSVC 11.0 or earlier
-+
-+template<class _Ty, class... Args>
-+   typename _Unique_if<_Ty>::_Single_object
-+   make_unique(Args&&... args) {
-+      return unique_ptr<_Ty>(new _Ty(std::forward<Args>(args)...));
-+   }
-+
-+#endif
-+
-+// template< class T >
-+// unique_ptr<T> make_unique( std::size_t size );
-+
-+template<class _Ty>
-+   typename _Unique_if<_Ty>::_Unknown_bound
-+   make_unique(size_t n) {
-+      typedef typename remove_extent<_Ty>::type U;
-+      return unique_ptr<_Ty>(new U[n]());
-+   }
-+
-+// template< class T, class... Args >
-+// /* unspecified */ make_unique( Args&&... args ) = delete;
-+
-+// MSVC 11.0 doesn't support deleted functions, so the best we can do
-+// is simply not define the function.
-+#if !(defined(_MSC_VER) && (_MSC_VER < 1800))
-+
-+template<class T, class... Args>
-+   typename _Unique_if<T>::_Known_bound
-+   make_unique(Args&&...) = delete;
-+
-+#endif
-+
-+} // namespace std
-+
-+#endif // !COMPILER_SUPPORTS_MAKE_UNIQUE
-+
-+#endif /* MIXXX_UTIL_MEMORY_H */

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-gcc62.patch b/media-sound/mixxx/files/mixxx-2.0.0-gcc62.patch
deleted file mode 100644
index c19c914b330..00000000000
--- a/media-sound/mixxx/files/mixxx-2.0.0-gcc62.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- a/src/util/math.h	2015-12-29 17:10:41.000000000 +0100
-+++ b/src/util/math.h	2016-09-25 12:54:18.345291146 +0200
-@@ -3,8 +3,20 @@
- 
- // Causes MSVC to define M_PI and friends.
- // http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
-+// Our SConscript defines this but check anyway.
-+#ifdef __WINDOWS__
-+#ifndef _USE_MATH_DEFINES
- #define _USE_MATH_DEFINES
--#include <cmath>
-+#endif
-+#endif
-+
-+#include <math.h>
-+#include <cmath> 
-+// Note: Because of our fpclassify hack, we actualy need to inlude both, 
-+// the c and the c++ version of the math header.  
-+// From GCC 6.1.1 math.h depends on cmath, which failes to compile if included 
-+// after our fpclassify hack 
-+
- #include <algorithm>
- 
- #include "util/assert.h"

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-move-definition-of-time-formatseconds-into-dot-cpp-file.patch b/media-sound/mixxx/files/mixxx-2.0.0-move-definition-of-time-formatseconds-into-dot-cpp-file.patch
deleted file mode 100644
index 9a95a5d675e..00000000000
--- a/media-sound/mixxx/files/mixxx-2.0.0-move-definition-of-time-formatseconds-into-dot-cpp-file.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From c2af9e6eeb469718b9aa069b90a719fac80dd0d9 Mon Sep 17 00:00:00 2001
-From: Uwe Klotz <uwe_klotz@web.de>
-Date: Fri, 8 Jan 2016 19:25:58 +0100
-Subject: [PATCH] Move definition of Time::formatSeconds() into .cpp file
-
----
- src/util/time.cpp | 30 ++++++++++++++++++++++++++++++
- src/util/time.h   | 29 +----------------------------
- 2 files changed, 31 insertions(+), 28 deletions(-)
-
-diff --git a/src/util/time.cpp b/src/util/time.cpp
-index 998fa73..d8a122b 100644
---- a/src/util/time.cpp
-+++ b/src/util/time.cpp
-@@ -6,3 +6,33 @@ LLTIMER Time::s_timer;
- bool Time::s_testMode = false;
- // static
- qint64 Time::s_testElapsed_nsecs = 0;
-+
-+// static
-+QString Time::formatSeconds(double dSeconds, bool showCentis) {
-+    if (dSeconds < 0) {
-+        return "?";
-+    }
-+
-+    const int days = static_cast<int>(dSeconds) / kSecondsPerDay;
-+    dSeconds -= days * kSecondsPerDay;
-+
-+    // NOTE(uklotzde): Time() constructs a 'null' object, but
-+    // we need 'zero' here.
-+    QTime t = QTime(0, 0).addMSecs(dSeconds * kMillisPerSecond);
-+
-+    QString formatString =
-+            (days > 0 ? (QString::number(days) %
-+                         QLatin1String("'d', ")) : QString()) %
-+            QLatin1String(days > 0 || t.hour() > 0 ? "hh:mm:ss" : "mm:ss") %
-+            QLatin1String(showCentis ? ".zzz" : "");
-+
-+    QString timeString = t.toString(formatString);
-+
-+    // The format string gives us milliseconds but we want
-+    // centiseconds. Slice one character off.
-+    if (showCentis) {
-+        timeString = timeString.left(timeString.length() - 1);
-+    }
-+
-+    return timeString;
-+}
-diff --git a/src/util/time.h b/src/util/time.h
-index 7b38eb4..b4e2c2d 100644
---- a/src/util/time.h
-+++ b/src/util/time.h
-@@ -67,34 +67,7 @@ class Time {
-     // The standard way of formatting a time in seconds. Used for display of
-     // track duration, etc. showCentis indicates whether to include
-     // centisecond-precision or to round to the nearest second.
--    static QString formatSeconds(double dSeconds, bool showCentis) {
--        if (dSeconds < 0) {
--            return "?";
--        }
--
--        const int days = static_cast<int>(dSeconds) / kSecondsPerDay;
--        dSeconds -= days * kSecondsPerDay;
--
--        // NOTE(uklotzde): Time() constructs a 'null' object, but
--        // we need 'zero' here.
--        QTime t = QTime(0, 0).addMSecs(dSeconds * kMillisPerSecond);
--
--        QString formatString =
--                (days > 0 ? (QString::number(days) %
--                             QLatin1String("'d', ")) : QString()) %
--                QLatin1String(days > 0 || t.hour() > 0 ? "hh:mm:ss" : "mm:ss") %
--                QLatin1String(showCentis ? ".zzz" : "");
--
--        QString timeString = t.toString(formatString);
--
--        // The format string gives us milliseconds but we want
--        // centiseconds. Slice one character off.
--        if (showCentis) {
--            timeString = timeString.left(timeString.length() - 1);
--        }
--
--        return timeString;
--    }
-+    static QString formatSeconds(double dSeconds, bool showCentis);
- 
-   private:
-     static LLTIMER s_timer;

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-rmx2-backport-controller-scripts.patch b/media-sound/mixxx/files/mixxx-2.0.0-rmx2-backport-controller-scripts.patch
deleted file mode 100644
index a82f27166ab..00000000000
--- a/media-sound/mixxx/files/mixxx-2.0.0-rmx2-backport-controller-scripts.patch
+++ /dev/null
@@ -1,280 +0,0 @@
-diff -dNur a/res/controllers/Hercules-DJ-Console-RMX-2-scripts.js b/res/controllers/Hercules-DJ-Console-RMX-2-scripts.js
---- a/res/controllers/Hercules-DJ-Console-RMX-2-scripts.js	2015-12-29 17:10:41.000000000 +0100
-+++ b/res/controllers/Hercules-DJ-Console-RMX-2-scripts.js	2017-02-04 22:01:01.629506434 +0100
-@@ -1,128 +1,159 @@
--/*╔══:::Made Lovingly By Circuitfry:::═════════════════════════════════╗
--  ║     Hercules DJConsole RMX 2 Mapping Scripts v. 0.1.3              ║
--  ╚════════════════════════════════════════════════════════════════════╝
--  * Version 0.1.0: Basic Midi Wizard Mapping
--  * Version 0.1.1: Partially-Functional platters (version 1).
--  * Version 0.1.2: Functional platters (version 1)
--  * Version 0.1.3: Functional EQ Kill/Pitch Bending buttons
--                   Functional Looping/Sample/Effect pads
--                   Bugfix: Source 2 Gain knob doesn't load tracks.
--                   Overhaul: MIDI Scripting file.
--    Worklog: Need to implement Microphone/Source1/Source2 input.
--  * Note 1: [DEP] Means the command is meant for Mixxx v1.10.x + below.
--  * Note 2: [FUT] Means the command is meant for Mixxx v1.11.x + above.
--*/
--function DJCRMX2(){}
--DJCRMX2.scratching = [];
-+/* ╔══:::Made Lovingly By Circuitfry:::═════════════════════════════════╗
-+ * ║     Hercules DJConsole RMX 2 Mapping Scripts                       ║
-+ * ╚════════════════════════════════════════════════════════════════════╝
-+ */
- 
--/*  [ Function init ] - Version 0.1.3
--  * Initiates some global variables and assigns an ID. Required.
--*/
--DJCRMX2.init = function(id){	
-- DJCRMX2.id = id;
-- DJCRMX2.scratching[1]=false;
-- DJCRMX2.scratching[2]=false;
-- engine.setValue("[Microphone]","enabled",0);
-- engine.setValue("[Microphone]","talkover",0);
-+function DJCRMX2() {}
-+DJCRMX2.decks = [];
-+
-+/* [ Function init ]
-+ * Initiates some global variables and assigns an ID. Required.
-+ */
-+DJCRMX2.init = function (id) {
-+    DJCRMX2.id = id;
-+    DJCRMX2.decks[1] = new DJCRMX2.Deck(1);
-+    DJCRMX2.decks[2] = new DJCRMX2.Deck(2);
-+    engine.setValue("[Microphone]", "enabled", 0);
-+    engine.setValue("[Microphone]", "talkover", 0);
- }
- 
--/*  [ Function wheelPress ] - Version 0.1.2
--  * Detects whether a jog wheel is pressed or not and sets a specific
--  * variable on and off accordingly.
--*/
--DJCRMX2.wheelPress = function (channel, control, value, status, group){
-- if (status == 0x90) // If status #144 is active (2 possibilities)
-- {
--  if (value == 0x7F) // And the jog wheel is pressed down:
--  {  /*  engine.scratchEnable(int,int,float,float,float,bool);
--       * [ int deck ]              Which track/platter is playing?
--       * [ int intervalsPerRev ]   # of MIDI signals sent in 1 spin.
--       * [ float rpm ]             Imaginary vinyl rotation speed.
--       * [ float alpha ]           Just a fine-tuning variable.
--       * [ float beta ]            Just a fine-tuning variable.
--       * [ bool ramp ]             As far as I know, nothing...
--     */
--      var alpha = 1.0/8;
--      var beta = alpha/32;
--      if(group=="[Channel1]")
--      {
--       engine.scratchEnable(1, 250, 50, alpha, beta);
--       DJCRMX2.scratching[1] = true; //[DEP]
--	  }
--	  if(group=="[Channel2]")
--	  {
--	   engine.scratchEnable(2, 250, 50, alpha, beta);
--	   DJCRMX2.scratching[2] = true; //[DEP]
--	  }
--      
--  }
--  if (value == 0x00 ) // If the jog wheel is released:
--  {
--   if(group=="[Channel1]")
--   {
--    DJCRMX2.scratching[1] = false; // <- v1.10.x and below
--    engine.scratchDisable(1);
--   }
--   if(group=="[Channel2]")
--   {
--    DJCRMX2.scratching[2] = false; // <- v1.10.x and below
--   engine.scratchDisable(2);
--   }
--  }
-- }
-- else //Default setting where button is not held down.
-- {
--  DJCRMX2.scratching[1] = false;  // Only for v1.10.x and below
--  DJCRMX2.scratching[2] = false;  // Only for v1.10.x and below
--  engine.scratchDisable(1);
--  engine.scratchDisable(2);
-- }
-- return;
-+////////////////////////////////////////////////////////////////////////
-+// Decks                                                              //
-+////////////////////////////////////////////////////////////////////////
-+
-+DJCRMX2.Deck = function(number) {
-+    this.number = number;
-+    this.group = "[Channel" + this.number + "]";
-+    this.scratchTimer = 0;
-+};
-+
-+DJCRMX2.Deck.prototype.wheelPress = function (value) {
-+    if (this.scratchTimer != 0) {
-+        // The wheel was touched again, reset the timer.
-+        engine.stopTimer(this.scratchTimer);
-+        this.scratchTimer = 0;
-+    }
-+    if (value == 0x7F) {
-+        // And the jog wheel is pressed down:
-+
-+         /*  engine.scratchEnable(int,int,float,float,float,bool);
-+         * [ int deck ]              Which track/platter is playing?
-+         * [ int intervalsPerRev ]   # of MIDI signals sent in 1 spin.
-+         * [ float rpm ]             Imaginary vinyl rotation speed.
-+         * [ float alpha ]           Just a fine-tuning variable.
-+         * [ float beta ]            Just a fine-tuning variable.
-+         * [ bool ramp ]             As far as I know, nothing...
-+         */
-+
-+         var alpha = 1.0 / 8;
-+         var beta = alpha / 32;
-+         engine.scratchEnable(this.number, 256, 33 + 1/3, alpha, beta);
-+    } else {
-+        // The wheel touch sensor can be overly sensitive, so don't release scratch mode right away.
-+        // Depending on how fast the platter was moving, lengthen the time we'll wait.
-+        var scratchRate = Math.abs(engine.getValue(this.group, "scratch2"));
-+        var inertiaTime = Math.pow(1.8, scratchRate) * 50;
-+        if (inertiaTime < 100) {
-+            // Just do it now.
-+            this.finishWheelPress();
-+        } else {         
-+            this.scratchTimer = engine.beginTimer(
-+                    100, "DJCRMX2.decks[" + this.number + "].finishWheelPress()", true);
-+        }
-+    }
-+}
-+
-+DJCRMX2.Deck.prototype.finishWheelPress = function() {
-+    this.scratchTimer = 0;
-+    var play = engine.getValue(this.group, "play");
-+    if (play != 0) {
-+        // If we are playing, just hand off to the engine.
-+        engine.scratchDisable(this.number, true);
-+    } else {
-+        // If things are paused, there will be a non-smooth handoff between scratching and jogging.
-+        // Instead, keep scratch on until the platter is not moving.
-+        var scratchRate = Math.abs(engine.getValue(this.group, "scratch2"));
-+        if (scratchRate < 0.01) {
-+            // The platter is basically stopped, now we can disable scratch and hand off to jogging.
-+            engine.scratchDisable(this.number, false);
-+        } else {
-+            // Check again soon.
-+            this.scratchTimer = engine.beginTimer(
-+                    100, "DJCRMX2.decks[" + this.number + "].finishWheelPress()", true);
-+        }
-+    }
-+};
-+
-+
-+/* [ Function wheelTurn ]
-+ * Pays attention to the current deck, checks scratching, affects the
-+ * song accordingly.
-+ */
-+DJCRMX2.Deck.prototype.wheelTurn = function (value) {
-+    var newValue = 0;
-+    // Spinning backwards = 127 or less (less meaning faster)
-+    // Spinning forwards  = 1 or more (more meaning faster)
-+    if (value - 64 > 0) {
-+        newValue = value - 128;
-+    } else {
-+        newValue = value;
-+    }
-+    
-+    if (engine.isScratching(this.number)) {
-+        engine.scratchTick(this.number, newValue);
-+    } else {
-+        engine.setValue(this.group, "jog", newValue);
-+    }   
- }
-+
-+/*  [ Function wheelPress ]
-+ * Detects whether a jog wheel is pressed or not and sets a specific
-+ * variable on and off accordingly.
-+ */
-+DJCRMX2.wheelPress = function (channel, control, value, status, group) {
-+    var deck = 0;     
-+    if (group == "[Channel1]") {
-+        deck = 1;
-+    } else  if (group == "[Channel2]") {
-+        deck = 2;
-+    } else {
-+        return; 
-+    }
-+    DJCRMX2.decks[deck].wheelPress(value);
-+}
-+
-  
--/*  [ Function wheelTurn ] - Version 0.1.2
--  * Pays attention to the current deck, checks scratching, affects the
--  * song accordingly.
--*/
--DJCRMX2.wheelTurn = function (channel, control, value, status, group){
-- var newValue=0;
-- // Spinning backwards = 127 or less (less meaning faster)
-- // Spinning forwards  = 1 or more (more meaning faster)
-- if (value-64 > 0) newValue = (value-128);
-- else newValue=value;
-- //if (!engine.isScratching(DJCRMX2.currentDeck)) // [FUT]
-- if(group=="[Channel1]")
-- {
--  if(DJCRMX2.scratching[1]==true) {engine.scratchTick(1,newValue);return;}
-- }
-- else if(group=="[Channel2]")
-- {
--  if(DJCRMX2.scratching[2]==true) {engine.scratchTick(2,newValue);return;}
-- }
-- engine.setValue(group, "jog", newValue);
-- return;
-+/* [ Function wheelTurn ]
-+ * Pays attention to the current deck, checks scratching, affects the
-+ * song accordingly.
-+ */
-+DJCRMX2.wheelTurn = function (channel, control, value, status, group) {
-+    var deck = 0;     
-+    if (group == "[Channel1]") {
-+        deck = 1;
-+    } else  if (group == "[Channel2]") {
-+        deck = 2;
-+    } else {
-+        return; 
-+    }
-+    DJCRMX2.decks[deck].wheelTurn(value);
- }
- 
--DJCRMX2.micSwitch = function (channel, control, value, status) //???
-+DJCRMX2.micSwitch = function (channel, control, value, status)
- {
-- if(status == 0x90 && control == 0x48 && value == 0x7F)
-- {
--  engine.setValue("[Microphone]","enabled",1);
--  engine.setValue("[Microphone]","talkover",1);
-- }
-- if(status == 0x90 && control == 0x48 && value == 0x00)
-- {
--  engine.setValue("[Microphone]","enabled",0);
--  engine.setValue("[Microphone]","talkover",0);
-- }
-+    if (status == 0x90 && control == 0x48 && value == 0x7F) {
-+        engine.setValue("[Microphone]","enabled",1);
-+        engine.setValue("[Microphone]","talkover",1);
-+    } else if (status == 0x90 && control == 0x48 && value == 0x00) {
-+        engine.setValue("[Microphone]","enabled",0);
-+        engine.setValue("[Microphone]","talkover",0);
-+    }
- }
- 
--/*  [ Function shutdown ] - Version 0.1.3
--  * Sets variables down for shutoff.
--*/
--DJCRMX2.shutdown = function(id){
-- DJCRMX2.scratching[1]=false;
-- DJCRMX2.scratching[2]=false;
-- engine.setValue("[Microphone]","enabled",0);
-- engine.setValue("[Microphone]","talkover",0);
-+/* [ Function shutdown ] - Version 0.1.3
-+ * Sets variables down for shutoff.
-+ */
-+DJCRMX2.shutdown = function (id) {
-+    engine.setValue("[Microphone]", "enabled", 0);
-+    engine.setValue("[Microphone]", "talkover", 0);
- }

diff --git a/media-sound/mixxx/files/mixxx-2.0.0-sqlite3.patch b/media-sound/mixxx/files/mixxx-2.0.0-sqlite3.patch
deleted file mode 100644
index a8cb15e63c6..00000000000
--- a/media-sound/mixxx/files/mixxx-2.0.0-sqlite3.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-https://bugs.gentoo.org/622776
-
---- mixxx-2.0.0/src/library/trackcollection.h
-+++ mixxx-2.0.0/src/library/trackcollection.h
-@@ -34,8 +34,7 @@
- #include "library/dao/libraryhashdao.h"
- 
- #ifdef __SQLITE3__
--typedef struct sqlite3_context sqlite3_context;
--typedef struct Mem sqlite3_value;
-+#include <sqlite3.h>
- #endif
- 
- class TrackInfoObject;

diff --git a/media-sound/mixxx/mixxx-2.0.0-r5.ebuild b/media-sound/mixxx/mixxx-2.0.0-r5.ebuild
deleted file mode 100644
index a8fcb5ca5c8..00000000000
--- a/media-sound/mixxx/mixxx-2.0.0-r5.ebuild
+++ /dev/null
@@ -1,144 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit flag-o-matic scons-utils toolchain-funcs
-
-DESCRIPTION="Advanced Digital DJ tool based on Qt"
-HOMEPAGE="https://www.mixxx.org/"
-SRC_URI="https://downloads.${PN}.org/${P}/${P}-src.tar.gz"
-
-# Upstream patches
-SRC_URI+=" https://github.com/mixxxdj/mixxx/commit/51d95ba58d99309f439cb7e2d1285cfb33aa0f63.patch -> ${PN}-2.0.0-ffmpeg30.patch"
-SRC_URI+=" https://github.com/mixxxdj/mixxx/commit/869e07067b15e09bf7ef886a8772afdfb79cbc3c.patch -> ${PN}-2.0.0-ffmpeg31.patch"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 x86"
-IUSE="aac debug doc ffmpeg hid mp3 mp4 opus shout wavpack"
-
-# fails to compile system-fidlib. Add ">media-libs/fidlib-0.9.10-r1" once this
-# got fixed
-RDEPEND="
-	dev-db/sqlite
-	dev-libs/protobuf:0=
-	dev-qt/qtconcurrent:5
-	dev-qt/qtcore:5
-	dev-qt/qtgui:5
-	dev-qt/qtnetwork:5
-	dev-qt/qtopengl:5
-	dev-qt/qtscript:5[scripttools]
-	dev-qt/qtsql:5
-	dev-qt/qtsvg:5
-	dev-qt/qtwidgets:5
-	dev-qt/qtxml:5
-	media-libs/chromaprint
-	media-libs/flac
-	media-libs/libid3tag
-	media-libs/libogg
-	media-libs/libsndfile
-	>=media-libs/libsoundtouch-1.5
-	media-libs/libvorbis
-	>=media-libs/portaudio-19_pre
-	media-libs/portmidi
-	media-libs/rubberband
-	media-libs/taglib
-	media-libs/vamp-plugin-sdk
-	sci-libs/fftw:3.0=
-	virtual/libusb:1
-	virtual/opengl
-	x11-libs/libX11
-	aac? (
-		media-libs/faad2
-		media-libs/libmp4v2:0
-	)
-	hid? ( dev-libs/hidapi )
-	mp3? ( media-libs/libmad )
-	mp4? ( media-libs/libmp4v2:= )
-	opus? ( media-libs/opusfile )
-	shout? ( media-libs/libshout )
-	wavpack? ( media-sound/wavpack )
-	ffmpeg? ( media-video/ffmpeg:0= )
-"
-# media-libs/rubberband RDEPENDs on sci-libs/fftw:3.0
-DEPEND="
-	${RDEPEND}
-	virtual/pkgconfig
-	dev-qt/qttest:5
-	dev-qt/qtxmlpatterns:5
-"
-
-PATCHES=(
-	"${FILESDIR}"/${PN}-2.0.0-docs.patch
-
-	"${DISTDIR}"/${P}-ffmpeg30.patch
-	"${DISTDIR}"/${P}-ffmpeg31.patch
-
-	"${FILESDIR}"/${P}-chromaprint-1.4.patch #604528
-	"${FILESDIR}"/${P}-gcc62.patch #595090
-
-	"${FILESDIR}"/${PN}-2.0.0-sqlite3.patch #622776
-
-	# The following patches were taken from sunny-overlay (bug #608430)
-	"${FILESDIR}"/${P}-fix-formatting-of-time-durations.patch
-	"${FILESDIR}"/${P}-eliminate-unnecessary-heap-allocation-of-qtime.patch
-	"${FILESDIR}"/${P}-fix-missing-pointer-initialization.patch
-	"${FILESDIR}"/${P}-move-definition-of-time-formatseconds-into-dot-cpp-file.patch
-	"${FILESDIR}"/${P}-fix-formatting-of-time-durations2.patch
-	"${FILESDIR}"/${P}-rmx2-backport-controller-scripts.patch
-)
-
-src_prepare() {
-	# use multilib compatible directory for plugins
-	sed -i -e "/unix_lib_path =/s/'lib'/'$(get_libdir)'/" src/SConscript || die
-
-	default
-}
-
-src_configure() {
-	local myoptimize=0
-
-	# Required for >=qt-5.7.0 (bug #590690)
-	append-cxxflags -std=c++11
-
-	# Try to get cpu type based on CFLAGS.
-	# Bug #591968
-	for i in $(get-flag mcpu) $(get-flag march) ; do
-		if [[ ${i} = native ]] ; then
-			myoptimize="native"
-			break
-		fi
-	done
-
-	myesconsargs=(
-		prefix="${EPREFIX}/usr"
-		qtdir="${EPREFIX}/usr/$(get_libdir)/qt5"
-		faad="$(usex aac 1 0)"
-		ffmpeg="$(usex ffmpeg 1 0)"
-		hid="$(usex hid 1 0)"
-		hifieq=1
-		m4a="$(usex mp4 1 0)"
-		mad="$(usex mp3 1 0)"
-		optimize="${myoptimize}"
-		opus="$(usex opus 1 0)"
-		qdebug="$(usex debug 1 0)"
-		qt5=1
-		shoutcast="$(usex shout 1 0)"
-		vinylcontrol=1
-		wv="$(usex wavpack 1 0)"
-	)
-}
-
-src_compile() {
-	CC="$(tc-getCC)" CXX="$(tc-getCXX)" LINKFLAGS="${LDFLAGS}" \
-	LIBDIR="${EPREFIX}/usr/$(get_libdir)" escons ${myesconsargs[@]}
-}
-
-src_install() {
-	CC="$(tc-getCC)" CXX="$(tc-getCXX)" LINKFLAGS="${LDFLAGS}" \
-	LIBDIR="${EPREFIX}/usr/$(get_libdir)" escons ${myesconsargs[@]} \
-		install_root="${ED}"/usr install
-
-	dodoc README Mixxx-Manual.pdf
-}


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-sound/mixxx/, media-sound/mixxx/files/
@ 2021-05-08 17:58 Rémi Cardona
  0 siblings, 0 replies; 7+ messages in thread
From: Rémi Cardona @ 2021-05-08 17:58 UTC (permalink / raw
  To: gentoo-commits

commit:     87d9d3175dcbcb7b9aecb9a50bd896cdc8b6feab
Author:     Rémi Cardona <remi <AT> gentoo <DOT> org>
AuthorDate: Sat May  8 17:58:03 2021 +0000
Commit:     Rémi Cardona <remi <AT> gentoo <DOT> org>
CommitDate: Sat May  8 17:58:44 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=87d9d317

media-sound/mixxx: add patch to fix build with scons 4.1

Closes: https://bugs.gentoo.org/767838
Package-Manager: Portage-3.0.18, Repoman-3.0.3
Signed-off-by: Rémi Cardona <remi <AT> gentoo.org>

 .../mixxx/files/mixxx-2.2.4-fix-scons-compat.patch | 24 ++++++++++++++++++++++
 media-sound/mixxx/mixxx-2.2.4.ebuild               |  3 ++-
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/media-sound/mixxx/files/mixxx-2.2.4-fix-scons-compat.patch b/media-sound/mixxx/files/mixxx-2.2.4-fix-scons-compat.patch
new file mode 100644
index 00000000000..816d888a734
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.2.4-fix-scons-compat.patch
@@ -0,0 +1,24 @@
+diff -dNur a/build/qt4.py b/build/qt4.py
+--- a/build/qt4.py	2020-05-15 23:26:10.000000000 +0200
++++ b/build/qt4.py	2021-03-17 11:13:58.867445884 +0100
+@@ -42,7 +42,7 @@
+ import SCons.Tool
+ import SCons.Util
+ 
+-class ToolQt4Warning(SCons.Warnings.Warning):
++class ToolQt4Warning(SCons.Warnings.SConsWarning):
+     pass
+ 
+ class GeneratedMocFileNotIncluded(ToolQt4Warning):
+diff -dNur a/build/qt5.py b/build/qt5.py
+--- a/build/qt5.py	2020-05-15 23:26:10.000000000 +0200
++++ b/build/qt5.py	2021-03-17 11:12:39.568689777 +0100
+@@ -43,7 +43,7 @@
+ import SCons.Tool
+ import SCons.Util
+ 
+-class ToolQt5Warning(SCons.Warnings.Warning):
++class ToolQt5Warning(SCons.Warnings.SConsWarning):
+     pass
+ 
+ class GeneratedMocFileNotIncluded(ToolQt5Warning):

diff --git a/media-sound/mixxx/mixxx-2.2.4.ebuild b/media-sound/mixxx/mixxx-2.2.4.ebuild
index 5e8d641266f..da8c58ae71b 100644
--- a/media-sound/mixxx/mixxx-2.2.4.ebuild
+++ b/media-sound/mixxx/mixxx-2.2.4.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
@@ -84,6 +84,7 @@ PATCHES=(
 	"${FILESDIR}"/${PN}-2.0.0-docs.patch
 	"${FILESDIR}"/${PN}-2.2.3-qt-5.14.patch
 	"${FILESDIR}"/${PN}-2.2.4-metadata.patch
+	"${FILESDIR}"/${PN}-2.2.4-fix-scons-compat.patch
 )
 
 src_prepare() {


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-sound/mixxx/, media-sound/mixxx/files/
@ 2022-01-18  8:50 Lars Wendler
  0 siblings, 0 replies; 7+ messages in thread
From: Lars Wendler @ 2022-01-18  8:50 UTC (permalink / raw
  To: gentoo-commits

commit:     cdc315bb36142dafc122e6338bb64c4da84f62dd
Author:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 18 08:50:34 2022 +0000
Commit:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
CommitDate: Tue Jan 18 08:50:45 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cdc315bb

media-sound/mixxx: Bump to version 2.3.1

Closes: https://bugs.gentoo.org/809305
Signed-off-by: Lars Wendler <polynomial-c <AT> gentoo.org>

 media-sound/mixxx/Manifest                         |   1 +
 media-sound/mixxx/files/mixxx-2.3.0-cmake.patch    |  11 ++
 media-sound/mixxx/files/mixxx-2.3.0-docs.patch     |  26 +++++
 .../files/mixxx-2.3.1-benchmark_compile_fix.patch  |  10 ++
 media-sound/mixxx/mixxx-2.3.1.ebuild               | 130 +++++++++++++++++++++
 5 files changed, 178 insertions(+)

diff --git a/media-sound/mixxx/Manifest b/media-sound/mixxx/Manifest
index 34cfc9a0f4f6..21aab8965e21 100644
--- a/media-sound/mixxx/Manifest
+++ b/media-sound/mixxx/Manifest
@@ -1 +1,2 @@
 DIST mixxx-2.2.4.tar.gz 35480450 BLAKE2B 3ce656a7249ce7105de369f650cdc6e3fc70df1899ff99fc37d2c938545d1e8bec2ef3afd34ce3d63c29fae900ed67abb3ab615678ed36dc9bb5c2f14854198f SHA512 34f67088ea2271cb13b75d001d3814237b1b6c2052646d670a36e341fb78e24c34d361a3eb03b0dbfb2d94b0026fecc9125713d7533aac7e99161c27090115fa
+DIST mixxx-2.3.1.tar.gz 39977210 BLAKE2B 08edfe19f5d0f16072762c3800e34ff37dcad478bde04356b0aae6a02ab99b115a5d1e8a33846f7f142228860bb5b19ded16b52dd464e4738462f6634b9fd6be SHA512 17cf8dee2aaca2ed85067474d40b0955abd22268767a9c68dbc8126554e6b216ddab9a42b6c888606aca61fdcccccda3062f5b4f1f550722c5033c516e046816

diff --git a/media-sound/mixxx/files/mixxx-2.3.0-cmake.patch b/media-sound/mixxx/files/mixxx-2.3.0-cmake.patch
new file mode 100644
index 000000000000..b573a624d31e
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.3.0-cmake.patch
@@ -0,0 +1,11 @@
+--- mixxx-2.3.0/CMakeLists.txt
++++ mixxx-2.3.0/CMakeLists.txt
+@@ -53,8 +53,6 @@
+     set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build." FORCE)
+     # Set the possible values of build type for cmake-gui
+     set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo")
+-  elseif(NOT CMAKE_BUILD_TYPE MATCHES "^(Debug|Release|RelWithDebInfo)$")
+-    message(FATAL_ERROR "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} is not supported, use one of Debug, Release or RelWithDebInfo.")
+   endif()
+ endif()
+ 

diff --git a/media-sound/mixxx/files/mixxx-2.3.0-docs.patch b/media-sound/mixxx/files/mixxx-2.3.0-docs.patch
new file mode 100644
index 000000000000..e956e1ce2401
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.3.0-docs.patch
@@ -0,0 +1,26 @@
+--- mixxx-2.3.0/CMakeLists.txt
++++ mixxx-2.3.0/CMakeLists.txt
+@@ -1320,23 +1320,6 @@
+     "${MIXXX_INSTALL_LICENSEDIR}"
+ )
+ 
+-# Documentation
+-install(
+-  FILES
+-    "${CMAKE_CURRENT_SOURCE_DIR}/README.md"
+-    "${CMAKE_CURRENT_SOURCE_DIR}/res/Mixxx-Keyboard-Shortcuts.pdf"
+-  DESTINATION
+-    "${MIXXX_INSTALL_DOCDIR}"
+-)
+-if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/res/Mixxx-Manual.pdf")
+-  install(
+-    FILES
+-      "${CMAKE_CURRENT_SOURCE_DIR}/res/Mixxx-Manual.pdf"
+-    DESTINATION
+-      "${MIXXX_INSTALL_DOCDIR}"
+-  )
+-endif()
+-
+ # Additional Linux-only files
+ if(UNIX AND NOT APPLE)
+   # .desktop file for KDE/GNOME menu

diff --git a/media-sound/mixxx/files/mixxx-2.3.1-benchmark_compile_fix.patch b/media-sound/mixxx/files/mixxx-2.3.1-benchmark_compile_fix.patch
new file mode 100644
index 000000000000..2ab50c85309e
--- /dev/null
+++ b/media-sound/mixxx/files/mixxx-2.3.1-benchmark_compile_fix.patch
@@ -0,0 +1,10 @@
+--- mixxx-2.3.1/lib/benchmark/src/benchmark_register.h
++++ mixxx-2.3.1/lib/benchmark/src/benchmark_register.h
+@@ -2,6 +2,7 @@
+ #define BENCHMARK_REGISTER_H
+ 
+ #include <vector>
++#include <limits>
+ 
+ #include "check.h"
+ 

diff --git a/media-sound/mixxx/mixxx-2.3.1.ebuild b/media-sound/mixxx/mixxx-2.3.1.ebuild
new file mode 100644
index 000000000000..c949498e285a
--- /dev/null
+++ b/media-sound/mixxx/mixxx-2.3.1.ebuild
@@ -0,0 +1,130 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake xdg udev
+
+DESCRIPTION="Advanced Digital DJ tool based on Qt"
+HOMEPAGE="https://www.mixxx.org/"
+if [[ "${PV}" == *9999 ]] ; then
+	inherit git-r3
+	if [[ "${PV}" == ?.?.9999 ]] ; then
+		EGIT_BRANCH=${PV%.9999}
+	fi
+	EGIT_REPO_URI="https://github.com/mixxxdj/${PN}.git"
+else
+	SRC_URI="https://github.com/mixxxdj/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+	#S="${WORKDIR}/${PN}-release-${PV}"
+	KEYWORDS="~amd64 ~x86"
+fi
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="aac doc ffmpeg hid keyfinder lv2 mp3 mp4 opus qtkeychain shout wavpack"
+
+RDEPEND="
+	dev-db/sqlite
+	dev-libs/glib:2
+	dev-libs/protobuf:0=
+	dev-qt/qtconcurrent:5
+	dev-qt/qtcore:5
+	dev-qt/qtdbus:5
+	dev-qt/qtgui:5
+	dev-qt/qtnetwork:5
+	dev-qt/qtopengl:5
+	dev-qt/qtscript:5[scripttools]
+	dev-qt/qtsql:5
+	dev-qt/qtsvg:5
+	dev-qt/qtwidgets:5
+	dev-qt/qtx11extras:5
+	dev-qt/qtxml:5
+	media-libs/chromaprint
+	media-libs/flac
+	media-libs/libebur128
+	media-libs/libid3tag:=
+	media-libs/libogg
+	media-libs/libsndfile
+	media-libs/libsoundtouch
+	media-libs/libvorbis
+	media-libs/portaudio
+	media-libs/portmidi
+	media-libs/rubberband
+	media-libs/taglib
+	media-libs/vamp-plugin-sdk
+	sci-libs/fftw:3.0=
+	sys-power/upower
+	virtual/glu
+	virtual/libusb:1
+	virtual/opengl
+	virtual/udev
+	x11-libs/libX11
+	aac? (
+		media-libs/faad2
+		media-libs/libmp4v2:0
+	)
+	ffmpeg? ( media-video/ffmpeg:0= )
+	hid? ( dev-libs/hidapi )
+	keyfinder? ( media-libs/libkeyfinder )
+	lv2? ( media-libs/lilv )
+	mp3? ( media-libs/libmad )
+	mp4? ( media-libs/libmp4v2:= )
+	opus? (	media-libs/opusfile )
+	qtkeychain? ( dev-libs/qtkeychain )
+	shout? ( >=media-libs/libshout-2.4.5 )
+	wavpack? ( media-sound/wavpack )
+	"
+
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig
+	dev-qt/qttest:5
+	dev-qt/qtxmlpatterns:5"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-2.3.0-docs.patch
+	"${FILESDIR}"/${PN}-2.3.0-cmake.patch
+	"${FILESDIR}"/${PN}-2.3.1-benchmark_compile_fix.patch
+)
+
+src_prepare() {
+	cmake_src_prepare
+}
+
+src_configure() {
+	local mycmakeargs=(
+		-DFAAD="$(usex aac on off)"
+		-DFFMPEG="$(usex ffmpeg on off)"
+		-DHID="$(usex hid on off)"
+		-DLILV="$(usex lv2 on off)"
+		-DMAD="$(usex mp3 on off)"
+		-DOPTIMIZE="off"
+		-DCCACHE_SUPPORT="off"
+		-DOPUS="$(usex opus on off)"
+		-DBROADCAST="$(usex shout on off)"
+		-DVINYLCONTROL="on"
+		-DINSTALL_USER_UDEV_RULES=OFF
+		-DWAVPACK="$(usex wavpack on off)"
+		-DQTKEYCHAIN="$(usex qtkeychain on off)"
+		-DKEYFINDER="$(usex keyfinder on off)"
+	)
+
+	if [[ "${PV}" == 9999 ]] ; then
+		mycmakeargs+=(
+			-DENGINEPRIME="OFF"
+
+		)
+	fi
+	cmake_src_configure
+}
+
+src_compile() {
+	cmake_src_compile
+}
+
+src_install() {
+	cmake_src_install
+	udev_newrules "${S}"/res/linux/mixxx-usb-uaccess.rules 69-mixxx-usb-uaccess.rules
+
+	if use doc ; then
+		dodoc README Mixxx-Manual.pdf
+	fi
+}


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-sound/mixxx/, media-sound/mixxx/files/
@ 2023-01-23  4:28 Sam James
  0 siblings, 0 replies; 7+ messages in thread
From: Sam James @ 2023-01-23  4:28 UTC (permalink / raw
  To: gentoo-commits

commit:     0a3a03453658305cf00633b5b241b61d4fefd29e
Author:     Marco Sirabella <marco <AT> sirabella <DOT> org>
AuthorDate: Sun Jan 22 22:48:58 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Jan 23 04:27:55 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0a3a0345

media-sound/mixxx: fix(disable) doc generation

Signed-off-by: Marco Sirabella <marco <AT> sirabella.org>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-sound/mixxx/files/mixxx-9999-docs.patch | 18 +++++++++++++-----
 media-sound/mixxx/mixxx-9999.ebuild           |  3 ++-
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/media-sound/mixxx/files/mixxx-9999-docs.patch b/media-sound/mixxx/files/mixxx-9999-docs.patch
index d1de4e6e9443..0ac74959df2e 100644
--- a/media-sound/mixxx/files/mixxx-9999-docs.patch
+++ b/media-sound/mixxx/files/mixxx-9999-docs.patch
@@ -1,19 +1,27 @@
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 0cc5b3a7ba..63f18bfda4 100644
+index e35d8dd4e1..798179955c 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -1142,15 +1142,6 @@ install(
+@@ -1504,23 +1504,6 @@ install(
      "${MIXXX_INSTALL_LICENSEDIR}"
  )
- 
+
 -# Documentation
 -install(
 -  FILES
--    "${CMAKE_CURRENT_SOURCE_DIR}/README"
--    "${CMAKE_CURRENT_SOURCE_DIR}/Mixxx-Manual.pdf"
+-    "${CMAKE_CURRENT_SOURCE_DIR}/README.md"
+-    "${CMAKE_CURRENT_SOURCE_DIR}/res/Mixxx-Keyboard-Shortcuts.pdf"
 -  DESTINATION
 -    "${MIXXX_INSTALL_DOCDIR}"
 -)
+-if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/res/Mixxx-Manual.pdf")
+-  install(
+-    FILES
+-      "${CMAKE_CURRENT_SOURCE_DIR}/res/Mixxx-Manual.pdf"
+-    DESTINATION
+-      "${MIXXX_INSTALL_DOCDIR}"
+-  )
+-endif()
 -
  # Additional Linux-only files
  if(UNIX AND NOT APPLE)

diff --git a/media-sound/mixxx/mixxx-9999.ebuild b/media-sound/mixxx/mixxx-9999.ebuild
index 5348bd3d18a5..72ed63ef7744 100644
--- a/media-sound/mixxx/mixxx-9999.ebuild
+++ b/media-sound/mixxx/mixxx-9999.ebuild
@@ -105,6 +105,7 @@ src_configure() {
 		-DWAVPACK="$(usex wavpack on off)"
 		-DQTKEYCHAIN="$(usex qtkeychain on off)"
 		-DKEYFINDER="$(usex keyfinder on off)"
+		-DDOWNLOAD_MANUAL=OFF
 	)
 
 	if [[ "${PV}" == 9999 ]] ; then
@@ -125,7 +126,7 @@ src_install() {
 	udev_newrules "${S}"/res/linux/mixxx-usb-uaccess.rules 69-mixxx-usb-uaccess.rules
 
 	if use doc ; then
-		dodoc README Mixxx-Manual.pdf
+		dodoc README res/Mixxx-Keyboard-Shortcuts.pdf
 	fi
 }
 


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-01-23  4:29 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-09-07 20:34 [gentoo-commits] repo/gentoo:master commit in: media-sound/mixxx/, media-sound/mixxx/files/ Andreas Sturmlechner
  -- strict thread matches above, loose matches on Subject: below --
2023-01-23  4:28 Sam James
2022-01-18  8:50 Lars Wendler
2021-05-08 17:58 Rémi Cardona
2017-08-10 23:55 Lars Wendler
2017-05-06 22:51 Lars Wendler
2017-01-18 23:36 Lars Wendler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox