From b631d0548ed2512c33989f7b5c73ee6dd1753eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Tue, 17 Mar 2020 15:31:05 +0100 Subject: mpd: add and compile against pulseaudio --- mpd/APKBUILD | 94 ++++++++++++++++++++++++++++++++++++++ mpd/disable-iso-test.patch | 12 +++++ mpd/libcdio-paranoia-version.patch | 11 +++++ mpd/mpd.confd | 7 +++ mpd/mpd.initd | 25 ++++++++++ mpd/mpd.pre-install | 5 ++ mpd/remove-avahi-test.patch | 24 ++++++++++ mpd/stacksize.patch | 17 +++++++ 8 files changed, 195 insertions(+) create mode 100644 mpd/APKBUILD create mode 100644 mpd/disable-iso-test.patch create mode 100644 mpd/libcdio-paranoia-version.patch create mode 100644 mpd/mpd.confd create mode 100644 mpd/mpd.initd create mode 100644 mpd/mpd.pre-install create mode 100644 mpd/remove-avahi-test.patch create mode 100644 mpd/stacksize.patch diff --git a/mpd/APKBUILD b/mpd/APKBUILD new file mode 100644 index 0000000..cff7d3b --- /dev/null +++ b/mpd/APKBUILD @@ -0,0 +1,94 @@ +# Contributor: Leo +# Contributor: Łukasz Jendrysik +# Contributor: Sebastian Wicki +# Contributor: Sören Tempel +# Maintainer: Carlo Landmeter +pkgname=mpd +pkgver=0.21.20 +case $pkgver in +*.*.*) _branch=${pkgver%.*};; +*.*) _branch=$pkgver;; +esac +pkgrel=42 +pkgdesc="Music daemon that plays MP3, FLAC, Ogg Vorbis files and Audio CDs" +url="https://musicpd.org" +pkgusers="mpd" +pkggroups="mpd audio" +arch="all" +license="GPL-2.0-or-later" +makedepends="py3-sphinx lame-dev glib-dev curl-dev libao-dev libmad-dev flac-dev + libogg-dev faad2-dev libid3tag-dev libvorbis-dev alsa-lib-dev + libsamplerate-dev libshout-dev libmodplug-dev boost-dev icu-dev + libnfs-dev samba-dev opus-dev ffmpeg-dev meson libmpdclient-dev + libcdio-paranoia-dev avahi-dev py3-attrs libcap pulseaudio-dev" +checkdepends="gtest-dev gtest" +install="$pkgname.pre-install" +subpackages="$pkgname-doc $pkgname-dbg $pkgname-openrc" +source="https://www.musicpd.org/download/mpd/$_branch/mpd-$pkgver.tar.xz + stacksize.patch + mpd.initd + mpd.confd + disable-iso-test.patch + libcdio-paranoia-version.patch + remove-avahi-test.patch + " + +build() { + meson \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --buildtype=plain \ + -Dshout=enabled \ + -Dopus=enabled \ + -Dmodplug=enabled \ + -Dnfs=enabled \ + -Dsmbclient=enabled \ + -Dffmpeg=enabled \ + -Dlibmpdclient=enabled \ + -Dcdio_paranoia=enabled \ + -Dzeroconf=avahi \ + -Dpulse=enabled \ + -Dtest=true \ + -Ddocumentation=true \ + . output + ninja -C output +} + +check() { + ninja -C output -v test +} + +package() { + DESTDIR="$pkgdir" ninja -C output install + + # mpd attempts to configure real-time scheduling on linux + # add the capability which allows doing that + # see: https://www.musicpd.org/doc/html/user.html#real-time-scheduling + setcap cap_sys_nice+ep "$pkgdir"/usr/bin/mpd + + # provide a config that works by default + install -d "$pkgdir"/etc + sed -e 's:\#user.*:user\t\t"mpd":' \ + -e 's:\#log_file.*:log_file\t\t"syslog":' \ + doc/mpdconf.example > "$pkgdir"/etc/mpd.conf + install -m755 -D "$srcdir"/$pkgname.initd \ + "$pkgdir"/etc/init.d/$pkgname + install -m644 -D "$srcdir"/$pkgname.confd \ + "$pkgdir"/etc/conf.d/$pkgname + install -d -g audio -o mpd -m775 \ + "$pkgdir"/var/run/mpd \ + "$pkgdir"/var/log/mpd \ + "$pkgdir"/var/lib/mpd \ + "$pkgdir"/var/lib/mpd/playlists \ + "$pkgdir"/var/lib/mpd/music +} + +sha512sums="9dd49190ba4c85014d24e88cdb02a4649e8fb687a49fc9ea019f23725eda483980008e9abebf0ad3960bd310b693c56999699d7c7ddee3ca18e9b2aa6d5a2176 mpd-0.21.20.tar.xz +f60f6f3e921d20732c1a4c31a97f28660b43fd649e767d6c39661b6a90145231a79ad3f740ae0d706380b245ad040e98b661a513463c54cea161d1f64fc261e0 stacksize.patch +8547f685adf3cdc7b2aab7bedeed8c72242011c6f1e01750415ac21eba5ecf6b416239f527adbc904f72439c5d476249148cfb89965e33de1be69421e02c18e0 mpd.initd +41b2467f5b03f5c4dd7003cd5f56f6cfc1f67af7a9aa2538d70360f839625222bdd0c4b04c33e8cd52eeecfc354da3ca22f5aaab8aee357a5774aaf3503594e7 mpd.confd +94de2fb5e984e3246f79c2c7ab2f3123bba6c7d34e0f9b075ba3946d65912fd7f5e9d37bdb0bdee769fa6f6f8abb8ca5f2788b7976e2e5490b848800b31539fb disable-iso-test.patch +1e0e59247a22944435ca6052767ea1359d46362083de40ce36276327e4974315862a9f995f0047811e122bf4ce871f0b3965d15580f6a752d95c3617aa83136c libcdio-paranoia-version.patch +1c3da85437a9d89decd2ee692f9f9b64c6d990537a715e2e6d0f771e56593463e174ba22cfdeed6c3b49b9e490259cd693b746f0b33e8732795cf79f82a8d8c0 remove-avahi-test.patch" diff --git a/mpd/disable-iso-test.patch b/mpd/disable-iso-test.patch new file mode 100644 index 0000000..5ea7a83 --- /dev/null +++ b/mpd/disable-iso-test.patch @@ -0,0 +1,12 @@ +diff --git a/test/meson.build b/test/meson.build +index dab10ec..8aadaaa 100644 +--- a/test/meson.build ++++ b/test/meson.build +@@ -50,7 +50,6 @@ test( + 'TestTime', + executable( + 'TestTime', +- 'TestISO8601.cxx', + include_directories: inc, + dependencies: [ + time_dep, diff --git a/mpd/libcdio-paranoia-version.patch b/mpd/libcdio-paranoia-version.patch new file mode 100644 index 0000000..52fce5e --- /dev/null +++ b/mpd/libcdio-paranoia-version.patch @@ -0,0 +1,11 @@ +--- ./src/input/plugins/meson.build.orig ++++ ./src/input/plugins/meson.build +@@ -6,7 +6,7 @@ + input_plugins_sources += 'AlsaInputPlugin.cxx' + endif + +-libcdio_paranoia_dep = dependency('libcdio_paranoia', version: '>= 10.2+0.93+1', required: get_option('cdio_paranoia')) ++libcdio_paranoia_dep = dependency('libcdio_paranoia', version: '>= 0.93p1', required: get_option('cdio_paranoia')) + conf.set('ENABLE_CDIO_PARANOIA', libcdio_paranoia_dep.found()) + if libcdio_paranoia_dep.found() + input_plugins_sources += 'CdioParanoiaInputPlugin.cxx' \ No newline at end of file diff --git a/mpd/mpd.confd b/mpd/mpd.confd new file mode 100644 index 0000000..720306e --- /dev/null +++ b/mpd/mpd.confd @@ -0,0 +1,7 @@ +# conf.d file for music player daemon + +# +# Specify daemon $OPTS here. +# + +OPTS="" diff --git a/mpd/mpd.initd b/mpd/mpd.initd new file mode 100644 index 0000000..817583c --- /dev/null +++ b/mpd/mpd.initd @@ -0,0 +1,25 @@ +#!/sbin/openrc-run + +# init.d file for music player daemon + +supervisor=supervise-daemon + +name="Music Player Daemon" +description="A daemon for playing music" + +command=/usr/bin/mpd +command_args="$MPD_OPTS" +command_args_foreground="--no-daemon" + +command_user="${M_USER:-mpd}:${M_GROUP:-audio}" + +depend() { + need localmount + use net netmount nfsmount esound pulseaudio + after firewall +} + +start_pre() { + checkpath --directory --quiet \ + --owner "${M_USER:-mpd}" --mode 0775 /var/run/mpd +} diff --git a/mpd/mpd.pre-install b/mpd/mpd.pre-install new file mode 100644 index 0000000..c0439b7 --- /dev/null +++ b/mpd/mpd.pre-install @@ -0,0 +1,5 @@ +#!/bin/sh + +adduser -S -D -h /var/lib/mpd -s /sbin/nologin -G audio -g mpd mpd 2>/dev/null + +exit 0 diff --git a/mpd/remove-avahi-test.patch b/mpd/remove-avahi-test.patch new file mode 100644 index 0000000..27d514a --- /dev/null +++ b/mpd/remove-avahi-test.patch @@ -0,0 +1,24 @@ +--- a/test/meson.build ++++ b/test/meson.build +@@ -123,21 +123,6 @@ + ], + )) + +-if libavahi_client_dep.found() +- executable( +- 'run_avahi', +- 'run_avahi.cxx', +- 'ShutdownHandler.cxx', +- '../src/Log.cxx', +- '../src/LogBackend.cxx', +- include_directories: inc, +- dependencies: [ +- zeroconf_dep, +- util_dep, +- ], +- ) +-endif +- + if enable_inotify + executable( + 'run_inotify', diff --git a/mpd/stacksize.patch b/mpd/stacksize.patch new file mode 100644 index 0000000..291a2f2 --- /dev/null +++ b/mpd/stacksize.patch @@ -0,0 +1,17 @@ +--- ./src/thread/Thread.cxx.orig ++++ ./src/thread/Thread.cxx +@@ -35,8 +35,12 @@ + if (handle == nullptr) + throw MakeLastError("Failed to create thread"); + #else +- int e = pthread_create(&handle, nullptr, ThreadProc, this); +- ++ pthread_attr_t attr, *attrptr = nullptr; ++ if ((pthread_attr_init(&attr) == 0) ++ && (pthread_attr_setstacksize(&attr, 1024*1024) == 0)) { ++ attrptr = &attr; ++ } ++ int e = pthread_create(&handle, attrptr, ThreadProc, this); + if (e != 0) + throw MakeErrno(e, "Failed to create thread"); + #endif -- cgit v1.2.3