git: 17dcd3e2dde0 - main - audio/strawberry: Update to 1.0.9

From: Jason E. Hale <jhale_at_FreeBSD.org>
Date: Mon, 19 Sep 2022 22:02:41 UTC
The branch main has been updated by jhale:

URL: https://cgit.FreeBSD.org/ports/commit/?id=17dcd3e2dde0eeb7498405a14c4b5bf70fa6d0c9

commit 17dcd3e2dde0eeb7498405a14c4b5bf70fa6d0c9
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2022-09-19 21:31:30 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2022-09-19 22:02:31 +0000

    audio/strawberry: Update to 1.0.9
    
    Convert to FLAVORS to allow building against either Qt5 or Qt6 with
    the qt5 flavor being the default for now as Qt6 is rather new to
    the ports tree.
    
    Remove SUBSONIC and TIDAL options. These are services are now enabled
    by default as they don't require additional dependencies.
    
    Several options have been renamed to use standard descriptions and
    option descriptions have otherwise been improved.
    AUDIOCD -> CDIO
    MTPDEV -> MTP
    
    It is now possible to build with the GSTREAMER and/or the VLC
    backend, with GSTREAMER remaining the default as several options
    require it and it generally provides more features.
    
    NLS is now optional and regression tests have been moved into an
    option.
    
    Upstream has moved to using ICU for transliteration of filename
    characters, but optional ICONV support is still available.
    
    Improve COMMENT and pkg-descr.
    
    https://github.com/strawberrymusicplayer/strawberry/releases/tag/1.0.8
    https://github.com/strawberrymusicplayer/strawberry/releases/tag/1.0.9
---
 audio/strawberry/Makefile                   | 111 +++++++++++++++-------------
 audio/strawberry/distinfo                   |   6 +-
 audio/strawberry/files/patch-CMakeLists.txt |  16 ++++
 audio/strawberry/pkg-descr                  |  12 ++-
 4 files changed, 90 insertions(+), 55 deletions(-)

diff --git a/audio/strawberry/Makefile b/audio/strawberry/Makefile
index 30b955d91c8b..1d05e30f3916 100644
--- a/audio/strawberry/Makefile
+++ b/audio/strawberry/Makefile
@@ -1,12 +1,12 @@
 PORTNAME=	strawberry
-DISTVERSION=	1.0.7
-PORTREVISION=	1
+DISTVERSION=	1.0.9
 CATEGORIES=	audio
 MASTER_SITES=	https://github.com/strawberrymusicplayer/${PORTNAME}/releases/download/${DISTVERSION}/ \
 		https://files.jkvinge.net/packages/strawberry/
+PKGNAMESUFFIX=	-${FLAVOR}
 
 MAINTAINER=	jhale@FreeBSD.org
-COMMENT=	Fork of clementine with many features
+COMMENT=	Music player and collection organizer
 WWW=		https://www.strawberrymusicplayer.org/
 
 LICENSE=	GPLv3
@@ -16,78 +16,87 @@ BUILD_DEPENDS=	boost-libs>0:devel/boost-libs
 LIB_DEPENDS=	libgnutls.so:security/gnutls \
 		libprotobuf.so:devel/protobuf \
 		libtag.so:audio/taglib
-TEST_DEPENDS=	googletest>=0:devel/googletest
 
-USES=		cmake compiler:c++11-lang desktop-file-utils gettext-runtime \
-		gettext-tools gnome gstreamer iconv:translit pkgconfig qt:5 \
-		sqlite tar:xz xorg
+FLAVORS=		qt5 qt6
+FLAVOR?=		${FLAVORS:[1]}
+qt5_CONFLICTS_INSTALL=	strawberry strawberry-qt6
+qt6_CONFLICTS_INSTALL=	strawberry strawberry-qt5
+
+USES=		cmake compiler:c++17-lang desktop-file-utils gettext-runtime \
+		gnome pkgconfig qt:${FLAVOR:S/qt//} sqlite tar:xz xorg
 
 USE_GNOME=	glib20
-USE_QT=		concurrent core dbus gui linguisttools network sql sql-sqlite3 \
-		widgets x11extras buildtools:build qmake:build testlib:build
+_USE_QT5=	concurrent core dbus gui network sql sql-sqlite3 widgets \
+		x11extras buildtools:build linguisttools:build qmake:build
+_USE_QT6=	base tools:build
+USE_QT=		${_USE_QT${FLAVOR:S/qt//}}
 USE_XORG=	ice sm x11 xcb xext
 
-CMAKE_ARGS=	-DENABLE_GSTREAMER:BOOL=true \
-		-DENABLE_TRANSLATIONS:BOOL=true \
-		-DENABLE_UDISKS2=OFF \
-		-DUSE_SYSTEM_TAGLIB=ON
-
-TEST_TARGET=	strawberry_test
+CMAKE_ON=	BUILD_WITH_${FLAVOR:tu}
+CMAKE_OFF=	ENABLE_UDISKS2
 
 SUB_FILES=	pkg-message
 
-# NLS is not optional, as of 0.6.11,
-# src/core/utilities.cpp always includes iconv.h and calls iconv_*().
-
-# GSTREAMER is not optional, as of 0.6.11, disabling it kills the build on
-# src/core/mainwindow.cpp:229:7:
-# error: member initializer 'transcode_dialog_' does not name a non-static data member or base class
-# transcode_dialog_([=]() {
-
-OPTIONS_DEFINE=	AUDIOCD IPOD MOODBAR MTPDEV MUSICBRAINZ SUBSONIC TIDAL VLC
-
-OPTIONS_DEFAULT=	ALSA MOODBAR
-
-OPTIONS_MULTI=		SOUND
+OPTIONS_MULTI=		BACKEND SOUND
+OPTIONS_MULTI_BACKEND=	GSTREAMER VLC
 OPTIONS_MULTI_SOUND=	ALSA PULSEAUDIO
-
-AUDIOCD_DESC=		Enable support for Audio CDs
-IPOD_DESC=		Enable support for iPod Classic
-MOODBAR_DESC=		Enable moodbar
-MTPDEV_DESC=		Enable support for Media Transport Protocol
-MUSICBRAINZ_DESC=	Enable tag fetching from MusicBrainz
-SUBSONIC_DESC=		Enable support for Subsonic music streamer
-TIDAL_DESC=		Enable support for TIDAL music service
+OPTIONS_SINGLE=		UNICODE
+OPTIONS_SINGLE_UNICODE=	ICONV ICU
+OPTIONS_DEFINE=		CDIO IPOD MOODBAR MTP MUSICBRAINZ NLS TEST
+OPTIONS_DEFAULT=	ALSA GSTREAMER ICU MOODBAR MUSICBRAINZ
+OPTIONS_SUB=		yes
+
+BACKEND_DESC=		Playback engine
+IPOD_DESC=		iPod Classic support
+MOODBAR_DESC=		Moodbar support
+MUSICBRAINZ_DESC=	Tagging/fingerprinting from MusicBrainz
 VLC_DESC=		Multimedia support via (lib)vlc
 
-ALSA_CMAKE_BOOL=	ENABLE_ALSA
 ALSA_LIB_DEPENDS=	libasound.so:audio/alsa-lib
+ALSA_CMAKE_BOOL=	ENABLE_ALSA
 
-AUDIOCD_CMAKE_BOOL=	ENABLE_AUDIOCD
-AUDIOCD_LIB_DEPENDS=	libcdio.so:sysutils/libcdio
+CDIO_LIB_DEPENDS=	libcdio.so:sysutils/libcdio
+CDIO_CMAKE_BOOL=	ENABLE_AUDIOCD
+CDIO_IMPLIES=		GSTREAMER
+
+GSTREAMER_USES=		gstreamer
+GSTREAMER_CMAKE_BOOL=	ENABLE_GSTREAMER
+
+ICONV_USES=		iconv:translit
+
+ICU_LIB_DEPENDS=	libicui18n.so:devel/icu
+ICU_CMAKE_BOOL=		USE_ICU
 
-IPOD_CMAKE_BOOL=	ENABLE_LIBGPOD
 IPOD_LIB_DEPENDS=	libgpod.so:audio/libgpod \
 			libimobiledevice-1.0.so:comms/libimobiledevice \
 			libplist-2.0.so:devel/libplist
+IPOD_CMAKE_BOOL=	ENABLE_LIBGPOD
 
-MTPDEV_CMAKE_BOOL=	ENABLE_LIBMTP
-MTPDEV_LIB_DEPENDS=	libmtp.so:multimedia/libmtp
-
-MOODBAR_CMAKE_BOOL=	ENABLE_MOODBAR
 MOODBAR_LIB_DEPENDS=	libfftw3.so:math/fftw3
+MOODBAR_CMAKE_BOOL=	ENABLE_MOODBAR
+MOODBAR_IMPLIES=	GSTREAMER
 
-MUSICBRAINZ_CMAKE_BOOL=		ENABLE_CHROMAPRINT
-MUSICBRAINZ_LIB_DEPENDS=	libchromaprint.so:audio/chromaprint
+MTP_LIB_DEPENDS=	libmtp.so:multimedia/libmtp
+MTP_CMAKE_BOOL=		ENABLE_LIBMTP
 
-PULSEAUDIO_CMAKE_BOOL=	ENABLE_LIBPULSE
-PULSEAUDIO_LIB_DEPENDS=	libpulse.so:audio/pulseaudio
+MUSICBRAINZ_LIB_DEPENDS=	libchromaprint.so:audio/chromaprint
+MUSICBRAINZ_CMAKE_BOOL=		ENABLE_MUSICBRAINZ \
+				ENABLE_SONGFINGERPRINTING
+MUSICBRAINZ_IMPLIES=		GSTREAMER
 
-SUBSONIC_CMAKE_BOOL=	ENABLE_SUBSONIC
+NLS_USES=		gettext-tools
+NLS_CMAKE_BOOL=		ENABLE_TRANSLATIONS
 
-TIDAL_CMAKE_BOOL=	ENABLE_TIDAL
+PULSEAUDIO_LIB_DEPENDS=	libpulse.so:audio/pulseaudio
+PULSEAUDIO_CMAKE_BOOL=	ENABLE_LIBPULSE
 
-VLC_CMAKE_BOOL=		ENABLE_VLC
 VLC_LIB_DEPENDS=	libvlc.so:multimedia/vlc
+VLC_CMAKE_BOOL=		ENABLE_VLC
+
+TEST_BUILD_DEPENDS=	googletest>=0:devel/googletest
+.if ${FLAVOR:U} == qt5
+TEST_USE=		QT=testlib:build
+.endif
+TEST_TEST_TARGET=	strawberry_tests
 
 .include <bsd.port.mk>
diff --git a/audio/strawberry/distinfo b/audio/strawberry/distinfo
index 42419e78ec1d..870fab5cc9b8 100644
--- a/audio/strawberry/distinfo
+++ b/audio/strawberry/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1659140950
-SHA256 (strawberry-1.0.7.tar.xz) = c2d242f091eaeb5bf6c83e8b3b0405e3c5ea89a23845843541726fc81643bd06
-SIZE (strawberry-1.0.7.tar.xz) = 11216436
+TIMESTAMP = 1663524917
+SHA256 (strawberry-1.0.9.tar.xz) = d69396e1df321003ab0e4f9374ea8c5c34fdfbc7fb6c68882d477215224b8cdf
+SIZE (strawberry-1.0.9.tar.xz) = 11226840
diff --git a/audio/strawberry/files/patch-CMakeLists.txt b/audio/strawberry/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..80e0cb6b7adf
--- /dev/null
+++ b/audio/strawberry/files/patch-CMakeLists.txt
@@ -0,0 +1,16 @@
+Find OPTIONAL_COMPONENTS seperately. When the REQUIRED keyword is used,
+Qt5Config.cmake handles all components as required causing failure if
+optional components are missing.
+
+--- CMakeLists.txt.orig	2022-09-18 23:50:52 UTC
++++ CMakeLists.txt
+@@ -207,7 +207,8 @@ endif()
+   list(APPEND QT_OPTIONAL_COMPONENTS X11Extras)
+ endif()
+ 
+-find_package(Qt${QT_VERSION_MAJOR} ${QT_MIN_VERSION} REQUIRED COMPONENTS ${QT_COMPONENTS} OPTIONAL_COMPONENTS ${QT_OPTIONAL_COMPONENTS})
++find_package(Qt${QT_VERSION_MAJOR} ${QT_MIN_VERSION} REQUIRED COMPONENTS ${QT_COMPONENTS})
++find_package(Qt${QT_VERSION_MAJOR} ${QT_MIN_VERSION} OPTIONAL_COMPONENTS ${QT_OPTIONAL_COMPONENTS})
+ 
+ set(QtCore_LIBRARIES Qt${QT_VERSION_MAJOR}::Core)
+ set(QtConcurrent_LIBRARIES Qt${QT_VERSION_MAJOR}::Concurrent)
diff --git a/audio/strawberry/pkg-descr b/audio/strawberry/pkg-descr
index c142faf2dd8b..71a856469f34 100644
--- a/audio/strawberry/pkg-descr
+++ b/audio/strawberry/pkg-descr
@@ -1 +1,11 @@
-Strawberry is a fork of clementine with many features.
+Strawberry is a music player and music collection organizer forked
+from Clementine in 2018. It is aimed at music collectors and
+audiophiles.
+
+Features include:
+* Smart and dynamic playlists
+* Tag editing
+* Streaming support
+* Audio CD playback
+* Song lyrics
+* Scrobbler with support for Last.fm, Libre.fm and ListenBrainz