audio/liblastfm-qt5: Rename and only support Qt6

Move port origin to audio/liblastfm and only support Qt6. Qt5 support
is not required by anything currently in the ports tree.

Switch to active fork and update to latest commit.

Convert TEST option to the cmake testing framework.
This commit is contained in:
Jason E. Hale 2025-02-05 07:58:53 -05:00
parent f4b016e43e
commit a177c72d31
16 changed files with 103 additions and 239 deletions

1
MOVED
View file

@ -4136,3 +4136,4 @@ www/p5-CGI-Application-Plugin-HtmlTidy||2025-02-04|Has expired: Depends on expir
textproc/p5-HTML-Tidy||2025-02-04|Has expired: Depends on expired textproc/tidyp
textproc/tidyp||2025-02-04|Has expired: The repository has been archived by upstream on Apr 14, 2019
audio/kid3@kf5|audio/kid3@kf6|2025-02-05|kf5 support has been removed. Use kf6 flavor instead
audio/liblastfm-qt5||2025-02-05|No ports depend on this. New ports should used Qt6-based audio/liblastfm

View file

@ -353,7 +353,7 @@
SUBDIR += libkcddb
SUBDIR += libkcompactdisc
SUBDIR += libkeyfinder
SUBDIR += liblastfm-qt5
SUBDIR += liblastfm
SUBDIR += liblo
SUBDIR += liblscp
SUBDIR += libltc

View file

@ -1,5 +0,0 @@
TIMESTAMP = 1687757062
SHA256 (lastfm-liblastfm-1.0.9-5-g4433165_GH0.tar.gz) = 8cf1835af3f38f0c7c576e8a01c2d19ee32c7006a44d2d183fb64ed228bc5ca6
SIZE (lastfm-liblastfm-1.0.9-5-g4433165_GH0.tar.gz) = 119427
SHA256 (d51ad3e759331d7d79c6675c5d22541280bf9a70.patch) = a0c3454c57cc1b36cfc617d431bdcdff91adb3ead0c7ee0ec7c9b6c0211f601e
SIZE (d51ad3e759331d7d79c6675c5d22541280bf9a70.patch) = 2220

View file

@ -1,123 +0,0 @@
url():
- Use https scheme to avoid 301 redirects
- Override default QUrl::TolerantMode with QUrl::StrictMode for Qt 5.x to
prevent overprocessing the already encoded input URL
localePath():
- New function to return the base path of the localized website
host():
- Just return www.last.fm since the localized hosts 301 redirect there
localize():
- Set the path of the url instead of the host since the localized
hosts 301 redirect to the main website with a localized path
mobilize():
- Mobile website 301 redirects to main website, so just return the url as-is
--- src/UrlBuilder.cpp.orig 2014-10-02 14:05:46 UTC
+++ src/UrlBuilder.cpp
@@ -32,7 +32,7 @@ class lastfm::UrlBuilderPrivate (public)
lastfm::UrlBuilder::UrlBuilder( const QString& base )
: d( new UrlBuilderPrivate )
{
- d->path = '/' + base.toLatin1();
+ d->path = localePath().toLatin1() + '/' + base.toLatin1();
}
@@ -60,10 +60,10 @@ QUrl
lastfm::UrlBuilder::url() const
{
QUrl url;
- url.setScheme( "http" );
+ url.setScheme( "https" );
url.setHost( host() );
#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
- url.setPath( d->path );
+ url.setPath( d->path, QUrl::StrictMode );
#else
url.setEncodedPath( d->path );
#endif
@@ -85,49 +85,50 @@ lastfm::UrlBuilder::encode( QString s )
QString //static
-lastfm::UrlBuilder::host( const QLocale& locale )
+lastfm::UrlBuilder::localePath( const QLocale& locale )
{
switch (locale.language())
{
- case QLocale::Portuguese: return "www.lastfm.com.br";
- case QLocale::Turkish: return "www.lastfm.com.tr";
- case QLocale::French: return "www.lastfm.fr";
- case QLocale::Italian: return "www.lastfm.it";
- case QLocale::German: return "www.lastfm.de";
- case QLocale::Spanish: return "www.lastfm.es";
- case QLocale::Polish: return "www.lastfm.pl";
- case QLocale::Russian: return "www.lastfm.ru";
- case QLocale::Japanese: return "www.lastfm.jp";
- case QLocale::Swedish: return "www.lastfm.se";
- case QLocale::Chinese: return "cn.last.fm";
- default: return "www.last.fm";
+ case QLocale::Chinese: return "/zh";
+ case QLocale::French: return "/fr";
+ case QLocale::German: return "/de";
+ case QLocale::Italian: return "/it";
+ case QLocale::Japanese: return "/ja";
+ case QLocale::Polish: return "/pl";
+ case QLocale::Portuguese: return "/pt";
+ case QLocale::Russian: return "/ru";
+ case QLocale::Spanish: return "/es";
+ case QLocale::Swedish: return "/sv";
+ case QLocale::Turkish: return "/tr";
+ default: return "";
}
}
+QString //static
+lastfm::UrlBuilder::host( const QLocale& locale )
+{
+ return "www.last.fm";
+}
+
+
bool // static
lastfm::UrlBuilder::isHost( const QUrl& url )
{
- QStringList hosts = QStringList() << "www.lastfm.com.br"
- << "www.lastfm.com.tr"
- << "www.lastfm.fr"
- << "www.lastfm.it"
- << "www.lastfm.de"
- << "www.lastfm.es"
- << "www.lastfm.pl"
- << "www.lastfm.ru"
- << "www.lastfm.jp"
- << "www.lastfm.se"
- << "cn.last.fm"
- << "www.last.fm";
+ QStringList hosts = QStringList() << "www.last.fm";
return hosts.contains( url.host() );
}
+
QUrl //static
lastfm::UrlBuilder::localize( QUrl url)
{
- url.setHost( url.host().replace( QRegExp("^(www.)?last.fm"), host() ) );
+#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
+ url.setPath( url.path().prepend( localePath() ), QUrl::DecodedMode );
+#else
+ url.setPath( url.path().prepend( localePath() ) );
+#endif
return url;
}
@@ -135,7 +136,6 @@ lastfm::UrlBuilder::localize( QUrl url)
QUrl //static
lastfm::UrlBuilder::mobilize( QUrl url )
{
- url.setHost( url.host().replace( QRegExp("^(www.)?last"), "m.last" ) );
return url;
}

View file

@ -1,33 +0,0 @@
Add prototype for localePath() and adjust comments to reflect current
website layout
--- src/UrlBuilder.h.orig 2015-02-06 16:49:40 UTC
+++ src/UrlBuilder.h
@@ -44,10 +44,12 @@ namespace lastfm
QUrl url() const;
- /** www.last.fm becomes the local version, eg www.lastfm.de */
+ /** www.last.fm becomes the local version, e.g. www.last.fm/de */
static QUrl localize( QUrl );
- /** www.last.fm becomes m.last.fm, localisation is preserved */
- static QUrl mobilize( QUrl );
+
+ /** DEPRECATED: Returns url as-is since the mobile website redirects
+ * to the main website */
+ Q_DECL_DEPRECATED static QUrl mobilize( QUrl );
/** Use this to URL encode any database item (artist, track, album). It
* internally calls UrlEncodeSpecialChars to double encode some special
@@ -60,7 +62,10 @@ namespace lastfm
*/
static QByteArray encode( QString );
- /** returns eg. www.lastfm.de */
+ /** returns the base path of the localized website e.g. /de */
+ static QString localePath ( const QLocale& = QLocale() );
+
+ /** returns www.last.fm */
static QString host( const QLocale& = QLocale() );
/** return true if url is a last.fm url */

View file

@ -1,13 +0,0 @@
http://www.last.fm 301 redirects to https://www.last.fm causing test to fail
--- tests/TestUrlBuilder.h.orig 2018-03-31 12:04:00 UTC
+++ tests/TestUrlBuilder.h
@@ -81,7 +81,7 @@ private slots:
void test404() /** @author <max@last.fm> */
{
- QCOMPARE( getResponseCode( QUrl("http://www.last.fm/404") ), 404 );
+ QCOMPARE( getResponseCode( QUrl("https://www.last.fm/404") ), 404 );
}
};

View file

@ -1,36 +0,0 @@
include/lastfm%%QTVER_SUFFIX%%/AbstractType.h
include/lastfm%%QTVER_SUFFIX%%/Album.h
include/lastfm%%QTVER_SUFFIX%%/Artist.h
include/lastfm%%QTVER_SUFFIX%%/Audioscrobbler.h
include/lastfm%%QTVER_SUFFIX%%/Auth.h
include/lastfm%%QTVER_SUFFIX%%/Chart.h
%%FINGERPRINT%%include/lastfm%%QTVER_SUFFIX%%/Fingerprint.h
include/lastfm%%QTVER_SUFFIX%%/FingerprintId.h
%%FINGERPRINT%%include/lastfm%%QTVER_SUFFIX%%/FingerprintableSource.h
include/lastfm%%QTVER_SUFFIX%%/InternetConnectionMonitor.h
include/lastfm%%QTVER_SUFFIX%%/Library.h
include/lastfm%%QTVER_SUFFIX%%/Mbid.h
include/lastfm%%QTVER_SUFFIX%%/NetworkAccessManager.h
include/lastfm%%QTVER_SUFFIX%%/NetworkConnectionMonitor.h
include/lastfm%%QTVER_SUFFIX%%/Playlist.h
include/lastfm%%QTVER_SUFFIX%%/RadioStation.h
include/lastfm%%QTVER_SUFFIX%%/RadioTuner.h
include/lastfm%%QTVER_SUFFIX%%/ScrobbleCache.h
include/lastfm%%QTVER_SUFFIX%%/ScrobblePoint.h
include/lastfm%%QTVER_SUFFIX%%/Tag.h
include/lastfm%%QTVER_SUFFIX%%/Tasteometer.h
include/lastfm%%QTVER_SUFFIX%%/Track.h
include/lastfm%%QTVER_SUFFIX%%/Url.h
include/lastfm%%QTVER_SUFFIX%%/UrlBuilder.h
include/lastfm%%QTVER_SUFFIX%%/User.h
include/lastfm%%QTVER_SUFFIX%%/XmlQuery.h
include/lastfm%%QTVER_SUFFIX%%/Xspf.h
include/lastfm%%QTVER_SUFFIX%%/global.h
include/lastfm%%QTVER_SUFFIX%%/misc.h
include/lastfm%%QTVER_SUFFIX%%/ws.h
lib/liblastfm%%QTVER_SUFFIX%%.so
lib/liblastfm%%QTVER_SUFFIX%%.so.1
lib/liblastfm%%QTVER_SUFFIX%%.so.1.1.0
%%FINGERPRINT%%lib/liblastfm_fingerprint%%QTVER_SUFFIX%%.so
%%FINGERPRINT%%lib/liblastfm_fingerprint%%QTVER_SUFFIX%%.so.1
%%FINGERPRINT%%lib/liblastfm_fingerprint%%QTVER_SUFFIX%%.so.1.1.0

View file

@ -1,45 +1,35 @@
PORTNAME= liblastfm
DISTVERSION= 1.0.9-5
DISTVERSIONSUFFIX= -g4433165
PORTREVISION= 3
DISTVERSION= 1.1.0-46
DISTVERSIONSUFFIX= -g2e8e40d
CATEGORIES= audio
PKGNAMESUFFIX= -qt5
PATCH_SITES= https://github.com/${GH_ACCOUNT}/${PORTNAME}/commit/
PATCHFILES+= d51ad3e759331d7d79c6675c5d22541280bf9a70.patch:-p1 #Remove dynamic exception specs
PKGNAMESUFFIX= -qt6
MAINTAINER= jhale@FreeBSD.org
COMMENT= Qt C++ library for the Last.fm webservices
WWW= https://github.com/lastfm/liblastfm
WWW= https://github.com/drfiemost/liblastfm
LICENSE= GPLv3+
LICENSE_FILE= ${WRKSRC}/COPYING
USES= cmake compiler:c++11-lang pkgconfig qt:5
USES= cmake:testing compiler:c++17-lang pkgconfig qt:6
USE_GITHUB= yes
GH_ACCOUNT= lastfm
USE_LDCONFIG= yes
USE_QT= core dbus network sql xml \
buildtools:build qmake:build
CMAKE_OFF= BUILD_WITH_QT4
QTVER_SUFFIX= 5
USE_QT= base tools:build
PLIST_SUB= QTVER_SUFFIX="${QTVER_SUFFIX}"
CMAKE_OFF= BUILD_TESTS
CMAKE_TESTING_ON= BUILD_TESTS
OPTIONS_DEFINE= FINGERPRINT TEST
OPTIONS_DEFINE= FINGERPRINT
OPTIONS_DEFAULT= FINGERPRINT
OPTIONS_SUB= yes
FINGERPRINT_DESC= Build the lastfm-fingerprint library
# We only need fftw3.h from math/fftw3; no need to install
FINGERPRINT_BUILD_DEPENDS= ${NONEXISTENT}:math/fftw3:patch
FINGERPRINT_LIB_DEPENDS=libsamplerate.so:audio/libsamplerate \
libfftw3f.so:math/fftw3-float
FINGERPRINT_CMAKE_BOOL= BUILD_FINGERPRINT
# We only need fftw3.h from math/fftw3; no need to install
FINGERPRINT_BUILD_DEPENDS= ${NONEXISTENT}:math/fftw3:patch
FINGERPRINT_CMAKE_ON= -DLIBFFTW3_INCLUDE_DIR:PATH=`${MAKE} -C ${PORTSDIR}/math/fftw3 -VWRKSRC`/api
TEST_USE= QT=testlib:build
TEST_CMAKE_BOOL= BUILD_TESTS
TEST_TEST_TARGET= test
.include <bsd.port.mk>

3
audio/liblastfm/distinfo Normal file
View file

@ -0,0 +1,3 @@
TIMESTAMP = 1738744095
SHA256 (lastfm-liblastfm-1.1.0-46-g2e8e40d_GH0.tar.gz) = 010cba3baa12513c825f5bbde454da842ff2ec3692a5a0811147c7f128ac1556
SIZE (lastfm-liblastfm-1.1.0-46-g2e8e40d_GH0.tar.gz) = 119115

View file

@ -1,18 +1,19 @@
- Avoid needless CMake < 3.10 deprecation warnings
- Support symbol visibility with Clang
- Don't put linker flags in CXXFLAGS
--- CMakeLists.txt.orig 2014-10-02 14:05:46 UTC
--- CMakeLists.txt.orig 2024-11-24 17:34:23 UTC
+++ CMakeLists.txt
@@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 2.8.6)
+cmake_policy(SET CMP0043 OLD)
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.6)
+cmake_minimum_required(VERSION 3.10)
project(liblastfm)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
@@ -62,11 +63,11 @@ else()
# general settings
@@ -68,11 +68,11 @@ endif()
add_feature_info(FFTW3F FFTW3F_FOUND "Required for lastfm-fingerprint library")
endif()
-if(CMAKE_COMPILER_IS_GNUCXX)
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_definitions("-fno-operator-names -fvisibility-inlines-hidden -fvisibility=hidden")

View file

@ -0,0 +1,13 @@
mobilize():
- Mobile website 301 redirects to main website, so just return the url as-is
--- src/UrlBuilder.cpp.orig 2024-11-24 17:34:23 UTC
+++ src/UrlBuilder.cpp
@@ -118,7 +118,6 @@ lastfm::UrlBuilder::mobilize( QUrl url )
QUrl //static
lastfm::UrlBuilder::mobilize( QUrl url )
{
- url.setHost( url.host().replace( QRegularExpression("^(www.)?last"), "m.last" ) );
return url;
}

View file

@ -0,0 +1,16 @@
Mark mobilize() as deprecated. It doesn't do anything useful.
--- src/UrlBuilder.h.orig 2024-11-24 17:34:23 UTC
+++ src/UrlBuilder.h
@@ -46,8 +46,9 @@ namespace lastfm
/** www.last.fm becomes the local version, eg www.lastfm.de */
static QUrl localize( QUrl );
- /** www.last.fm becomes m.last.fm, localisation is preserved */
- static QUrl mobilize( QUrl );
+ /** DEPRECATED: Returns url as-is since the mobile website 301
+ * redirects to the main website */
+ Q_DECL_DEPRECATED static QUrl mobilize( QUrl );
/** Use this to URL encode any database item (artist, track, album). It
* internally calls UrlEncodeSpecialChars to double encode some special

View file

@ -0,0 +1,10 @@
Include fftw3.h from math/fftw3. LIBFFTW3_INCLUDE_DIR is set in the port
Makefile.
--- src/fingerprint/CMakeLists.txt.orig 2024-11-24 17:34:23 UTC
+++ src/fingerprint/CMakeLists.txt
@@ -1,3 +1,4 @@
+include_directories(${LIBFFTW3_INCLUDE_DIR})
include_directories(${CMAKE_CURRENT_LIST_DIR}/..)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/..)

40
audio/liblastfm/pkg-plist Normal file
View file

@ -0,0 +1,40 @@
include/lastfm6/AbstractType.h
include/lastfm6/Album.h
include/lastfm6/Artist.h
include/lastfm6/Audioscrobbler.h
include/lastfm6/Auth.h
include/lastfm6/Chart.h
%%FINGERPRINT%%include/lastfm6/Fingerprint.h
include/lastfm6/FingerprintId.h
%%FINGERPRINT%%include/lastfm6/FingerprintableSource.h
include/lastfm6/InternetConnectionMonitor.h
include/lastfm6/Library.h
include/lastfm6/Mbid.h
include/lastfm6/NetworkAccessManager.h
include/lastfm6/NetworkConnectionMonitor.h
include/lastfm6/Playlist.h
include/lastfm6/RadioStation.h
include/lastfm6/RadioTuner.h
include/lastfm6/ScrobbleCache.h
include/lastfm6/ScrobblePoint.h
include/lastfm6/Tag.h
include/lastfm6/Tasteometer.h
include/lastfm6/Track.h
include/lastfm6/Url.h
include/lastfm6/UrlBuilder.h
include/lastfm6/User.h
include/lastfm6/XmlQuery.h
include/lastfm6/Xspf.h
include/lastfm6/global.h
include/lastfm6/misc.h
include/lastfm6/ws.h
lib/cmake/lastfm6/lastfm6Config-%%CMAKE_BUILD_TYPE%%.cmake
lib/cmake/lastfm6/lastfm6Config.cmake
%%FINGERPRINT%%lib/cmake/lastfm6/lastfm_fingerprint6Config-%%CMAKE_BUILD_TYPE%%.cmake
%%FINGERPRINT%%lib/cmake/lastfm6/lastfm_fingerprint6Config.cmake
lib/liblastfm6.so
lib/liblastfm6.so.1
lib/liblastfm6.so.1.1.0
%%FINGERPRINT%%lib/liblastfm_fingerprint6.so
%%FINGERPRINT%%lib/liblastfm_fingerprint6.so.1
%%FINGERPRINT%%lib/liblastfm_fingerprint6.so.1.1.0