File ctune.spec of Package ctune

#
# spec file for package ctune
#
# Copyright (c) 2025 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/
#


Name:           ctune
Version:        @SERVICE@
Release:        0
Summary:        NCurses internet radio player for Linux
License:        AGPL-3.0-or-later
Group:          Productivity/Multimedia/Sound/Players
URL:            https://github.com/An7ar35/ctune
Source0:        %{name}-%{version}.tar.xz
Patch0:         disable_git_clone_json-c.patch
BuildRequires:  cmake
BuildRequires:  gcc-c++
BuildRequires:  hicolor-icon-theme
BuildRequires:  ninja
BuildRequires:  pandoc
BuildRequires:  pkgconfig
BuildRequires:  update-desktop-files
BuildRequires:  pkgconfig(alsa)
BuildRequires:  pkgconfig(json-c)
#uildRequires:  pkgconfig(lame)
BuildRequires:  libmp3lame-devel
BuildRequires:  pkgconfig(libavcodec)
BuildRequires:  pkgconfig(libavdevice)
BuildRequires:  pkgconfig(libavfilter)
BuildRequires:  pkgconfig(libavformat)
BuildRequires:  pkgconfig(libavutil)
BuildRequires:  pkgconfig(libbsd)
BuildRequires:  pkgconfig(libcurl)
BuildRequires:  pkgconfig(libpipewire-0.3)
BuildRequires:  pkgconfig(libpostproc)
BuildRequires:  pkgconfig(libspa-0.2)
BuildRequires:  pkgconfig(libswresample)
BuildRequires:  pkgconfig(libswscale)
BuildRequires:  pkgconfig(libpulse)
BuildRequires:  pkgconfig(libvlc)
BuildRequires:  pkgconfig(ncurses)
BuildRequires:  pkgconfig(openssl)
BuildRequires:  pkgconfig(sdl2)
#uildRequires:  pkgconfig(sndio)
BuildRequires:  sndio-devel
BuildRequires:  pkgconfig(uuid)
Requires:       %{name}-plugin-ffmpeg
Requires:       %{name}-plugin-lame
Requires:       %{name}-plugin-pulse
Suggests:       %{name}-plugin-vlc
Suggests:       %{name}-plugin-alsa
Suggests:       %{name}-plugin-pipewire
Suggests:       %{name}-plugin-sdl
Suggests:       %{name}-plugin-sndio
Suggests:       %{name}-plugin-wave

%description
cTune is a ncurses based internet radio player written in C for Linux.
Aside from playing a radio stream you can search and browse stations as
well as keep a list of favourites.
It uses the RadioBrowser API to search and get radio stream information.
Features
 * Play/search/browse radio stations using the RadioBrowser API
 * Favourite stations from search/browse results
 * Add/Edit custom local-only stations to favourites
 * Sort favourites based on name/country/bitrate/codec/source/etc...
 * Context-based help for key bindings (F1 key).
 * Plugin system for playback (demuxing/resampling) and sound output (PCM)
 * UI Themes
 * Mouse support

%package        plugin-ffmpeg
Summary:        Ffmpeg input plugin for %{name}
Requires:       %{name} = %{version}-%{release}

%description    plugin-ffmpeg
This package provides FFmpeg input support for the cTune.

%package        plugin-vlc
Summary:        VLC input plugin for %{name}
Requires:       %{name} = %{version}-%{release}

%description    plugin-vlc
This package provides VLC input support for the cTune.

%package        plugin-alsa
Summary:        ALSA output plugin for %{name}
Requires:       %{name} = %{version}-%{release}

%description    plugin-alsa
This package provides ALSA output support for the cTune.

%package        plugin-lame
Summary:        LAME MP3 encoder plugin for %{name}
Requires:       %{name} = %{version}-%{release}

%description    plugin-lame
This package provides plugin for recording currently played streams to mp3.

%package        plugin-pipewire
Summary:        PipeWire output plugin for %{name}
Requires:       %{name} = %{version}-%{release}

%description    plugin-pipewire
This package provides PipeWire output support for the cTune.

%package        plugin-pulse
Summary:        PulseAudio output plugin for %{name}
Requires:       %{name} = %{version}-%{release}

%description    plugin-pulse
This package provides PulseAudio output support for the cTune.

%package        plugin-sdl
Summary:        SDL output plugin for %{name}
Requires:       %{name} = %{version}-%{release}

%description    plugin-sdl
This package provides SDL output support for the cTune.

%package        plugin-sndio
Summary:        Sndio output plugin for %{name}
Requires:       %{name} = %{version}-%{release}

%description    plugin-sndio
Sndio is the default output for FreeBSD and is optional on Linux.
This package provides sndio output support for the cTune.

%package        plugin-wave
Summary:        WAV encoder plugin for %{name}
Requires:       %{name} = %{version}-%{release}

%description    plugin-wave
This package provides plugin for recording currently played streams to wav.

%package        plugins-all
Summary:        Installs all remaining %{name} plugins
Group:          Productivity/Multimedia/Sound/Players
Requires:       %{name} = %{version}-%{release}
Requires:       %{name}-plugin-vlc = %{version}-%{release}
Requires:       %{name}-plugin-alsa = %{version}-%{release}
Requires:       %{name}-plugin-pipewire = %{version}-%{release}
Requires:       %{name}-plugin-sdl = %{version}-%{release}
Requires:       %{name}-plugin-sndio = %{version}-%{release}
Requires:       %{name}-plugin-wave = %{version}-%{release}
BuildArch:      noarch

%description    plugins-all
This package pulls in all remaining the plugins for the cTune.

%prep
%autosetup -p1

%build
%define __builder ninja
%cmake
%cmake_build

%install
%cmake_install
install -dm 0755 %{buildroot}%{_mandir}/man1
mv %{buildroot}%{_mandir}/%{name}.1%{?ext_man} %{buildroot}%{_mandir}/man1/%{name}.1%{?ext_man}

%files
%doc README.md
%{_bindir}/%{name}
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/logger.so
%{_mandir}/man?/%{name}.?%{?ext_man}
%license LICENSE

%files plugin-ffmpeg
%dir %{_libdir}/%{name}/plugins
%dir %{_libdir}/%{name}/plugins/input
%{_libdir}/%{name}/plugins/input/ffmpeg.so

%files plugin-vlc
%dir %{_libdir}/%{name}/plugins
%dir %{_libdir}/%{name}/plugins/input
%{_libdir}/%{name}/plugins/input/vlc.so

%files plugin-alsa
%dir %{_libdir}/%{name}/plugins
%dir %{_libdir}/%{name}/plugins/output
%{_libdir}/%{name}/plugins/output/alsa.so

%files plugin-lame
%dir %{_libdir}/%{name}/plugins
%dir %{_libdir}/%{name}/plugins/output
%{_libdir}/%{name}/plugins/output/mp3lame.so

%files plugin-pipewire
%dir %{_libdir}/%{name}/plugins
%dir %{_libdir}/%{name}/plugins/output
%{_libdir}/%{name}/plugins/output/pipewire.so

%files plugin-pulse
%dir %{_libdir}/%{name}/plugins
%dir %{_libdir}/%{name}/plugins/output
%{_libdir}/%{name}/plugins/output/pulse.so

%files plugin-sdl
%dir %{_libdir}/%{name}/plugins
%dir %{_libdir}/%{name}/plugins/output
%{_libdir}/%{name}/plugins/output/sdl.so

%files plugin-sndio
%dir %{_libdir}/%{name}/plugins
%dir %{_libdir}/%{name}/plugins/output
%{_libdir}/%{name}/plugins/output/sndio.so

%files plugin-wave
%dir %{_libdir}/%{name}/plugins
%dir %{_libdir}/%{name}/plugins/output
%{_libdir}/%{name}/plugins/output/wave.so

%files plugins-all

%changelog
openSUSE Build Service is sponsored by