From 3af1cecb10e7a45f0c4cd0dd2afefcfc32e4dde6 Mon Sep 17 00:00:00 2001 From: Kerin Millar Date: Tue, 11 Jan 2022 22:54:19 +0200 Subject: [PATCH] media-sound/spotify: Fix POSIX sh violations in the wrapper script Adjust the wrapper script template so as to operate correctly in POSIX sh(1), in addition to incorporating some minor quality improvements. Relocate the template to FILESDIR and use envsubst(1) to substitute the SPOTIFY_HOME and LIBDIR variables at the point that the wrapper is generated. Doing so makes it simpler to read and maintain. Closes: https://bugs.gentoo.org/831029 Signed-off-by: Kerin Millar --- media-sound/spotify/files/spotify-wrapper | 23 ++++ media-sound/spotify/spotify-1.1.72-r2.ebuild | 116 +++++++++++++++++++ 2 files changed, 139 insertions(+) create mode 100644 media-sound/spotify/files/spotify-wrapper create mode 100644 media-sound/spotify/spotify-1.1.72-r2.ebuild diff --git a/media-sound/spotify/files/spotify-wrapper b/media-sound/spotify/files/spotify-wrapper new file mode 100644 index 000000000..db8f8b948 --- /dev/null +++ b/media-sound/spotify/files/spotify-wrapper @@ -0,0 +1,23 @@ +#!/bin/sh + +export LD_LIBRARY_PATH="/usr/$LIBDIR/apulse" + +if command -v spotify-dbus.py > /dev/null; then + echo "Launching spotify with Gnome systray integration." + spotify-dbus.py "$@" +elif command -v spotify-tray > /dev/null; then + echo "Launching spotify with generic systray integration." + minimized= + for arg; do + if [ "$arg" = --minimized ]; then + minimized=$arg + break + fi + done + spotify-tray \ + --client-path="$SPOTIFY_HOME/spotify" --toggle $minimized -- "$@" +else + echo "Neither gnome-integration-spotify nor spotify-tray are installed." + echo "Launching spotify without systray integration." + exec "$SPOTIFY_HOME/spotify" "$@" +fi diff --git a/media-sound/spotify/spotify-1.1.72-r2.ebuild b/media-sound/spotify/spotify-1.1.72-r2.ebuild new file mode 100644 index 000000000..d3f98c51d --- /dev/null +++ b/media-sound/spotify/spotify-1.1.72-r2.ebuild @@ -0,0 +1,116 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit desktop optfeature pax-utils unpacker xdg + +DESCRIPTION="Spotify is a social music platform" +HOMEPAGE="https://www.spotify.com/download/linux/" +SRC_BASE="http://repository.spotify.com/pool/non-free/s/${PN}-client/" +BUILD_ID_AMD64="439.gc253025e" +SRC_URI="${SRC_BASE}${PN}-client_${PV}.${BUILD_ID_AMD64}_amd64.deb" + +LICENSE="Spotify" +SLOT="0" +KEYWORDS="~amd64" +IUSE="libnotify local-playback pax-kernel pulseaudio" +RESTRICT="mirror strip" + +BDEPEND=" + >=dev-util/patchelf-0.10 + sys-devel/gettext +" +RDEPEND=" + dev-libs/nss + dev-python/dbus-python + libnotify? ( x11-libs/libnotify ) + dev-libs/openssl:0= + media-libs/alsa-lib + media-libs/fontconfig + media-libs/harfbuzz + media-libs/mesa[X(+)] + net-misc/curl[ssl] + net-print/cups[ssl] + pulseaudio? ( media-sound/pulseaudio ) + !pulseaudio? ( media-sound/apulse ) + local-playback? ( media-video/ffmpeg:0/56.58.58 ) + x11-libs/gtk+:3 + app-accessibility/at-spi2-atk + x11-libs/libxkbcommon + x11-libs/libXScrnSaver + x11-libs/libXtst + x11-libs/libSM + x11-libs/libICE +" + #sys-libs/glibc + +S="${WORKDIR}/" + +QA_PREBUILT=" + opt/spotify/spotify-client/spotify + opt/spotify/spotify-client/libEGL.so + opt/spotify/spotify-client/libGLESv2.so + opt/spotify/spotify-client/libcef.so + opt/spotify/spotify-client/libvk_swiftshader.so + opt/spotify/spotify-client/libvulkan.so.1 + opt/spotify/spotify-client/swiftshader/libEGL.so + opt/spotify/spotify-client/swiftshader/libGLESv2.so +" + +src_prepare() { + default + # Spotify links against libcurl-gnutls.so.4, which does not exist in Gentoo. + patchelf --replace-needed libcurl-gnutls.so.4 libcurl.so.4 usr/bin/spotify \ + || die "failed to patch libcurl library dependency" +} + +src_install() { + gunzip usr/share/doc/spotify-client/changelog.gz || die + dodoc usr/share/doc/spotify-client/changelog + + SPOTIFY_PKG_HOME=usr/share/spotify + insinto /usr/share/pixmaps + doins ${SPOTIFY_PKG_HOME}/icons/*.png + + # install in /opt/spotify + SPOTIFY_HOME=/opt/spotify/spotify-client + insinto ${SPOTIFY_HOME} + doins -r ${SPOTIFY_PKG_HOME}/* + fperms +x ${SPOTIFY_HOME}/spotify + + dodir /usr/bin + SPOTIFY_HOME=${SPOTIFY_HOME} LIBDIR=$(get_libdir) \ + envsubst '$SPOTIFY_HOME $LIBDIR' \ + < "${FILESDIR}/spotify-wrapper" > "${D}/usr/bin/spotify" || die + fperms +x /usr/bin/spotify + + local size + for size in 16 22 24 32 48 64 128 256 512; do + newicon -s ${size} "${S}${SPOTIFY_PKG_HOME}/icons/spotify-linux-${size}.png" \ + "spotify-client.png" + done + domenu "${S}${SPOTIFY_PKG_HOME}/spotify.desktop" + if use pax-kernel; then + #create the headers, reset them to default, then paxmark -m them + pax-mark C "${ED}${SPOTIFY_HOME}/${PN}" || die + pax-mark z "${ED}${SPOTIFY_HOME}/${PN}" || die + pax-mark m "${ED}${SPOTIFY_HOME}/${PN}" || die + eqawarn "You have set USE=pax-kernel meaning that you intend to run" + eqawarn "${PN} under a PaX enabled kernel. To do so, we must modify" + eqawarn "the ${PN} binary itself and this *may* lead to breakage! If" + eqawarn "you suspect that ${PN} is being broken by this modification," + eqawarn "please open a bug." + fi +} + +pkg_postinst() { + xdg_pkg_postinst + + ewarn "If Spotify crashes after an upgrade its cache may be corrupt." + ewarn "To remove the cache:" + ewarn "rm -rf ~/.cache/spotify" + + optfeature "Gnome specific systray integration" gnome-extra/gnome-integration-spotify + optfeature "systray integration on non-Gnome DEs" media-sound/spotify-tray +} -- 2.34.1