File mpd.spec of Package mpd

%define realname mpd
%define majorver 0.21
%define realver  0.21.3
%define srcext   tar.xz

# turn off the generation of debuginfo rpm  (RH9) ??
%global debug_package %{nil}

Name:          %{realname}
Version:       %{realver}
Release:       wiz%{?extraver:0.}1%{?dist}
License:       GPL-3.0+
Group:         Productivity/Multimedia/Sound/Players
URL:           https://www.musicpd.org/
Summary:       Music Player Daemon

# systemd requirements
%if 0%{?suse_version} >= 1230 || 0%{?rhel} >= 7
BuildRequires: systemd-devel
%endif

# Build-time parameters
BuildRequires: xz
BuildRequires: gcc-c++
BuildRequires: meson ninja
BuildRequires: pkg-config
BuildRequires: boost-devel >= 1.58
%if 0%{?suse_version}
BuildRequires: libbz2-devel
%else
BuildRequires: bzip2-devel
%endif
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(icu-i18n)
BuildRequires: pkgconfig(smbclient)
BuildRequires: pkgconfig(zlib)
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(expat)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavutil)
BuildRequires: pkgconfig(libpcre)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(libupnp)
BuildRequires: pkgconfig(yajl)
BuildRequires: pkgconfig(id3tag)
BuildRequires: pkgconfig(samplerate)
BuildRequires: pkgconfig(soxr)
BuildRequires: pkgconfig(ao)
BuildRequires: pkgconfig(jack)
BuildRequires: pkgconfig(openal)
BuildRequires: pkgconfig(flac)
BuildRequires: pkgconfig(opus)
BuildRequires: pkgconfig(vorbis)
BuildRequires: pkgconfig(audiofile)
BuildRequires: pkgconfig(libmpg123)
BuildRequires: pkgconfig(avahi-client)
BuildRoot:     %{_tmppath}/%{name}-root
Source:        http://www.musicpd.org/download/mpd/%{majorver}/%{realname}-%{realver}.%{srcext}

%description
Music Player Daemon (MPD) is a flexible, powerful, server-side application for
playing music. Through plugins and libraries it can play a variety of sound
files while being controlled by its network protocol.

# Preparation step (unpackung and patching if necessary)
%prep
%setup -q -n %{realname}-%{version}

# Build step (compile/build binaries, documentation, etc)
%build
export CFLAGS="%{optflags} %{?gcc_lto} -fpie"
export CXXFLAGS="%{optflags} %{?gcc_lto} -fpie"
export LDFLAGS="-Wl,--as-needed -Wl,--strip-all %{?gcc_lto} -fpie"
meson \
 --prefix=%{_prefix} \
 --libexecdir=%{_libexecdir} \
 builddir/
ninja -C builddir/

# Install built stuff
%install
DESTDIR=%{buildroot} \
 ninja -C builddir/ install
%{__install} -D -m0644 doc/mpdconf.example %{buildroot}%{_sysconfdir}/mpd.conf
%{__install} -D -m0644 doc/mpd.1           %{buildroot}%{_mandir}/man1/mpd.1
%{__install} -D -m0644 doc/mpd.conf.5      %{buildroot}%{_mandir}/man5/mpd.conf.5
# Remove installed documentation - it will be included by RPM %doc tag(s)
[ "%{buildroot}" != "/" ] && %{__rm} -f %{buildroot}%{_datadir}/doc/%{name}/*

# Cleanup
%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}

# Files list
%files
%defattr(-,root,root)
%doc AUTHORS COPYING NEWS README.md
%config(noreplace) %{_sysconfdir}/mpd.conf
%{_bindir}/mpd
%if 0%{?suse_version} >= 1230 || 0%{?rhel} >= 7
%{_unitdir}/mpd.service
%{_unitdir}/mpd.socket
%{_userunitdir}/mpd.service
%endif
%doc %{_mandir}/man1/mpd.1*
%doc %{_mandir}/man5/mpd.conf.5*
%exclude %{_datadir}/icons/hicolor/scalable/apps/mpd.svg

%if 0%{?suse_version} >= 1230

%pre
%{service_add_pre %{name}.service}
%{service_add_pre %{name}.socket}

%post
%{service_add_post %{name}.service}
%{service_add_post %{name}.socket}

%preun
%{service_del_preun %{name}.service}
%{service_del_preun %{name}.socket}

%postun
%{service_del_postun %{name}.service}
%{service_del_postun %{name}.socket}

%endif

%changelog
openSUSE Build Service is sponsored by