Index: mixxx/Makefile =================================================================== --- mixxx/Makefile +++ mixxx/Makefile @@ -2,11 +2,8 @@ # $FreeBSD$ PORTNAME= mixxx -PORTVERSION= 2.0.0 -DISTVERSIONSUFFIX= -src -PORTREVISION= 6 +PORTVERSION= 2.1.1 CATEGORIES= audio -MASTER_SITES= http://downloads.mixxx.org/${PORTNAME}-${PORTVERSION}/ MAINTAINER= acm@FreeBSD.org COMMENT= DJ mixing application @@ -14,34 +11,59 @@ LICENSE= GPLv2+ LICENSE_FILE= ${WRKSRC}/LICENSE -IGNORE= it will be updated to mixxx 2.1.0. FLAVOR needs portmgr approval +BROKEN_aarch64= fails to compile: Exception("invalid machine type") +BROKEN_powerpc64= fails to configure: unmet dependencies: Could not find libprotobuf, libchromaprint, libmp4, and libwavpack LIB_DEPENDS= libchromaprint.so:audio/chromaprint \ libFLAC.so:audio/flac \ + libfftw3.so:math/fftw3 \ libid3tag.so:audio/libid3tag \ libmad.so:audio/libmad \ libportaudio.so:audio/portaudio \ + libSoundTouch.so:audio/soundtouch \ + libebur128.so:audio/libebur128 \ librubberband.so:audio/rubberband \ libsndfile.so:audio/libsndfile \ libvamp-sdk.so:audio/vamp-plugin-sdk \ + libogg.so:audio/libogg \ libvorbisfile.so:audio/libvorbis \ libtag.so:audio/taglib \ libprotobuf.so:devel/protobuf -WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} +FLAVORS= qt4 qt5 +FLAVOR?= ${FLAVORS:[1]} -BROKEN_aarch64= fails to compile: Exception("invalid machine type") -BROKEN_powerpc64= fails to configure: unmet dependencies: Could not find libprotobuf, libchromaprint, libmp4, and libwavpack +qt4_CONFLICTS_INSTALL= mixxx-qt5 mixxx20 +qt5_CONFLICTS_INSTALL= mixxx-qt4 mixxx20 +qt4_PKGNAMESUFFIX=-qt4 +qt5_PKGNAMESUFFIX=-qt5 USES= scons iconv pkgconfig -USE_QT4= corelib gui network opengl script scripttools sql sql-sqlite3 \ - svg testlib xml xmlpatterns linguisttools_build moc_build \ - qmake_build rcc_build uic_build +USE_XORG= x11 USE_GL= gl glu +USE_GITHUB= yes +GH_ACCOUNT= mixxxdj +GH_TAGNAME= 786452e MAKE_ARGS= qtdir="${PREFIX}" install_root="${PREFIX}" \ - build=release optimize=native + build=release optimize=native ${GUI} battery=0 LATE_INSTALL_ARGS= --install-sandbox=${STAGEDIR} +.if ${FLAVOR} == qt4 +USES+= qt:4 +USE_QT= corelib dbus gui network opengl script scripttools sql sql-sqlite3 \ + svg testlib xml xmlpatterns linguisttools_build moc_build \ + qmake_build rcc_build testlib uic_build +GUI= qt4=1 +.endif + +.if ${FLAVOR} == qt5 +USES+= qt:5 +USE_QT= buildtools concurrent core dbus gui network opengl script scripttools \ + sql sql-sqlite3 svg testlib xml xmlpatterns linguisttools_build \ + qmake_build widgets +GUI= qt5=1 +.endif + PORTDATA= * PORTDOCS= * @@ -82,7 +104,9 @@ @${REINPLACE_CMD} -e "s|^Exec=.*|Exec=mixxx| ; \ s|^Icon=.*|Icon=${PREFIX}/share/pixmaps/mixxx-icon.png|" \ ${WRKSRC}/res/linux/mixxx.desktop -.for i in midi/midimessage.h qtscript-bytearray/bytearrayclass.h + @${REINPLACE_CMD} -e "s,(Q_OS_LINUX),(Q_OS_LINUX) || defined(Q_OS_FREEBSD),g" \ + ${WRKSRC}/src/util/screensaver.h +.for i in midi/midimessage.h @${ECHO_CMD} >> ${WRKSRC}/src/controllers/${i} .endfor @@ -95,10 +119,8 @@ (cd ${WRKSRC} && ${INSTALL_DATA} ${i} \ ${STAGEDIR}${DOCSDIR}) .endfor - @${MKDIR} ${STAGEDIR}${DOCSDIR}/doc/HID -.for i in *.odt *.pdf - (cd ${WRKSRC}/doc/HID && ${INSTALL_DATA} ${i} \ - ${STAGEDIR}${DOCSDIR}/doc/HID) -.endfor + @${MKDIR} ${STAGEDIR}${DOCSDIR} + cd ${WRKSRC} && ${INSTALL_DATA} Mixxx-Manual.pdf \ + ${STAGEDIR}${DOCSDIR} .include Index: mixxx/distinfo =================================================================== --- mixxx/distinfo +++ mixxx/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1483555438 -SHA256 (mixxx-2.0.0-src.tar.gz) = e1b8f33bba35046608578095ed3209967034579252d84c99e6bc03ec030f676d -SIZE (mixxx-2.0.0-src.tar.gz) = 25300881 +TIMESTAMP = 1533279154 +SHA256 (mixxxdj-mixxx-2.1.1-786452e_GH0.tar.gz) = 15b175e06ab8b1b6753361e460011eccd2b0062af009462c47c6525d7a6226e1 +SIZE (mixxxdj-mixxx-2.1.1-786452e_GH0.tar.gz) = 34456946 Index: mixxx/files/patch-build_depends.py =================================================================== --- mixxx/files/patch-build_depends.py +++ mixxx/files/patch-build_depends.py @@ -1,50 +1,145 @@ ---- build/depends.py.orig 2015-12-29 16:10:41 UTC -+++ build/depends.py -@@ -262,7 +262,7 @@ class Qt(Dependence): +--- build/depends.py 2018-04-15 13:30:27.000000000 -0500 ++++ build/depends.py 2018-04-23 21:50:54.360625000 -0500 +@@ -12,7 +12,7 @@ + if not conf.CheckLib('portaudio'): + raise Exception( + 'Did not find libportaudio.a, portaudio.lib, or the PortAudio-v19 development header files.') +- elif build.platform_is_linux: ++ elif build.platform_is_linux or build.platform_is_bsd: + build.env.ParseConfig('pkg-config portaudio-2.0 --silence-errors --cflags --libs') + # Turn on PortAudio support in Mixxx +@@ -74,7 +74,8 @@ + + if (not conf.CheckLib('GLU') and + not conf.CheckLib('glu32') and +- not conf.CheckCHeader('OpenGL/glu.h')): ++ not conf.CheckCHeader('OpenGL/glu.h') and ++ not conf.CheckCHeader('GL/glu.h')): + raise Exception('Did not find GLU development files') + + +@@ -106,7 +107,7 @@ + class UPower(Dependence): + """UPower is used to get battery measurements on Linux.""" + def configure(self, build, conf): +- if not build.platform_is_linux: ++ if not build.platform_is_linux or not build.platform_is_bsd: + return + build.env.ParseConfig( + 'pkg-config upower-glib --silence-errors --cflags --libs') +@@ -185,15 +186,17 @@ + + class Qt(Dependence): + DEFAULT_QT4DIRS = {'linux': '/usr/share/qt4', +- 'bsd': '/usr/local/lib/qt4', ++ 'bsd': '%%LOCALBASE%%/share/qt4', + 'osx': '/Library/Frameworks', + 'windows': 'C:\\qt\\4.6.0'} + + DEFAULT_QT5DIRS64 = {'linux': '/usr/lib/x86_64-linux-gnu/qt5', ++ 'bsd': '%%LOCALBASE%%/lib/qt5', + 'osx': '/Library/Frameworks', + 'windows': 'C:\\qt\\5.0.1'} + + DEFAULT_QT5DIRS32 = {'linux': '/usr/lib/i386-linux-gnu/qt5', ++ 'bsd': '%%LOCALBASE%%/lib/qt5', + 'osx': '/Library/Frameworks', + 'windows': 'C:\\qt\\5.0.1'} + +@@ -299,9 +302,17 @@ + build.env.Append(CCFLAGS='-fPIC') + elif build.platform_is_bsd: - build.env.Append(LIBS=qt_modules) +- build.env.Append(LIBS=qt_modules) - include_paths = ['$QTDIR/include/%s' % module -+ include_paths = ['%%LOCALBASE%%/include/qt4/%s' % module - for module in qt_modules] +- for module in qt_modules] ++ qt_modules.extend(['QtDBus']) ++ if qt5: ++ qt5_modules = [w.replace('Qt', 'Qt5') for w in qt_modules] ++ build.env.Append(LIBS = qt5_modules) ++ build.env.Append(CCFLAGS='-fPIC') ++ include_paths = ['%%LOCALBASE%%/include/qt5/%s' % module ++ for module in qt_modules] ++ else: ++ build.env.Append(LIBS = qt_modules) ++ include_paths = ['%%LOCALBASE%%/include/qt4/%s' % module ++ for module in qt_modules] build.env.Append(CPPPATH=include_paths) elif build.platform_is_osx: -@@ -358,7 +358,7 @@ class Qt(Dependence): + qtdir = build.env['QTDIR'] +@@ -426,7 +437,7 @@ if not build.platform_is_windows and not (using_104_sdk or compiling_on_104): qtdir = build.env['QTDIR'] framework_path = Qt.find_framework_libdir(qtdir, qt5) - if os.path.isdir(framework_path): -+ if framework_path and os.path.isdir(framework_path): - build.env.Append(LINKFLAGS="-Wl,-rpath," + framework_path) ++ if framework_path and os.path.isdir(framework_path): build.env.Append(LINKFLAGS="-L" + framework_path) -@@ -1045,7 +1045,6 @@ class MixxxCore(Feature): + # Mixxx requires C++11 support. Windows enables C++11 features by +@@ -520,7 +531,7 @@ + if env is None: + env = build.env +- if build.platform_is_linux: ++ if build.platform_is_linux or build.platform_is_bsd: + # Try using system lib + if conf.CheckForPKG('soundtouch', '1.8.0'): + # System Lib found +@@ -564,7 +575,7 @@ + # the files correctly. Adding this folder ot the include path should fix + # it, though might cause issues. This is safe to remove once we + # deprecate Karmic support. rryan 2/2011 +- build.env.Append(CPPPATH='/usr/include/taglib/') ++ build.env.Append(CPPPATH='%%LOCALBASE%%/include/taglib/') + + if build.platform_is_windows and build.static_dependencies: + build.env.Append(CPPDEFINES='TAGLIB_STATIC') +@@ -1267,7 +1278,6 @@ + if build.toolchain_is_gnu: # Default GNU Options - build.env.Append(CCFLAGS='-pipe') build.env.Append(CCFLAGS='-Wall') - build.env.Append(CCFLAGS='-Wextra') + if build.compiler_is_clang: + # Quiet down Clang warnings about inconsistent use of override +@@ -1375,9 +1385,9 @@ -@@ -1146,11 +1145,13 @@ class MixxxCore(Feature): + elif build.platform_is_osx: + # Stuff you may have compiled by hand +- if os.path.isdir('/usr/local/include'): +- build.env.Append(LIBPATH=['/usr/local/lib']) +- build.env.Append(CPPPATH=['/usr/local/include']) ++ if os.path.isdir('%%LOCALBASE%%/include'): ++ build.env.Append(LIBPATH=['%%LOCALBASE%%/lib']) ++ build.env.Append(CPPPATH=['%%LOCALBASE%%/include']) + # Non-standard libpaths for fink and certain (most?) darwin ports + if os.path.isdir('/sw/include'): +@@ -1392,15 +1402,17 @@ elif build.platform_is_bsd: build.env.Append(CPPDEFINES='__BSD__') -- build.env.Append(CPPPATH=['/usr/include', + build.env.Append(CPPPATH=['/usr/include', - '/usr/local/include', -+ build.env.Append(CPPPATH=['%%LOCALBASE%%/include/portaudio2', +- '/usr/X11R6/include/']) ++ '%%LOCALBASE%%/include', + '%%LOCALBASE%%/include/qt4', -+ '%%LOCALBASE%%/include', - '/usr/X11R6/include/']) -- build.env.Append(LIBPATH=['/usr/lib/', ++ '%%LOCALBASE%%/include/qt5']) + build.env.Append(LIBPATH=['/usr/lib/', - '/usr/local/lib', -+ build.env.Append(LIBPATH=['%%LOCALBASE%%/lib/portaudio2', +- '/usr/X11R6/lib']) ++ '%%LOCALBASE%%/lib', + '%%LOCALBASE%%/lib/qt4', -+ '%%LOCALBASE%%/lib', - '/usr/X11R6/lib']) ++ '%%LOCALBASE%%/lib/qt5']) build.env.Append(LIBS='pthread') # why do we need to do this on OpenBSD and not on Linux? if we -@@ -1188,7 +1189,7 @@ class MixxxCore(Feature): + # don't then CheckLib("vorbisfile") fails +- build.env.Append(LIBS=['ogg', 'vorbis']) ++ build.env.Append(LIBS=['ogg', 'vorbis','X11']) + + # Define for things that would like to special case UNIX (Linux or BSD) + if build.platform_is_bsd or build.platform_is_linux: +@@ -1433,7 +1445,7 @@ # Say where to find resources on Unix. TODO(XXX) replace this with a # RESOURCE_PATH that covers Win and OSX too: if build.platform_is_linux or build.platform_is_bsd: @@ -53,12 +148,12 @@ share_path = os.path.join (prefix, build.env.get( 'SHAREDIR', default='share'), 'mixxx') build.env.Append( -@@ -1199,7 +1200,7 @@ class MixxxCore(Feature): +@@ -1444,7 +1456,7 @@ CPPDEFINES=('UNIX_LIB_PATH', r'\"%s\"' % lib_path)) def depends(self, build): -- return [SoundTouch, ReplayGain, PortAudio, PortMIDI, Qt, TestHeaders, -+ return [SoundTouch, ReplayGain, PortAudio, Qt, TestHeaders, +- return [SoundTouch, ReplayGain, Ebur128Mit, PortAudio, PortMIDI, Qt, TestHeaders, ++ return [SoundTouch, ReplayGain, Ebur128Mit, PortAudio, Qt, TestHeaders, FidLib, SndFile, FLAC, OggVorbis, OpenGL, TagLib, ProtoBuf, - Chromaprint, RubberBand, SecurityFramework, CoreServices, FpClassify] - + Chromaprint, RubberBand, SecurityFramework, CoreServices, IOKit, + QtScriptByteArray, Reverb, FpClassify, PortAudioRingBuffer] Index: mixxx/files/patch-build_features.py =================================================================== --- mixxx/files/patch-build_features.py +++ mixxx/files/patch-build_features.py @@ -1,25 +1,25 @@ ---- build/features.py.orig 2015-12-29 16:10:41 UTC -+++ build/features.py -@@ -87,6 +87,9 @@ class HID(Feature): - raise Exception('Did not find the setupapi library, exiting.') - elif build.platform_is_osx: - build.env.AppendUnique(FRAMEWORKS=['IOKit', 'CoreFoundation']) -+ elif build.platform_is_bsd: -+ conf.CheckLib(['usb', 'libusb']) -+ conf.CheckLib(['usbhid', 'libusbhid']) +--- build/features.py 2018-04-15 13:30:27.000000000 -0500 ++++ build/features.py 2018-04-22 00:57:02.590575000 -0500 +@@ -112,6 +112,9 @@ + raise Exception('Did not find the setupapi library, exiting.') + elif build.platform_is_osx: + build.env.AppendUnique(FRAMEWORKS=['IOKit', 'CoreFoundation']) ++ elif build.platform_is_bsd: ++ conf.CheckLib(['usb', 'libusb']) ++ conf.CheckLib(['usbhid', 'libusbhid']) build.env.Append(CPPDEFINES='__HID__') - -@@ -100,7 +103,7 @@ class HID(Feature): - # setupapi. - sources.append( - os.path.join(self.HIDAPI_INTERNAL_PATH, "windows/hid.c")) -- elif build.platform_is_linux: -+ elif build.platform_is_linux or build.platform_is_bsd: - # hidapi compiles the libusb implementation by default on Linux - sources.append( - os.path.join(self.HIDAPI_INTERNAL_PATH, 'libusb/hid.c')) -@@ -117,14 +120,14 @@ class Bulk(Feature): + if self.INTERNAL_LINK: +@@ -129,7 +132,7 @@ + # setupapi. + sources.append( + os.path.join(self.HIDAPI_INTERNAL_PATH, "windows/hid.c")) +- elif build.platform_is_linux: ++ elif build.platform_is_linux or build.platform_is_bsd: + # hidapi compiles the libusb implementation by default on Linux + sources.append( + os.path.join(self.HIDAPI_INTERNAL_PATH, 'libusb/hid.c')) +@@ -147,14 +150,14 @@ def enabled(self, build): # For now only make Bulk default on Linux only. Turn on for all # platforms after the 1.11.0 release. @@ -36,7 +36,7 @@ vars.Add('bulk', 'Set to 1 to enable USB Bulk controller support.', is_default) -@@ -132,12 +135,15 @@ class Bulk(Feature): +@@ -162,12 +165,15 @@ if not self.enabled(build): return @@ -58,3 +58,21 @@ build.env.Append(CPPDEFINES='__BULK__') +@@ -409,7 +415,7 @@ + # FFTW3 support + have_fftw3_h = conf.CheckHeader('fftw3.h') + have_fftw3 = conf.CheckLib('fftw3', autoadd=False) +- if have_fftw3_h and have_fftw3 and build.platform_is_linux: ++ if have_fftw3_h and have_fftw3 and (build.platform_is_linux or build.platform_is_bsd) : + build.env.Append(CPPDEFINES='HAVE_FFTW3') + build.env.ParseConfig( + 'pkg-config fftw3 --silence-errors --cflags --libs') +@@ -1295,7 +1301,7 @@ + return ["util/battery/batterywindows.cpp"] + elif build.platform_is_osx: + return ["util/battery/batterymac.cpp"] +- elif build.platform_is_linux: ++ elif build.platform_is_linux or build.platform_is_bsd: + return ["util/battery/batterylinux.cpp"] + else: + raise Exception('Battery support is not implemented for the target platform.') Index: mixxx/files/patch-build_mixxx.py =================================================================== --- mixxx/files/patch-build_mixxx.py +++ mixxx/files/patch-build_mixxx.py @@ -1,14 +1,27 @@ ---- build/mixxx.py.orig 2015-12-29 16:10:41 UTC -+++ build/mixxx.py -@@ -380,9 +380,9 @@ class MixxxBuild(object): +--- build/mixxx.py 2018-04-15 13:30:27.000000000 -0500 ++++ build/mixxx.py 2018-04-21 22:31:31.694426000 -0500 +@@ -394,9 +394,9 @@ self.env['LINKFLAGS'] += SCons.Util.CLVar(os.environ['LDFLAGS']) # Allow installation directories to be specified. - prefix = Script.ARGUMENTS.get('prefix', '/usr/local') + prefix = Script.ARGUMENTS.get('prefix', '%%PREFIX%%') - if os.environ.has_key('LIBDIR'): + if 'LIBDIR' in os.environ: - self.env['LIBDIR'] = os.path.relpath(os.environ['LIBDIR'], prefix) + self.env['LIBDIR'] = 'lib' # os.path.relpath(os.environ['LIBDIR'], prefix) - if os.environ.has_key('BINDIR'): + if 'BINDIR' in os.environ: self.env['BINDIR'] = os.path.relpath(os.environ['BINDIR'], prefix) - if os.environ.has_key('SHAREDIR'): + if 'SHAREDIR' in os.environ: +@@ -429,10 +429,10 @@ + def install_options(self): + cachefile = os.path.join(self.get_cache_dir(), 'custom.py') + vars = Script.Variables(cachefile) +- vars.Add('prefix', 'Set to your install prefix', '/usr/local') ++ vars.Add('prefix', 'Set to your install prefix', '%%PREFIX%%') + vars.Add('virtualize', + 'Dynamically swap out the build directory when switching Git branches.', 1) +- vars.Add('qtdir', 'Set to your QT4 directory', '/usr/share/qt4') ++ vars.Add('qtdir', 'Set to your QT4 directory', '%%LOCALBASE%%/share/qt4') + vars.Add('qt_sqlite_plugin', 'Set to 1 to package the Qt SQLite plugin.' + '\n Set to 0 if SQLite support is compiled into QtSQL.', 0) + vars.Add('target', Index: mixxx/files/patch-src_controllers_controllermanager.cpp =================================================================== --- mixxx/files/patch-src_controllers_controllermanager.cpp +++ mixxx/files/patch-src_controllers_controllermanager.cpp @@ -1,9 +1,9 @@ ---- src/controllers/controllermanager.cpp.orig 2015-12-29 16:10:41 UTC -+++ src/controllers/controllermanager.cpp -@@ -83,7 +83,9 @@ ControllerManager::ControllerManager(Con - m_pMainThreadPresetEnumerator = new PresetInfoEnumerator(presetSearchPaths); +--- src/controllers/controllermanager.cpp 2018-04-15 13:30:27.000000000 -0500 ++++ src/controllers/controllermanager.cpp 2018-04-21 22:34:32.638474000 -0500 +@@ -127,7 +127,9 @@ - // Instantiate all enumerators + // Instantiate all enumerators. Enumerators can take a long time to + // construct since they interact with host MIDI APIs. +#ifdef __PORTMIDI__ m_enumerators.append(new PortMidiEnumerator()); +#endif Index: mixxx/files/patch-src_musicbrainz_chromaprinter.cpp =================================================================== --- mixxx/files/patch-src_musicbrainz_chromaprinter.cpp +++ mixxx/files/patch-src_musicbrainz_chromaprinter.cpp @@ -1,17 +0,0 @@ ---- src/musicbrainz/chromaprinter.cpp.orig 2015-12-29 16:10:41 UTC -+++ src/musicbrainz/chromaprinter.cpp -@@ -57,12 +57,12 @@ QString ChromaPrinter::calcFingerPrint(c - } - chromaprint_finish(ctx); - -- void* fprint = NULL; -+ unsigned int* fprint = NULL; - int size = 0; - int ret = chromaprint_get_raw_fingerprint(ctx, &fprint, &size); - QByteArray fingerprint; - if (ret == 1) { -- void* encoded = NULL; -+ char* encoded = NULL; - int encoded_size = 0; - chromaprint_encode_fingerprint(fprint, size, - CHROMAPRINT_ALGORITHM_DEFAULT, Index: mixxx/files/patch-src_upgrade.cpp =================================================================== --- mixxx/files/patch-src_upgrade.cpp +++ mixxx/files/patch-src_upgrade.cpp @@ -1,11 +0,0 @@ ---- src/upgrade.cpp.orig 2015-12-29 16:10:41 UTC -+++ src/upgrade.cpp -@@ -43,7 +43,7 @@ Upgrade::~Upgrade() { - - // static - QString Upgrade::mixxx17HomePath() { --#ifdef __LINUX__ -+#if defined(__LINUX__) || defined(__BSD__) - return QDir::homePath().append("/").append(".mixxx/"); - #elif __WINDOWS__ - return QDir::homePath().append("/").append("Local Settings/Application Data/Mixxx/"); Index: mixxx/pkg-plist =================================================================== --- mixxx/pkg-plist +++ mixxx/pkg-plist @@ -5,4 +5,3 @@ share/appdata/mixxx.appdata.xml share/applications/mixxx.desktop share/pixmaps/mixxx-icon.png -@dir lib/mixxx/plugins/soundsource