Since MAINTAINER has been removed here is an updated diff. On Mon, 15 Jul 2019 20:38:09 +0200 Charlene Wendling wrote:
> Hi, > > I've 2 itches to scratch with clementine now my chromaprint update has > a pretty good shape and works fine on macppc/amd64. > > 1) Support chromaprint >= 1.4 > -------------------------- > > Because our version of clementine is old, it's not compatible with > recent versions of chromaprint. What i'm proposing here is an upstream > fix that allows clementine to be built with chromaprint-1.1 (what we > have in CVS at the moment) and chromaprint-1.4.3. > > This change impacts all archs. > > 2) Unbreak with ports-gcc > ---------------------- > > > http://build-failures.rhaalovely.net/sparc64/last/audio/clementine.log > (does not build on macppc, chromaprint-1.1 is broken due to narrowing > errors) > > The problem is that: > > - clementine is expected to be built with -std=c++0x > - since protobuf>=3.6, we now need to build it with C++11 > - the bundled libechonest is built with -Werror with GCC > only, and use features that are deprecated in C++11, > generating a warning and thus a build failure > - a header was missing further in the build :] > > > Testing > ------- > > On macppc/arm* you'll need the -wip chromaprint-1.4.3 [0]. > > Please note that music tags autofill won't work in any case. I suspect > the musicbrainz code in our clementine is too old as well. It's not a > chromaprint issues, py-acoustid, another consumer, find the same > songs. > > - amd64: builds and works fine with any version of chromaprint > - macppc: with the -wip chromaprint-1.4.3, it builds [1] and > still either stay stuck trying to load tracks, > or SIGSEGV with egdb getting a SIGTRAP as soon as i > press the play button. That was already there back in > gcc-4.9. > > ports-lib-depends-check reports extra stuff in wantlib but it's > actually linked against them according to ldd, or otherwise > dlopen()'d. > > Comments/testing reports are welcome! > > Charlène. > > [0] > https://github.com/jasperla/openbsd-wip/tree/master/audio/chromaprint > [1] https://bin.charlenew.xyz/clementine.png Index: Makefile =================================================================== RCS file: /cvs/ports/audio/clementine/Makefile,v retrieving revision 1.38 diff -u -p -u -p -r1.38 Makefile --- Makefile 17 Jul 2019 14:49:19 -0000 1.38 +++ Makefile 20 Jul 2019 11:54:53 -0000 @@ -5,7 +5,7 @@ COMMENT = Qt4-based featureful music pla V = 1.2.3 DISTNAME = clementine-${V} CATEGORIES = audio x11 -REVISION = 15 +REVISION = 16 HOMEPAGE = https://clementine-player.org/ @@ -31,6 +31,8 @@ WANTLIB += plist MODULES = devel/cmake x11/qt4 COMPILER = base-clang ports-gcc +# clementine is originally meant to be build with c++0x, but +# protobuf>=3.6 wants c++11 CXXFLAGS += -std=c++11 BUILD_DEPENDS = devel/boost \ Index: patches/patch-3rdparty_libechonest_CMakeLists_txt =================================================================== RCS file: patches/patch-3rdparty_libechonest_CMakeLists_txt diff -N patches/patch-3rdparty_libechonest_CMakeLists_txt --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-3rdparty_libechonest_CMakeLists_txt 20 Jul 2019 11:54:53 -0000 @@ -0,0 +1,20 @@ +$OpenBSD$ + +ports-gcc: don't build with -Werror because the code uses dynamic +exception specifications that are deprecated in C++11, thus +generating a warning. + +Index: 3rdparty/libechonest/CMakeLists.txt +--- 3rdparty/libechonest/CMakeLists.txt.orig ++++ 3rdparty/libechonest/CMakeLists.txt +@@ -40,10 +40,6 @@ set( LIBECHONEST_H + + QT4_WRAP_CPP( ${LIBECHONEST_H} ) + +-if (CMAKE_COMPILER_IS_GNUCXX) +- add_definitions( -Werror ) +-endif (CMAKE_COMPILER_IS_GNUCXX) +- + SET( OS_SPECIFIC_LINK_LIBRARIES "" ) + IF( APPLE OR MINGW ) + SET( OS_SPECIFIC_LINK_LIBRARIES ${QJSON_LIBRARIES} ) Index: patches/patch-src_devices_giolister_cpp =================================================================== RCS file: patches/patch-src_devices_giolister_cpp diff -N patches/patch-src_devices_giolister_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_devices_giolister_cpp 20 Jul 2019 11:54:53 -0000 @@ -0,0 +1,16 @@ +$OpenBSD$ + +Add missing header for ports-gcc, from upstream: +https://github.com/clementine-player/Clementine/pull/5630/commits/a2f7d018c7bdee96d4cefd5a1ec0c4f710fea226 + +Index: src/devices/giolister.cpp +--- src/devices/giolister.cpp.orig ++++ src/devices/giolister.cpp +@@ -17,6 +17,7 @@ + + #include "config.h" + ++#include <functional> + #include <memory> + + #include <QFile> Index: patches/patch-src_musicbrainz_chromaprinter_cpp =================================================================== RCS file: patches/patch-src_musicbrainz_chromaprinter_cpp diff -N patches/patch-src_musicbrainz_chromaprinter_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_musicbrainz_chromaprinter_cpp 20 Jul 2019 11:54:53 -0000 @@ -0,0 +1,34 @@ +$OpenBSD$ + +Unbreak with chromaprint >=1.4 (and keep backward compat), see: +https://github.com/clementine-player/Clementine/commit/d3ea0c8482dfd3f6264a30cfceb456076d76e6cd + +Index: src/musicbrainz/chromaprinter.cpp +--- src/musicbrainz/chromaprinter.cpp.orig ++++ src/musicbrainz/chromaprinter.cpp +@@ -127,15 +127,22 @@ QString Chromaprinter::CreateFingerprint() { + + ChromaprintContext* chromaprint = chromaprint_new(CHROMAPRINT_ALGORITHM_DEFAULT); + chromaprint_start(chromaprint, kDecodeRate, kDecodeChannels); +- chromaprint_feed(chromaprint, reinterpret_cast<void*>(data.data()), data.size() / 2); ++ chromaprint_feed(chromaprint, reinterpret_cast<int16_t*>(data.data()), data.size() / 2); + chromaprint_finish(chromaprint); + +- void* fprint = NULL; + int size = 0; ++ ++ #if CHROMAPRINT_VERSION_MAJOR >= 1 && CHROMAPRINT_VERSION_MINOR >= 4 ++ u_int32_t *fprint = nullptr; ++ char *encoded = nullptr; ++ #else ++ void *fprint = nullptr; ++ void *encoded = nullptr; ++ #endif ++ + int ret = chromaprint_get_raw_fingerprint(chromaprint, &fprint, &size); + QByteArray fingerprint; + if (ret == 1) { +- void* encoded = NULL; + int encoded_size = 0; + chromaprint_encode_fingerprint( + fprint, size, CHROMAPRINT_ALGORITHM_DEFAULT, &encoded, &encoded_size, 1);