Package request: amarok
Package name
amarok
Package homepage
https://amarok.kde.org/
Description
Powerful music player for KDE
Does the requested package meet the package requirements?
System, Compiled
Is the requested package released?
Yes
This is never gonna be accepted in repos. Stable version (2.9.0) requires qt4-devel in CmakeLists.txt
find_package( Qt4 4.8.3 COMPONENTS QtCore QtGui QtScript QtSvg QtXml REQUIRED )
if(WITH_QTWEBKIT)
find_package( Qt4 COMPONENTS QtWebkit REQUIRED)
endif()
Qt4 is not part of the Void packages or templates, support for Qt4 has been dropped and I don't believe it was ever a part of the Void repos or xbps-src.
Here's a dirty repack of Amarok builds for Ubuntu.
# Template file for 'amarok'
pkgname=amarok
version=2.9.0
revision=1
archs="i686 x86_64 armv7l aarch64 ppc64"
short_desc="Amarok is a powerful music player for Linux, Unix and Windows with an intuitive interface."
maintainer="someone <[email protected]>"
license="GPL-2.0-or-later"
homepage="https://amarok.kde.org/"
case "${XBPS_TARGET_MACHINE}" in
i686)
distfiles="https://web.archive.org/web/20240423093955/http://launchpadlibrarian.net/361089251/amarok_${version}-0ubuntu2_i386.deb"
checksum="12bfe9cb4b0cac8bd511d120c32707004992f1e38e538daec6a5f12b8d53c0a6"
;;
x86_64)
distfiles="https://web.archive.org/web/20240423093032/http://launchpadlibrarian.net/361089537/amarok_${version}-0ubuntu2_amd64.deb"
checksum="bd64a0b11a2f141c5ed769a6055f0eb0123c944f3897ab3a79385aacfaa62d4e"
;;
armv7l)
distfiles="https://web.archive.org/web/20240423094800/http://launchpadlibrarian.net/361090115/amarok_${version}-0ubuntu2_armhf.deb"
checksum="d717a8d551f5a8b996305abee37444fbfffb73699f210ef47224636034aa9567"
;;
aarch64)
distfiles="https://web.archive.org/web/20240423093825/http://launchpadlibrarian.net/361090149/amarok_${version}-0ubuntu2_arm64.deb"
checksum="81b761afdbd5ed245e08610cf381893679b6a3c1e22899d70db2ab59100e99da"
;;
ppc64)
distfiles="https://web.archive.org/web/20240423095017/http://launchpadlibrarian.net/361088804/amarok_${version}-0ubuntu2_ppc64el.deb"
checksum="814401fb073f0bc93cc18f81cacb77e58b89ab4a88d612e4b1a2f44a5cb4a164"
;;
esac
do_build () {
mkdir -p ${wrksrc}/usr
mv -f ${wrksrc}/bin ${wrksrc}/usr/bin
}
do_install() {
vcopy lib /
vcopy share /
vcopy usr /
}
But it requires so many old libraries, so many dependencies unresolved...
SONAME: libkdeui.so.5 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libkdecore.so.5 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libQtGui.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libQtCore.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libplasma.so.3 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libQtDBus.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libkcmutils.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libkio.so.5 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libsolid.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libQtNetwork.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libkdnssd.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libthreadweaver.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libqjson.so.0 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libQtOpenGL.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libQtSvg.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libkdewebkit.so.5 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libQtWebKit.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libQtXml.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libQtSql.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: liblastfm.so.1 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libmygpo-qt.so.1 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libmysqlclient.so.20 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libkfile.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libphonon.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libktexteditor.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libQtScript.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libQtScriptTools.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libofa.so.0 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libavformat.so.57 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libavcodec.so.57 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libavutil.so.55 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libknewstuff3.so.4 <-> UNKNOWN PKG PLEASE FIX!
SONAME: libqca.so.2 <-> UNKNOWN PKG PLEASE FIX!
And these depends will probably depend on other depreciated depends, so... is it doable? Yes. Is it worth it? No. Even if you just repackage from deb/rpm, it'll still take a lot of time and effort. And some of those libs need to communicate with online services, most of them won't (not up to date protocols, things change), and even if they do, they're still insecure for online communication.
Thank you for your effort!
From his website
After possibly some 3.0.x bugfix releases, an effort will be made to port to Qt6/KF6, and hopefully have such version available in this year still.
Well, if things change and they do transfer to Qt6/KF6, then yes, this would be more easy to do.
Amarok 3.0 based on Qt5 is out: Release announcement
OK, I think I got this working... I'll need a day or two more.
Rough draft.
# Template file for 'amarok'
pkgname=amarok
version=3.0.0
revision=1
#build_style=cmake
#configure_args=".. -DCMAKE_INSTALL_PREFIX=`kf5-config --prefix`"
#build_wrksrc="${pkgname}-${version}-build"
hostmakedepends="cmake-bootstrap cmake extra-cmake-modules ninja pkg-config gettext-devel
taglib-devel fftw-devel qt5-devel qt5-tools-devel qt5-declarative-devel qt5-svg-devel
qt5-webengine-devel qt5-webchannel-devel qt5-quickcontrols2-devel qt5-location-devel kde5
attica-devel karchive-devel kcodecs-devel kconfig-devel kconfigwidgets-devel
kcoreaddons-devel kcrash-devel kdbusaddons-devel kdeclarative-devel kdnssd-devel
kdoctools-devel kglobalaccel-devel kguiaddons-devel ki18n-devel kiconthemes-devel
kcmutils-devel kio-devel knewstuff-devel knotifications-devel kpackage-devel ksolid-devel
ktexteditor-devel threadweaver-devel kwidgetsaddons-devel kwindowsystem-devel"
makedepends=""
short_desc="Amarok is a free, cross-platform, versatile, powerful and feature-rich music player."
maintainer="someone <[email protected]>"
license="GPL-2.0-or-later"
homepage="https://amarok.kde.org/"
distfiles="https://download.kde.org/stable/${pkgname}/${version}/${pkgname}-${version}.tar.xz"
checksum="14a87678305fad76a0a1daca555a6775ffa642e5ebbcccecd91f497093992c1c"
post_extract() {
mkdir -p ${wrksrc}/${pkgname}-${version}-build
}
do_configure() {
cd ${wrksrc}/${pkgname}-${version}-build
cmake .. -DCMAKE_INSTALL_PREFIX=`kf5-config --prefix`
}
do_build() {
cd ${wrksrc}/${pkgname}-${version}-build
make
}
do_install() {
cd ${wrksrc}/${pkgname}-${version}-build
make install
}
I managed to package it as well, but it seems something is wrong. I get this when trying to run it.
When I run it with --debug-audio, I get this from the terminal.
"PulseSupport(2): Probing for PulseAudio..."
"PulseSupport(2): context_state_callback Authorizing"
"PulseSupport(2): context_state_callback Setting Name"
"PulseSupport(2): context_state_callback Ready"
"PulseSupport(2): Failed to initialize device manager extension: Not supported"
"PulseSupport(2): Falling back to single device mode"
"PulseSupport(2): context_state_callback Terminated"
"PulseSupport(2): PulseAudio probe complete."
"PulseSupport(2): PulseAudio support enabled"
"PulseSupport(2): Enabled Breakdown: mEnabled: Yes, s_pulseActive Yes"
PHONON-GST Using GStreamer 1.24.2
PHONON-GST AudioOutput using "pulsesink"
PHONON-GST AudioOutput using "pulsesink"
"PulseSupport(2): Initialising streamindex {7ff94ae0-c163-4d7d-8ddb-135c9f62e8da}"
PHONON-GST Backend connected Phonon::Gstreamer::MediaObject to Phonon::Gstreamer::AudioOutput
PHONON-GST Fading to 1
PHONON-GST BEGIN: GstStateChangeReturn Phonon::Gstreamer::Pipeline::setState(GstState)
PHONON-GST Transitioning to state "ready"
PHONON-GST State change
PHONON-GST BEGIN: void Phonon::Gstreamer::MediaObject::handleDurationChange(qint64)
PHONON-GST -1
PHONON-GST END__: void Phonon::Gstreamer::MediaObject::handleDurationChange(qint64) [Took: 0s]
PHONON-GST BEGIN: void Phonon::Gstreamer::MediaObject::handleStateChange(GstState, GstState)
PHONON-GST Moving from "null" Phonon::LoadingState to "ready" Phonon::StoppedState
PHONON-GST BEGIN: void Phonon::Gstreamer::MediaObject::loadingComplete()
PHONON-GST END__: void Phonon::Gstreamer::MediaObject::loadingComplete() [Took: 0s]
PHONON-GST END__: void Phonon::Gstreamer::MediaObject::handleStateChange(GstState, GstState) [Took: 0s]
PHONON-GST END__: GstStateChangeReturn Phonon::Gstreamer::Pipeline::setState(GstState) [Took: 0s]
PHONON-GST Backend connected Phonon::Gstreamer::MediaObject to Phonon::Gstreamer::VolumeFaderEffect
PHONON-GST Backend connected Phonon::Gstreamer::VolumeFaderEffect to Phonon::Gstreamer::AudioOutput
PHONON-GST Fading to 1
PHONON-GST BEGIN: GstStateChangeReturn Phonon::Gstreamer::Pipeline::setState(GstState)
PHONON-GST Transitioning to state "ready"
PHONON-GST END__: GstStateChangeReturn Phonon::Gstreamer::Pipeline::setState(GstState) [Took: 0s]
PHONON-GST Backend connected Phonon::Gstreamer::VolumeFaderEffect to Phonon::Gstreamer::VolumeFaderEffect
PHONON-GST Backend connected Phonon::Gstreamer::VolumeFaderEffect to Phonon::Gstreamer::AudioOutput
PHONON-GST Backend connected Phonon::Gstreamer::VolumeFaderEffect to Phonon::Gstreamer::AudioDataOutput
"PulseSupport(2): context_state_callback Authorizing"
"PulseSupport(2): context_state_callback Setting Name"
"PulseSupport(2): context_state_callback Ready"
"PulseSupport(2): Phonon Output Stream {7ff94ae0-c163-4d7d-8ddb-135c9f62e8da} is gone at the PA end. Marking it as invalid in our cache as we may reuse it."
"PulseSupport(2): Found PulseAudio stream index 87 for Phonon Output Stream {7ff94ae0-c163-4d7d-8ddb-135c9f62e8da}"
"PulseSupport(2): Failed to initialize device manager extension: Not supported"
"PulseSupport(2): context_state_callback Terminated"
And then the GUI error pops up.
Anyone know what the problem might be? I managed to solve a part of it (the debug info was longer) by installing phonon-qt5-backend-gstreamer, but that didn't solve it all the way.
I've made some modifications to the Amarok template since the last time I posted the template, here is what I used now.
# Template file for 'amarok'
pkgname=amarok
version=3.0.0
revision=1
#build_style=cmake
#configure_args=".. -DCMAKE_INSTALL_PREFIX=`kf5-config --prefix`"
#build_wrksrc="${pkgname}-${version}-build"
hostmakedepends="cmake-bootstrap cmake extra-cmake-modules ninja pkg-config ffmpeg-devel libmygpo-qt-devel libgpod-devel libmtp-devel libcurl-devel loudmouth-devel
gettext-devel taglib-devel fftw-devel qt5-devel qt5-tools-devel qt5-declarative-devel
qt5-svg-devel qt5-plugin-mysql qt5-plugin-sqlite qt5-plugin-odbc qt5-plugin-pgsql qt5-plugin-tds
libmariadbclient-devel qt5-webengine-devel qt5-webchannel-devel qt5-quickcontrols2-devel
qt5-location-devel kde5 attica-devel karchive-devel kcodecs-devel kconfig-devel
kconfigwidgets-devel kcoreaddons-devel kcrash-devel kdbusaddons-devel kdeclarative-devel
kdnssd-devel kdoctools-devel kglobalaccel-devel kguiaddons-devel ki18n-devel kiconthemes-devel
kcmutils-devel kio-devel knewstuff-devel knotifications-devel kpackage-devel ksolid-devel
ktexteditor-devel threadweaver-devel kwidgetsaddons-devel kwindowsystem-devel"
makedepends=""
depends="phonon-qt5-backend-gstreamer"
short_desc="Amarok is a free, cross-platform, versatile, powerful and feature-rich music player."
maintainer="someone <[email protected]>"
license="GPL-2.0-or-later"
homepage="https://amarok.kde.org/"
distfiles="https://download.kde.org/stable/${pkgname}/${version}/${pkgname}-${version}.tar.xz"
checksum="14a87678305fad76a0a1daca555a6775ffa642e5ebbcccecd91f497093992c1c"
post_extract() {
mkdir -p ${wrksrc}/${pkgname}-${version}-build
mkdir -p ${DESTDIR}/etc
}
do_configure() {
cd ${wrksrc}/${pkgname}-${version}-build
cmake -DCMAKE_INSTALL_PREFIX="${DESTDIR}/usr" -DCMAKE_BUILD_TYPE=debugfull ..
}
do_build() {
cd ${wrksrc}/${pkgname}-${version}-build
make -j8
}
do_install() {
cd ${wrksrc}/${pkgname}-${version}-build
make install
mv -f ${DESTDIR}/usr/etc/* ${DESTDIR}/etc
rm -rf ${DESTDIR}/usr/etc
}
Could someone build and see if they get the same error as me? Thanks!
First I'd try removing all functions from the template and go with build_style=cmake, without configure_args. This builds for me, and the package looks intact at first glance (e.g., no /usr/etc in there).
Can't install right now though, because I don't want KDE messing with my Qt apps. Maybe I'll set up a VM when I find the time.
The functions were just for testing, the final was supposed to have just build_style=cmake, configure_args and build_wrksrc, but the build_wrksrc didn't get parsed by xbps-src (or maybe I didn't define it properly, IDK), so I just thought I'd try and see if it can build like this, then clean up the template and just use the built in variables.
It actually does make the /usr/etc dir when installing, but I just moved it to the root of $DESTDIR (as it should be).
The building is not the actual problem, it builds without problems on x86_64 (needs a bit more work for cross), the problem is, it won't run, lol 😄.
EDIT: When adding phonon-qt5-backend-gstreamer to depends, that seems to cut down on the errors generated. Still, it won't detect any plugins 🤷.
Agreed, building is probably not the issue. But it's not impossible either. At least with build_style, there's no /usr/etc, so there has to be something different with the install target. The build_style also uses ninja rather than make.
the final was supposed to have [...]
build_wrksrc
Built fine without build_wrksrc over here.
Could you post your template? See exactly what you changed? Thanks 😉.
@mvf yes, you're correct, it does make the build more correct, build files are placed in /usr, except for /etc.
Will try and install it tomorrow, see what happens (it's kinda late here right now).
I think this one is OK. Cross-builds, but to 64-bit arches only becasue qt5-webengine can't be cross-built to 32-bit arches from a 64-bit OS (word size mismatch). But, you can cross-build from 32-bit i686 to (at least) armv7l (glibc and musl, tested). About the rest of the 32-bit, IDK, I haven't tried.
pkgname=amarok
version=3.0.0
revision=1
build_style=cmake
configure_args="-DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr -DCMAKE_BUILD_TYPE=debugfull"
hostmakedepends="glib-devel extra-cmake-modules pkg-config gettext-devel python3
qt5-tools-devel kcoreaddons-devel kpackage-devel"
makedepends="qt5-declarative-devel qt5-quickcontrols2-devel qt5-webengine-devel
qt5-webchannel-devel qt5-location-devel qt5-plugin-odbc qt5-plugin-mysql qt5-plugin-pgsql
qt5-plugin-sqlite qt5-plugin-tds qt5-svg-devel libglvnd-devel taglib-devel taglib-extras-devel
libmariadbclient-devel ffmpeg-devel libgpod-devel gdk-pixbuf-devel libmygpo-qt-devel
libmtp-devel libcurl-devel loudmouth-devel fftw-devel liblastfm-qt5-devel karchive-devel
attica-devel kcodecs-devel kconfig-devel kconfigwidgets-devel kcrash-devel kdbusaddons-devel
kdeclarative-devel kdnssd-devel kdoctools-devel kglobalaccel-devel kguiaddons-devel ki18n-devel
kiconthemes-devel kcmutils-devel kio-devel knewstuff-devel knotifications-devel ksolid-devel
ktexteditor-devel threadweaver-devel kwidgetsaddons-devel kwindowsystem-devel"
depends="phonon-qt5-backend-gstreamer"
short_desc="Amarok is a free, cross-platform, versatile, powerful and feature-rich music player."
maintainer="someone <[email protected]>"
license="GPL-2.0-or-later"
homepage="https://amarok.kde.org/"
distfiles="https://download.kde.org/stable/${pkgname}/${version}/${pkgname}-${version}.tar.xz"
checksum="14a87678305fad76a0a1daca555a6775ffa642e5ebbcccecd91f497093992c1c"
post_extract() {
if [ ! -z "${CROSS_BUILD}" ]; then
ln -sf ${XBPS_CROSS_BASE}/usr/include/taglib-extras /usr/include/taglib-extras
fi
}
do_clean() {
if [ ! -z "${CROSS_BUILD}" ]; then
rm -f /usr/include/taglib-extras
fi
}
Some icons are missing though...
A minor update, breeze-icons included.
# Template file for 'amarok'
pkgname=amarok
version=3.0.0
revision=1
build_style=cmake
configure_args="-DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr -DCMAKE_BUILD_TYPE=debugfull"
hostmakedepends="glib-devel extra-cmake-modules pkg-config gettext-devel python3
qt5-tools-devel kcoreaddons-devel kpackage-devel"
makedepends="qt5-declarative-devel qt5-quickcontrols2-devel qt5-webengine-devel
qt5-webchannel-devel qt5-location-devel qt5-plugin-odbc qt5-plugin-mysql qt5-plugin-pgsql
qt5-plugin-sqlite qt5-plugin-tds qt5-svg-devel libglvnd-devel taglib-devel taglib-extras-devel
libmariadbclient-devel ffmpeg-devel libgpod-devel gdk-pixbuf-devel libmygpo-qt-devel
libmtp-devel libcurl-devel loudmouth-devel fftw-devel liblastfm-qt5-devel karchive-devel
attica-devel kcodecs-devel kconfig-devel kconfigwidgets-devel kcrash-devel kdbusaddons-devel
kdeclarative-devel kdnssd-devel kdoctools-devel kglobalaccel-devel kguiaddons-devel ki18n-devel
kiconthemes-devel kcmutils-devel kio-devel knewstuff-devel knotifications-devel ksolid-devel
ktexteditor-devel threadweaver-devel kwidgetsaddons-devel kwindowsystem-devel"
depends="phonon-qt5-backend-gstreamer breeze-icons"
short_desc="Amarok is a free, cross-platform, versatile, powerful and feature-rich music player."
maintainer="someone <[email protected]>"
license="GPL-2.0-or-later"
homepage="https://amarok.kde.org/"
distfiles="https://download.kde.org/stable/${pkgname}/${version}/${pkgname}-${version}.tar.xz"
checksum="14a87678305fad76a0a1daca555a6775ffa642e5ebbcccecd91f497093992c1c"
post_extract() {
if [ ! -z "${CROSS_BUILD}" ]; then
ln -sf ${XBPS_CROSS_BASE}/usr/include/taglib-extras /usr/include/taglib-extras
fi
}
do_clean() {
if [ ! -z "${CROSS_BUILD}" ]; then
rm -f /usr/include/taglib-extras
fi
}
I built it in Ubuntu 22.04 and want to share my experience, maybe it will help you.
- Only works with mariadb, not sqlite.
- In /usr/bin/phononsettings (part of the phonon4qt5settings package) I changed “Phonon VLC” to “Phonon GStreamer”, otherwise there was segfault when trying to play any file.
- I had to install/update: utfcpp 4.0.5 (needed to build taglib) taglib 2.0.1 taglib-extras 1.0.1 (with Arch Linux patch)
It works fine on all of the rigs I installed it. Built it for x86_64 and i686 glibc. Have built it for other arches and libcs, but I haven't tested those.