From owner-svn-ports-all@freebsd.org Sun May 17 20:19:12 2020 Return-Path: Delivered-To: svn-ports-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5B2BE2F3496; Sun, 17 May 2020 20:19:12 +0000 (UTC) (envelope-from mandree@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49QD4w27b4z4sxy; Sun, 17 May 2020 20:19:12 +0000 (UTC) (envelope-from mandree@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 43A6B15DD5; Sun, 17 May 2020 20:19:12 +0000 (UTC) (envelope-from mandree@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04HKJCVv073693; Sun, 17 May 2020 20:19:12 GMT (envelope-from mandree@FreeBSD.org) Received: (from mandree@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04HKJA7X073683; Sun, 17 May 2020 20:19:10 GMT (envelope-from mandree@FreeBSD.org) Message-Id: <202005172019.04HKJA7X073683@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mandree set sender to mandree@FreeBSD.org using -f From: Matthias Andree Date: Sun, 17 May 2020 20:19:10 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r535673 - in head/audio: . strawberry strawberry/files X-SVN-Group: ports-head X-SVN-Commit-Author: mandree X-SVN-Commit-Paths: in head/audio: . strawberry strawberry/files X-SVN-Commit-Revision: 535673 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 May 2020 20:19:12 -0000 Author: mandree Date: Sun May 17 20:19:09 2020 New Revision: 535673 URL: https://svnweb.freebsd.org/changeset/ports/535673 Log: audio/strawberry: new port of Qt5-based music player ...which is descended from clementine. PR: 246342 Submitted by: Daniel Menelkir (maintainer) Added: head/audio/strawberry/ head/audio/strawberry/Makefile (contents, props changed) head/audio/strawberry/distinfo (contents, props changed) head/audio/strawberry/files/ head/audio/strawberry/files/patch-src_collection_collectionmodel.cpp (contents, props changed) head/audio/strawberry/files/patch-src_organise_organiseformat.cpp (contents, props changed) head/audio/strawberry/files/patch-tests_CMakeLists.txt (contents, props changed) head/audio/strawberry/files/patch-tests_src_collectionmodel__test.cpp (contents, props changed) head/audio/strawberry/files/patch-tests_src_organiseformat__test.cpp (contents, props changed) head/audio/strawberry/files/patch-tests_src_playlist__test.cpp (contents, props changed) head/audio/strawberry/pkg-descr (contents, props changed) head/audio/strawberry/pkg-plist (contents, props changed) Modified: head/audio/Makefile Modified: head/audio/Makefile ============================================================================== --- head/audio/Makefile Sun May 17 20:18:31 2020 (r535672) +++ head/audio/Makefile Sun May 17 20:19:09 2020 (r535673) @@ -770,6 +770,7 @@ SUBDIR += stegosaurus-lv2 SUBDIR += stk SUBDIR += stone-phaser-lv2 + SUBDIR += strawberry SUBDIR += streamripper SUBDIR += streamtranscoder SUBDIR += string-machine-lv2 Added: head/audio/strawberry/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/strawberry/Makefile Sun May 17 20:19:09 2020 (r535673) @@ -0,0 +1,99 @@ +# $FreeBSD$ + +PORTNAME= strawberry +DISTVERSION= 0.6.11 +CATEGORIES= audio +MASTER_SITES= https://github.com/strawberrymusicplayer/${PORTNAME}/releases/download/${DISTVERSION}/ \ + https://files.jkvinge.net/packages/strawberry/ + +MAINTAINER= menelkir@itroll.org +COMMENT= Fork of clementine with many features + +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/COPYING + +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= compiler:c++11-lang cmake desktop-file-utils gnome \ + gettext-runtime gettext-tools iconv pkgconfig \ + qt:5 sqlite pkgconfig tar:xz xorg + +USE_GNOME= glib20 +USE_GSTREAMER1= yes +USE_QT= buildtools_build concurrent core dbus gui network \ + linguisttools qmake_build sql testlib_build widgets x11extras +USE_XORG= ice sm x11 xcb xext +INSTALLS_ICONS= yes + +CMAKE_ARGS= -DUSE_SYSTEM_TAGLIB=ON -DENABLE_UDISKS2=OFF -DENABLE_XINE=OFF \ + -DENABLE_GSTREAMER:BOOL=true \ + -DENABLE_TRANSLATIONS:BOOL=true + +TEST_TARGET= strawberry_test + +# 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= APPLEDEV AUDIOCD IPOD MOODBAR MTPDEV MUSICBRAINZ \ + SUBSONIC TIDAL VLC +APPLEDEV_IMPLIES= IPOD +OPTIONS_DEFAULT= PULSEAUDIO + +BACKEND_DESC= Multimedia backend(s) + +OPTIONS_MULTI= SOUND +OPTIONS_MULTI_SOUND= ALSA PULSEAUDIO + +APPLEDEV_DESC= Enable support for more recent Apple devices +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 +VLC_DESC= Multimedia support via (lib)vlc + +APPLEDEV_CMAKE_BOOL= ENABLE_IMOBILEDEVICE +APPLEDEV_LIB_DEPENDS= libimobiledevice.so:comms/libimobiledevice \ + libplist.so:devel/libplist \ + libusbmuxd.so:comms/libusbmuxd + +ALSA_CMAKE_BOOL= ENABLE_ALSA +ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib + +AUDIOCD_CMAKE_BOOL= ENABLE_AUDIOCD +AUDIOCD_LIB_DEPENDS= libcdio.so:sysutils/libcdio + +IPOD_CMAKE_BOOL= ENABLE_LIBGPOD +IPOD_LIB_DEPENDS= libgpod.so:audio/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 + +MUSICBRAINZ_CMAKE_BOOL= ENABLE_CHROMAPRINT +MUSICBRAINZ_LIB_DEPENDS= libchromaprint.so:audio/chromaprint + +PULSEAUDIO_CMAKE_BOOL= ENABLE_LIBPULSE +PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio + +SUBSONIC_CMAKE_BOOL= ENABLE_SUBSONIC + +TIDAL_CMAKE_BOOL= ENABLE_TIDAL + +VLC_CMAKE_BOOL= ENABLE_VLC +VLC_LIB_DEPENDS= libvlc.so:multimedia/vlc + +.include Added: head/audio/strawberry/distinfo ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/strawberry/distinfo Sun May 17 20:19:09 2020 (r535673) @@ -0,0 +1,3 @@ +TIMESTAMP = 1589641083 +SHA256 (strawberry-0.6.11.tar.xz) = 84b71b33b5f80b7e86682e49f15289c2c00ab89d47e3722f762dda0d6965a201 +SIZE (strawberry-0.6.11.tar.xz) = 9295808 Added: head/audio/strawberry/files/patch-src_collection_collectionmodel.cpp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/strawberry/files/patch-src_collection_collectionmodel.cpp Sun May 17 20:19:09 2020 (r535673) @@ -0,0 +1,84 @@ +--- src/collection/collectionmodel.cpp.orig 2020-05-16 18:39:26 UTC ++++ src/collection/collectionmodel.cpp +@@ -119,12 +119,14 @@ CollectionModel::CollectionModel(CollectionBackend *ba + } + + QIcon nocover = IconLoader::Load("cdcase"); +- no_cover_icon_ = nocover.pixmap(nocover.availableSizes().last()).scaled(kPrettyCoverSize, kPrettyCoverSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); +- //no_cover_icon_ = QPixmap(":/pictures/noalbumart.png").scaled(kPrettyCoverSize, kPrettyCoverSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); ++ if (!nocover.isNull()) { ++ no_cover_icon_ = nocover.pixmap(nocover.availableSizes().last()).scaled(kPrettyCoverSize, kPrettyCoverSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); ++ } + +- if (sIconCache == nullptr) { ++ if (app_ && !sIconCache) { + sIconCache = new QNetworkDiskCache(this); + sIconCache->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/" + kPixmapDiskCacheDir); ++ connect(app_, SIGNAL(ClearPixmapDiskCache()), SLOT(ClearDiskCache())); + } + + connect(backend_, SIGNAL(SongsDiscovered(SongList)), SLOT(SongsDiscovered(SongList))); +@@ -139,8 +141,6 @@ CollectionModel::CollectionModel(CollectionBackend *ba + backend_->UpdateTotalArtistCountAsync(); + backend_->UpdateTotalAlbumCountAsync(); + +- connect(app_, SIGNAL(ClearPixmapDiskCache()), SLOT(ClearDiskCache())); +- + ReloadSettings(); + + } +@@ -189,7 +189,9 @@ void CollectionModel::ReloadSettings() { + + QPixmapCache::setCacheLimit(MaximumCacheSize(&s, CollectionSettingsPage::kSettingsCacheSize, CollectionSettingsPage::kSettingsCacheSizeUnit, CollectionSettingsPage::kSettingsCacheSizeDefault) / 1024); + +- sIconCache->setMaximumCacheSize(MaximumCacheSize(&s, CollectionSettingsPage::kSettingsDiskCacheSize, CollectionSettingsPage::kSettingsDiskCacheSizeUnit, CollectionSettingsPage::kSettingsDiskCacheSizeDefault)); ++ if (sIconCache) { ++ sIconCache->setMaximumCacheSize(MaximumCacheSize(&s, CollectionSettingsPage::kSettingsDiskCacheSize, CollectionSettingsPage::kSettingsDiskCacheSizeUnit, CollectionSettingsPage::kSettingsDiskCacheSizeDefault)); ++ } + + s.endGroup(); + +@@ -510,7 +512,7 @@ void CollectionModel::SongsDeleted(const SongList &son + // Remove from pixmap cache + const QString cache_key = AlbumIconPixmapCacheKey(ItemToIndex(node)); + QPixmapCache::remove(cache_key); +- if (use_disk_cache_) sIconCache->remove(QUrl(cache_key)); ++ if (use_disk_cache_ && sIconCache) sIconCache->remove(QUrl(cache_key)); + if (pending_cache_keys_.contains(cache_key)) { + pending_cache_keys_.remove(cache_key); + } +@@ -585,7 +587,7 @@ QVariant CollectionModel::AlbumIcon(const QModelIndex + } + + // Try to load it from the disk cache +- if (use_disk_cache_) { ++ if (use_disk_cache_ && sIconCache) { + std::unique_ptr cache(sIconCache->data(QUrl(cache_key))); + if (cache) { + QImage cached_image; +@@ -637,7 +639,7 @@ void CollectionModel::AlbumCoverLoaded(const quint64 i + } + + // If we have a valid cover not already in the disk cache +- if (use_disk_cache_) { ++ if (use_disk_cache_ && sIconCache) { + std::unique_ptr cached_img(sIconCache->data(QUrl(cache_key))); + if (!cached_img && !result.image_scaled.isNull()) { + QNetworkCacheMetaData item_metadata; +@@ -1556,6 +1558,7 @@ int CollectionModel::MaximumCacheSize(QSettings *s, co + } while (unit > 0); + + return size; ++ + } + + void CollectionModel::GetChildSongs(CollectionItem *item, QList *urls, SongList *songs, QSet *song_ids) const { +@@ -1686,7 +1689,7 @@ void CollectionModel::TotalAlbumCountUpdatedSlot(const + } + + void CollectionModel::ClearDiskCache() { +- sIconCache->clear(); ++ if (sIconCache) sIconCache->clear(); + } + + QDataStream &operator<<(QDataStream &s, const CollectionModel::Grouping &g) { Added: head/audio/strawberry/files/patch-src_organise_organiseformat.cpp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/strawberry/files/patch-src_organise_organiseformat.cpp Sun May 17 20:19:09 2020 (r535673) @@ -0,0 +1,33 @@ +--- src/organise/organiseformat.cpp.orig 2020-04-27 23:42:16 UTC ++++ src/organise/organiseformat.cpp +@@ -35,6 +35,7 @@ + #include + #include + #include ++#include + #include + + #include "core/arraysize.h" +@@ -44,8 +45,6 @@ + + #include "organiseformat.h" + +-class QTextDocument; +- + const char *OrganiseFormat::kTagPattern = "\\%([a-zA-Z]*)"; + const char *OrganiseFormat::kBlockPattern = "\\{([^{}]+)\\}"; + const QStringList OrganiseFormat::kKnownTags = QStringList() << "title" +@@ -145,7 +144,12 @@ QString OrganiseFormat::GetFilenameForSong(const Song + + QFileInfo info(filename); + QString extension = info.suffix(); +- QString filepath = info.path() + "/" + info.completeBaseName(); ++ QString filepath; ++ if (!info.path().isEmpty() && info.path() != ".") { ++ filepath.append(info.path()); ++ filepath.append("/"); ++ } ++ filepath.append(info.completeBaseName()); + + // Fix any parts of the path that start with dots. + QStringList parts_old = filepath.split("/"); Added: head/audio/strawberry/files/patch-tests_CMakeLists.txt ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/strawberry/files/patch-tests_CMakeLists.txt Sun May 17 20:19:09 2020 (r535673) @@ -0,0 +1,10 @@ +--- tests/CMakeLists.txt.orig 2020-04-27 23:42:17 UTC ++++ tests/CMakeLists.txt +@@ -87,7 +87,6 @@ if(Qt5Test_FOUND AND GTEST_FOUND AND GMOCK_LIBRARY) + add_test_file(src/song_test.cpp false) + add_test_file(src/collectionbackend_test.cpp false) + add_test_file(src/collectionmodel_test.cpp true) +- add_test_file(src/playlist_test.cpp true) + add_test_file(src/songplaylistitem_test.cpp false) + add_test_file(src/organiseformat_test.cpp false) + Added: head/audio/strawberry/files/patch-tests_src_collectionmodel__test.cpp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/strawberry/files/patch-tests_src_collectionmodel__test.cpp Sun May 17 20:19:09 2020 (r535673) @@ -0,0 +1,29 @@ +--- tests/src/collectionmodel_test.cpp.orig 2020-04-27 23:42:17 UTC ++++ tests/src/collectionmodel_test.cpp +@@ -75,6 +75,8 @@ class CollectionModelTest : public ::testing::Test { + Song AddSong(const QString& title, const QString& artist, const QString& album, int length) { + Song song; + song.Init(title, artist, album, length); ++ song.set_mtime(0); ++ song.set_ctime(0); + return AddSong(song); + } + +@@ -111,6 +113,8 @@ TEST_F(CollectionModelTest, CompilationAlbums) { + Song song; + song.Init("Title", "Artist", "Album", 123); + song.set_compilation(true); ++ song.set_mtime(0); ++ song.set_ctime(0); + + AddSong(song); + model_->Init(false); +@@ -200,6 +204,8 @@ TEST_F(CollectionModelTest, VariousArtistSongs) { + QString n = QString::number(i+1); + Song song; + song.Init("Title " + n, "Artist " + n, "Album", 0); ++ song.set_mtime(0); ++ song.set_ctime(0); + songs << song; + } + Added: head/audio/strawberry/files/patch-tests_src_organiseformat__test.cpp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/strawberry/files/patch-tests_src_organiseformat__test.cpp Sun May 17 20:19:09 2020 (r535673) @@ -0,0 +1,24 @@ +--- tests/src/organiseformat_test.cpp.orig 2019-06-29 18:18:34 UTC ++++ tests/src/organiseformat_test.cpp +@@ -59,6 +59,7 @@ TEST_F(OrganiseFormatTest, BasicReplace) { + format_.set_format("%album %albumartist %artist %bitrate %comment %composer %performer %grouping %disc %genre %length %samplerate %bitdepth %title %track %year"); + + ASSERT_TRUE(format_.IsValid()); ++ + EXPECT_EQ("album_albumartist_artist_123_comment_composer_performer_grouping_789_genre_987_654_32_title_321_2010", format_.GetFilenameForSong(song_)); + + } +@@ -135,11 +136,12 @@ TEST_F(OrganiseFormatTest, ReplaceNonAscii) { + + format_.set_remove_non_ascii(false); + EXPECT_EQ(QString::fromUtf8("Röyksopp"), format_.GetFilenameForSong(song_)); ++ + format_.set_remove_non_ascii(true); + EXPECT_EQ("Royksopp", format_.GetFilenameForSong(song_)); + + song_.set_artist(QString::fromUtf8("Владимир Высоцкий")); +- EXPECT_EQ("_________________", format_.GetFilenameForSong(song_)); ++ EXPECT_EQ("????????_????????", format_.GetFilenameForSong(song_)); + + } + Added: head/audio/strawberry/files/patch-tests_src_playlist__test.cpp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/strawberry/files/patch-tests_src_playlist__test.cpp Sun May 17 20:19:09 2020 (r535673) @@ -0,0 +1,31 @@ +--- tests/src/playlist_test.cpp.orig 2020-04-27 23:42:17 UTC ++++ tests/src/playlist_test.cpp +@@ -53,15 +53,15 @@ class PlaylistTest : public ::testing::Test { + Song metadata; + metadata.Init(title, artist, album, length); + +- //MockPlaylistItem* ret = new MockPlaylistItem; ++ MockPlaylistItem *ret = new MockPlaylistItem; + //EXPECT_CALL(*ret, Metadata()).WillRepeatedly(Return(metadata)); + +- //return ret; ++ return ret; + return nullptr; + } + +- std::shared_ptr MakeMockItemP(const QString& title, const QString& artist = QString(), const QString& album = QString(), int length = 123) const { +- return std::shared_ptr(MakeMockItem(title, artist, album, length)); ++ PlaylistItemPtr MakeMockItemP(const QString& title, const QString& artist = QString(), const QString& album = QString(), int length = 123) const { ++ return PlaylistItemPtr(MakeMockItem(title, artist, album, length)); + } + + Playlist playlist_; +@@ -76,7 +76,7 @@ TEST_F(PlaylistTest, Basic) { + TEST_F(PlaylistTest, InsertItems) { + + MockPlaylistItem* item = MakeMockItem("Title", "Artist", "Album", 123); +- std::shared_ptr item_ptr(item); ++ PlaylistItemPtr item_ptr(item); + + // Insert the item + EXPECT_EQ(0, playlist_.rowCount(QModelIndex())); Added: head/audio/strawberry/pkg-descr ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/strawberry/pkg-descr Sun May 17 20:19:09 2020 (r535673) @@ -0,0 +1,3 @@ +Strawberry is a fork of clementine with many features. + +WWW: https://www.strawberrymusicplayer.org/ Added: head/audio/strawberry/pkg-plist ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/strawberry/pkg-plist Sun May 17 20:19:09 2020 (r535673) @@ -0,0 +1,9 @@ +bin/strawberry +bin/strawberry-tagreader +share/applications/org.strawberrymusicplayer.strawberry.desktop +share/icons/hicolor/128x128/apps/strawberry.png +share/icons/hicolor/48x48/apps/strawberry.png +share/icons/hicolor/64x64/apps/strawberry.png +share/man/man1/strawberry-tagreader.1.gz +share/man/man1/strawberry.1.gz +share/metainfo/org.strawberrymusicplayer.strawberry.appdata.xml