Ping. On Sat, 20 Jul 2019 14:01:56 +0200 Charlene Wendling wrote:
> 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);