MFH: r564788

audio/liblastfm-qt5: Restore the patches that were originally part of
audio/liblastfm (R.I.P.) to make the library function again. It seems they
were forgotten when this was converted to a free-standing port in r495869.
This commit is contained in:
Jason E. Hale 2021-02-09 15:27:17 +00:00
parent 0a0e46e910
commit 0f5950b10a
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/branches/2021Q1/; revision=564789
6 changed files with 210 additions and 1 deletions

View File

@ -2,7 +2,7 @@
PORTNAME= liblastfm
DISTVERSION= 1.0.9-5
PORTREVISION= 1
PORTREVISION= 2
DISTVERSIONSUFFIX= -g4433165
CATEGORIES= audio
PKGNAMESUFFIX= -qt5

View File

@ -0,0 +1,25 @@
- Support symbol visibility with Clang
- Don't put linker flags in CXXFLAGS
--- CMakeLists.txt.orig 2014-10-02 14:05:46 UTC
+++ CMakeLists.txt
@@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 2.8.6)
+cmake_policy(SET CMP0043 OLD)
project(liblastfm)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
@@ -62,11 +63,11 @@ else()
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")
endif()
if(UNIX AND NOT APPLE)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-undefined")
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
endif()
if(MSVC)

View File

@ -0,0 +1,123 @@
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

@ -0,0 +1,33 @@
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

@ -0,0 +1,15 @@
Silence warning
warning: logical not is only applied to the left hand side of this comparison [-Wlogical-not-parentheses]
if (!strncmp(head,"ID3",3) == 0) {
--- src/mbid_mp3.c.orig 2014-10-02 14:05:46 UTC
+++ src/mbid_mp3.c
@@ -94,7 +94,7 @@ int getMP3_MBID(const char *path, char mbid[MBID_BUFFE
while (s) {
mfile(3,head,fp,&s);
- if (!strncmp(head,"ID3",3) == 0) {
+ if (!(strncmp(head,"ID3",3) == 0)) {
//debug("No ID3v2 tag found: %s\n",path);
break;
}

View File

@ -0,0 +1,13 @@
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 );
}
};