- Added mpd-fmt11.patch for (fixed build with fmt 11.2).

OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/mpd?expand=0&rev=119
This commit is contained in:
Илья Индиго 2024-11-06 04:58:25 +00:00 committed by Git OBS Bridge
commit 620b5f2d7e
14 changed files with 2899 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

41
README.mpd Normal file
View File

@ -0,0 +1,41 @@
mpd config file /etc/mpd.cond should be customised, at least a path to
music directories (music_directory).
To use alsa sound output instead of pulse, activate the corresponding
part of mpd.conf and put comment on pulse part.
For security reasons, MPD runs as restricted user mpd, group
audio. Please consider that music_directory and all directories in the
path to it should be readable and executable either for user mpd or
group audio. IF you ask youself what should "executable" means to
a directory, it is a right to change into it. So a directory could
either belong to mpd user or belong to the audio group or be readable
for all (others). Directories and files beneath it should be accessable
the same way. Some examples for right permissions:
ls -l -d /mnt/mp3
readable by everyone
drwxr-xr-x 226 user users 16384 Mar 24 23:36 /mnt/mp3
readable by audio group
drwxr-x--- 226 user audio 16384 Mar 24 23:36 /mnt/mp3
readable by mpd user
drwx------ 226 mpd audio 16384 Mar 24 23:36 /mnt/mp3
If you would like to set up some independent directories, declare one
of it as music_directory and link others in it. Permissions for other
directories are to be set accordingly.
MPD will be bounded to the local address (localhost): If you would
like to control it over network , then change bind_to_address to the
network address. You can set password and the list of activities to
restrict control of MPD over network.
To start MPD at boot time, call as root:
systemctl enable mpd
If filenames or directory names don't display correctly, set the
character set (encoding) for the filesystem in mpd.conf.

3
mpd-0.23.15.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:550132239ad1acf82ccf8905b56cc13dc2c81a4489b96fba7731b3049907661a
size 778384

BIN
mpd-0.23.15.tar.xz.sig Normal file

Binary file not shown.

202
mpd-conf.patch Normal file
View File

@ -0,0 +1,202 @@
Index: mpd-0.23.9/doc/mpdconf.example
===================================================================
--- mpd-0.23.9.orig/doc/mpdconf.example
+++ mpd-0.23.9/doc/mpdconf.example
@@ -17,7 +17,7 @@
# playlist files not created by the server but only if they are in the MPD
# format. This setting defaults to playlist saving being disabled.
#
-#playlist_directory "~/.mpd/playlists"
+#playlist_directory "/var/lib/mpd/playlists"
#
# This setting sets the location of the MPD database. This file is used to
# load the database at server start up and store the database while the
@@ -25,7 +25,7 @@
# MPD to accept files over ipc socket (using file:// protocol) or streaming
# files over an accepted protocol.
#
-#db_file "~/.mpd/database"
+#db_file "/var/lib/mpd/mpd.db"
# These settings are the locations for the daemon log files for the daemon.
#
@@ -35,7 +35,7 @@
# If you use systemd, do not configure a log_file. With systemd, MPD
# defaults to the systemd journal, which is fine.
#
-#log_file "~/.mpd/log"
+#log_file "/var/log/mpd.log"
# This setting sets the location of the file which stores the process ID
# for use of mpd --kill and some init scripts. This setting is disabled by
@@ -43,19 +43,19 @@
#
# If you use systemd, do not configure a pid_file.
#
-#pid_file "~/.mpd/pid"
+#pid_file "/run/mpd/mpd.pid"
# This setting sets the location of the file which contains information about
# most variables to get MPD back into the same general shape it was in before
# it was brought down. This setting is disabled by default and the server
# state will be reset on server start up.
#
-#state_file "~/.mpd/state"
+#state_file "/var/lib/mpd/mpdstate"
#
# The location of the sticker database. This is a database which
# manages dynamic information attached to songs.
#
-#sticker_file "~/.mpd/sticker.sql"
+#sticker_file "/var/lib/mpd/sticker.sql"
#
###############################################################################
@@ -67,14 +67,14 @@
# initialization. This setting is disabled by default and MPD is run as the
# current user.
#
-#user "nobody"
+#user "mpd"
#
# This setting specifies the group that MPD will run as. If not specified
# primary group of user specified with "user" setting will be used (if set).
# This is useful if MPD needs to be a member of group such as "audio" to
# have permission to use sound card.
#
-#group "nogroup"
+#group "audio"
#
# This setting sets the address for the daemon to listen on. Careful attention
# should be paid if this is assigned to anything other than the default, any.
@@ -85,7 +85,7 @@
#bind_to_address "any"
#
# And for Unix Socket
-#bind_to_address "~/.mpd/socket"
+#bind_to_address "/run/mpd/socket"
#
# This setting is the TCP port that is desired for the daemon to get assigned
# to.
@@ -96,7 +96,7 @@
# troubleshooting. Available setting arguments are "notice", "info", "verbose",
# "warning" and "error".
#
-#log_level "notice"
+log_level "warning"
#
# Setting "restore_paused" to "yes" puts MPD into pause mode instead
# of starting playback after startup.
@@ -120,7 +120,7 @@
# This setting enables automatic update of MPD's database when files in
# music_directory are changed.
#
-#auto_update "yes"
+auto_update "no"
#
# Limit the depth of the directories being watched, 0 means only watch
# the music directory itself. There is no limit by default.
@@ -150,7 +150,7 @@
# If this setting is set to "yes", service information will be published with
# Zeroconf / Avahi.
#
-#zeroconf_enabled "yes"
+zeroconf_enabled "no"
#
# The argument to this setting will be the Zeroconf / Avahi unique name for
# this MPD server on the network. %h will be replaced with the hostname.
@@ -217,8 +217,9 @@ input {
#
#audio_output {
# type "alsa"
-# name "My ALSA Device"
-## device "hw:0,0" # optional
+# name "ALSA Device"
+## device "plug:plugequal" # optional
+## mixer_control "Master" # optional
## mixer_type "hardware" # optional
## mixer_device "default" # optional
## mixer_control "PCM" # optional
@@ -241,14 +242,14 @@ input {
#audio_output {
# type "shout"
# encoder "vorbis" # optional
-# name "My Shout Stream"
+# name "Shout Stream"
# host "localhost"
# port "8000"
# mount "/mpd.ogg"
# password "hackme"
-# quality "5.0"
-# bitrate "128"
-# format "44100:16:1"
+# quality "6.0"
+# bitrate "192"
+# format "48000:16:2"
## protocol "icecast2" # optional
## user "source" # optional
## description "My Stream Description" # optional
@@ -266,34 +267,34 @@ input {
# name "My recorder"
# encoder "vorbis" # optional, vorbis or lame
# path "/var/lib/mpd/recorder/mpd.ogg"
-## quality "5.0" # do not define if bitrate is defined
-# bitrate "128" # do not define if quality is defined
-# format "44100:16:1"
+## quality "6.0" # do not define if bitrate is defined
+# bitrate "192" # do not define if quality is defined
+# format "48000:16:2"
#}
#
# An example of a httpd output (built-in HTTP streaming server):
#
#audio_output {
# type "httpd"
-# name "My HTTP Stream"
-# encoder "vorbis" # optional, vorbis or lame
+# name "HTTP Stream"
+# encoder "vorbis" # optional, vorbis or lame
# port "8000"
# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
-## quality "5.0" # do not define if bitrate is defined
-# bitrate "128" # do not define if quality is defined
-# format "44100:16:1"
+## quality "6.0" # do not define if bitrate is defined
+# bitrate "192" # do not define if quality is defined
+# format "48000:16:2"
# max_clients "0" # optional 0=no limit
#}
#
# An example of a pulseaudio output (streaming to a remote pulseaudio server)
#
-#audio_output {
-# type "pulse"
-# name "My Pulse Output"
+audio_output {
+ type "pulse"
+ name "Pulse Output"
## server "remote_server" # optional
## sink "remote_server_sink" # optional
## media_role "media_role" #optional
-#}
+}
#
# An example of a winmm output (Windows multimedia API).
#
@@ -355,7 +356,7 @@ input {
# command "AudioCompress -m | aplay -f cd 2>/dev/null"
## Or to send raw PCM stream through PCM:
# command "nc example.org 8765"
-# format "44100:16:2"
+# format "48000:16:2"
#}
#
## An example of a null output (for no audio output):
@@ -413,6 +414,6 @@ input {
# If file or directory names do not display correctly for your locale then you
# may need to modify this setting.
#
-#filesystem_charset "UTF-8"
+filesystem_charset "UTF-8"
#
###############################################################################

79
mpd-fmt11.patch Normal file
View File

@ -0,0 +1,79 @@
From 1402869715e3efca87942d79c3173a6b21a6925d Mon Sep 17 00:00:00 2001
From: Rudi Heitbaum <rudi@heitbaum.com>
Date: Fri, 5 Jul 2024 14:27:45 +0000
Subject: [PATCH] lib/fmt: support build with libfmt-11.0.0
Upstream libfmt commit fmtlib/fmt@d707292
now requires the format function to be const.
Adjust the function prototype so it is const and can compile.
Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>
---
src/lib/ffmpeg/LibFmt.hxx | 2 +-
src/lib/fmt/AudioFormatFormatter.hxx | 4 ++--
src/lib/fmt/ExceptionFormatter.hxx | 2 +-
src/lib/fmt/PathFormatter.hxx | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/lib/ffmpeg/LibFmt.hxx b/src/lib/ffmpeg/LibFmt.hxx
index aa068711f3..dee83ed2d5 100644
--- a/src/lib/ffmpeg/LibFmt.hxx
+++ b/src/lib/ffmpeg/LibFmt.hxx
@@ -13,7 +13,7 @@ template<>
struct fmt::formatter<AVSampleFormat> : formatter<string_view>
{
template<typename FormatContext>
- auto format(const AVSampleFormat format, FormatContext &ctx) {
+ auto format(const AVSampleFormat format, FormatContext &ctx) const {
const char *name = av_get_sample_fmt_name(format);
if (name == nullptr)
name = "?";
diff --git a/src/lib/fmt/AudioFormatFormatter.hxx b/src/lib/fmt/AudioFormatFormatter.hxx
index e0ffb62160..8da98efd41 100644
--- a/src/lib/fmt/AudioFormatFormatter.hxx
+++ b/src/lib/fmt/AudioFormatFormatter.hxx
@@ -13,7 +13,7 @@ template<>
struct fmt::formatter<SampleFormat> : formatter<string_view>
{
template<typename FormatContext>
- auto format(const SampleFormat format, FormatContext &ctx) {
+ auto format(const SampleFormat format, FormatContext &ctx) const {
return formatter<string_view>::format(sample_format_to_string(format),
ctx);
}
@@ -23,7 +23,7 @@ template<>
struct fmt::formatter<AudioFormat> : formatter<string_view>
{
template<typename FormatContext>
- auto format(const AudioFormat &af, FormatContext &ctx) {
+ auto format(const AudioFormat &af, FormatContext &ctx) const {
return formatter<string_view>::format(ToString(af).c_str(),
ctx);
}
diff --git a/src/lib/fmt/ExceptionFormatter.hxx b/src/lib/fmt/ExceptionFormatter.hxx
index 3f342df672..f08b3bb228 100644
--- a/src/lib/fmt/ExceptionFormatter.hxx
+++ b/src/lib/fmt/ExceptionFormatter.hxx
@@ -12,7 +12,7 @@ template<>
struct fmt::formatter<std::exception_ptr> : formatter<string_view>
{
template<typename FormatContext>
- auto format(std::exception_ptr e, FormatContext &ctx) {
+ auto format(std::exception_ptr e, FormatContext &ctx) const {
return formatter<string_view>::format(GetFullMessage(e), ctx);
}
};
diff --git a/src/lib/fmt/PathFormatter.hxx b/src/lib/fmt/PathFormatter.hxx
index e5ae89dec5..add06df81b 100644
--- a/src/lib/fmt/PathFormatter.hxx
+++ b/src/lib/fmt/PathFormatter.hxx
@@ -13,7 +13,7 @@ template<std::convertible_to<Path> T>
struct fmt::formatter<Path> : formatter<string_view>
{
template<typename FormatContext>
- auto format(Path path, FormatContext &ctx) {
+ auto format(Path path, FormatContext &ctx) const {
return formatter<string_view>::format(path.ToUTF8(), ctx);
}
};

20
mpd-sndfile.patch Normal file
View File

@ -0,0 +1,20 @@
From: Luigi Baldoni <aloisio@gmx.com>
Date: 2018-11-09 21:10:34 +0100
Subject: avoid clash wrt sndfile.h
sndfile.h is present both in /usr/include and /usr/include/libmodplug
This hack hardcodes the path of the first one.
Index: mpd-0.21.1/src/decoder/plugins/SndfileDecoderPlugin.cxx
===================================================================
--- mpd-0.21.1.orig/src/decoder/plugins/SndfileDecoderPlugin.cxx
+++ mpd-0.21.1/src/decoder/plugins/SndfileDecoderPlugin.cxx
@@ -29,7 +29,7 @@
#include <exception>
-#include <sndfile.h>
+#include "/usr/include/sndfile.h"
static constexpr Domain sndfile_domain("sndfile");

58
mpd-user.conf Normal file
View File

@ -0,0 +1,58 @@
music_directory "~/data/music"
playlist_directory "~/.mpd/playlists"
db_file "~/.mpd/database"
log_file "~/.mpd/log"
#pid_file "~/.mpd/pid"
state_file "~/.mpd/state"
sticker_file "~/.mpd/sticker.sql"
bind_to_address "127.0.0.1"
port "6600"
#bind_to_address "~/.mpd/socket"
#gapless_mp3_playback "yes"
save_absolute_paths_in_playlists "no"
metadata_to_use "artist,album,title,track,name,date"
auto_update "yes"
#auto_update_depth "3"
follow_outside_symlinks "yes"
follow_inside_symlinks "yes"
zeroconf_enabled "yes"
zeroconf_name "Music Player"
#password "password@read,add,control,admin"
#default_permissions "read,add,control,admin"
input {
plugin "curl"
}
audio_output {
type "pulse"
name "PulseAudio"
}
#audio_output {
# type "alsa"
# name "ALSA"
## device "plug:plugequal" # optional
## mixer_control "Master" # optional
#}
#audio_output {
# type "jack"
# name "mpd"
#}
audio_output_format "48000:16:2"
samplerate_converter "Fastest Sinc Interpolator"
#replaygain "album"
#replaygain_preamp "0"
#volume_normalization "no"
#audio_buffer_size "2048"
#buffer_before_play "10%"
#connection_timeout "60"
#max_connections "10"
#max_playlist_length "16384"
#max_command_list_size "2048"
#max_output_buffer_size "8192"
filesystem_charset "UTF-8"

2104
mpd.changes Normal file

File diff suppressed because it is too large Load Diff

7
mpd.firewalld Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Music Player Daemon</short>
<description>Opens ports for Music Player Daemon</description>
<port port="6600" protocol="tcp"/>
<port port="8000" protocol="tcp"/>
</service>

88
mpd.keyring Normal file
View File

@ -0,0 +1,88 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=VXaj
-----END PGP PUBLIC KEY BLOCK-----

272
mpd.spec Normal file
View File

@ -0,0 +1,272 @@
#
# spec file for package mpd
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define mver 0.23
%bcond_with faad
%bcond_without mpd_iso9660
Name: mpd
Version: 0.23.15
Release: 0
Summary: Music Player Daemon
License: GPL-2.0-or-later
URL: https://musicpd.org
Source0: https://musicpd.org/download/%{name}/%{mver}/%{name}-%{version}.tar.xz
Source1: https://musicpd.org/download/%{name}/%{mver}/%{name}-%{version}.tar.xz.sig
Source2: README.%{name}
Source3: %{name}-user.conf
Source4: %{name}.firewalld
Source5: %{name}.tmpfiles.d
Source9: %{name}.keyring
Patch0: %{name}-conf.patch
Patch1: %{name}-sndfile.patch
Patch2: %{name}-fmt11.patch
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: group(audio)
BuildRequires: hicolor-icon-theme
BuildRequires: libboost_headers-devel
BuildRequires: libcue-devel
# MPD_ENABLE_AUTO_LIB
BuildRequires: libgcrypt-devel
BuildRequires: libmikmod-devel
BuildRequires: libmp3lame-devel
BuildRequires: meson >= 0.56.0
BuildRequires: pkgconfig
BuildRequires: python3-Sphinx
# MPD_ENABLE_AUTO_PKG
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(ao)
BuildRequires: pkgconfig(audiofile)
BuildRequires: pkgconfig(avahi-client)
BuildRequires: pkgconfig(bzip2)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(expat)
BuildRequires: pkgconfig(flac)
BuildRequires: pkgconfig(fluidsynth)
BuildRequires: pkgconfig(fmt)
BuildRequires: pkgconfig(icu-i18n)
BuildRequires: pkgconfig(id3tag)
BuildRequires: pkgconfig(jack)
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libavutil)
BuildRequires: pkgconfig(libcdio) >= 2.0.0
BuildRequires: pkgconfig(libcdio_paranoia)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(libgme)
BuildRequires: pkgconfig(libmms)
BuildRequires: pkgconfig(libmodplug)
BuildRequires: pkgconfig(libmpdclient)
BuildRequires: pkgconfig(libmpg123)
BuildRequires: pkgconfig(libnfs)
BuildRequires: pkgconfig(libopenmpt)
BuildRequires: pkgconfig(libpcre2-8)
BuildRequires: pkgconfig(libpipewire-0.3)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(libupnp)
BuildRequires: pkgconfig(liburing)
BuildRequires: pkgconfig(mad)
BuildRequires: pkgconfig(ogg)
BuildRequires: pkgconfig(openal)
BuildRequires: pkgconfig(opus)
BuildRequires: pkgconfig(samplerate)
BuildRequires: pkgconfig(shine)
BuildRequires: pkgconfig(shout)
BuildRequires: pkgconfig(smbclient)
BuildRequires: pkgconfig(sndfile)
BuildRequires: pkgconfig(soxr)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(twolame)
BuildRequires: pkgconfig(vorbis)
BuildRequires: pkgconfig(vorbisenc)
BuildRequires: pkgconfig(wavpack)
BuildRequires: pkgconfig(yajl)
BuildRequires: pkgconfig(zlib)
BuildRequires: pkgconfig(zziplib)
Requires(pre): %fillup_prereq
Requires(pre): group(audio)
Requires(pre): shadow
Provides: user(%{name})
%{?systemd_requires}
%if %{with faad}
BuildRequires: faad2-devel
%endif
%if %{with mpd_iso9660}
BuildRequires: pkgconfig(libiso9660)
%endif
%description
A daemon for playing music (mp3, ogg vorbis, flac, and wav). Music is
played through the server's audio device. The daemon stores info
about all available music, and this info can be easily searched and
retrieved. Player control, info retrieval, and playlist management
can all be managed remotely. There a bunch of clients to control mpd:
for Gnome, KDE, console and Apache (PHP).
Please read README.mpd how to configure it.
%package doc
Summary: Additional Package Documentation
BuildArch: noarch
%description doc
This package contains optional documentation provided in addition to this package's base documentation.
%prep
%autosetup -p1
%build
%meson \
-Dsidplay=disabled \
-Dfaad=disabled \
-Diso9660=disabled \
-Dsyslog=enabled \
-Deventfd=true \
-Dsignalfd=true \
-Depoll=true \
-Ddatabase=true \
-Ddaemon=true \
-Ddocumentation=enabled \
-Dmanpages=true \
-Ddsd=true \
-Dfifo=true \
-Dhttpd=true \
-Dinotify=true \
-Dipv6=enabled \
-Dsoundcloud=disabled \
-Dmikmod=enabled \
-Dopenal=enabled \
-Doss=disabled \
-Dpipe=true \
-Drecorder=true \
-Dshout=enabled \
-Dsolaris_output=enabled \
-Dtcp=true \
-Dtest=false \
-Dlocal_socket=true \
-Dvorbis=enabled \
-Dwave_encoder=true \
-Dicu=enabled \
-Diconv=enabled \
-Dsystemd=enabled \
-Dlibmpdclient=enabled \
-Dexpat=enabled \
-Did3tag=enabled \
-Dchromaprint=disabled \
-Dsqlite=enabled \
-Dlibsamplerate=enabled \
-Dsoxr=enabled \
-Dcurl=enabled \
-Dsmbclient=enabled \
-Dnfs=enabled \
-Dcdio_paranoia=enabled \
-Dmms=enabled \
-Dwebdav=enabled \
-Dcue=true \
-Dneighbor=true \
%if %{with mpd_iso9660}
-Diso9660=enabled \
%endif
-Dzlib=enabled \
-Dbzip2=enabled \
-Dupnp=pupnp \
-Dzzip=enabled \
-Dadplug=disabled \
-Daudiofile=enabled \
%if %{with faad}
-Dfaad=enabled \
%endif
-Dffmpeg=enabled \
-Dflac=enabled \
-Dfluidsynth=enabled \
-Dgme=enabled \
-Dmad=enabled \
-Dmpg123=enabled \
-Dmodplug=enabled \
-Dopus=enabled \
-Dsndfile=enabled \
-Dmpcdec=disabled \
-Dwavpack=enabled \
-Dwildmidi=disabled \
-Dshine=enabled \
-Dvorbisenc=enabled \
-Dlame=enabled \
-Dtwolame=enabled \
-Dalsa=enabled \
-Dsndio=disabled \
-Djack=enabled \
-Dao=enabled \
-Dpulse=enabled \
-Dtremor=disabled \
-Dpcre=enabled \
-Dsystemd_system_unit_dir=%{_unitdir} \
-Dsystemd_user_unit_dir=%{_userunitdir}
%meson_build
%install
%meson_install
mv %{buildroot}%{_datadir}/doc/%{name}/html .
rm -r %{buildroot}%{_datadir}/doc/%{name}
install -pm0644 %{SOURCE2} %{SOURCE3} .
install -Dpm0644 %{SOURCE4} %{buildroot}%{_prefix}/lib/firewalld/services/%{name}.xml
install -Dpm0644 %{SOURCE5} %{buildroot}%{_tmpfilesdir}/%{name}.conf
install -Dpm0644 doc/mpdconf.example %{buildroot}%{_sysconfdir}/%{name}.conf
# Remove duplicate for mpd.socket and replace it with a symlink.
rm %{buildroot}%{_userunitdir}/%{name}.socket
ln -s ../system/%{name}.socket %{buildroot}%{_userunitdir}/%{name}.socket
mkdir %{buildroot}%{_sbindir}
mkdir -p %{buildroot}%{_localstatedir}/lib/%{name}/playlists
%pre
getent passwd %{name} >/dev/null || useradd -rc 'Music Player Daemon' -s /bin/false -d %{_localstatedir}/lib/%{name} -g audio %{name}
%service_add_pre %{name}.service %{name}.socket
%post
%service_add_post %{name}.service %{name}.socket
%tmpfiles_create %{_tmpfilesdir}/%{name}.conf
%preun
%service_del_preun %{name}.service %{name}.socket
%postun
%service_del_postun %{name}.service %{name}.socket
%files
%license COPYING
%doc AUTHORS NEWS README.md README.%{name} %{name}-user.conf doc/mpdconf.example
%config(noreplace) %{_sysconfdir}/%{name}.conf
%{_bindir}/%{name}
%attr(0755,mpd,audio) %{_localstatedir}/lib/%{name}
%{_mandir}/man1/%{name}.1%{?ext_man}
%{_mandir}/man5/%{name}.conf.5%{?ext_man}
%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
%{_unitdir}/%{name}.service
%{_unitdir}/%{name}.socket
%{_userunitdir}/%{name}.socket
%{_userunitdir}/%{name}.service
%dir %{_prefix}/lib/firewalld
%dir %{_prefix}/lib/firewalld/services
%{_prefix}/lib/firewalld/services/%{name}.xml
%{_tmpfilesdir}/%{name}.conf
%ghost %dir %attr(0755,%{name},audio) /run/%{name}
%files doc
%doc html/*.{html,js} html/_static
%changelog

1
mpd.tmpfiles.d Normal file
View File

@ -0,0 +1 @@
d /run/mpd 0755 mpd audio -