# Work around broken RPATHs for now
# https://fedoraproject.org/wiki/Changes/Broken_RPATH_will_fail_rpmbuild
%global __brp_check_rpaths %{nil}

%global _privatelibs lib-string-utils.so.*|lib-strings.so.*|lib-utility.so.*
%global __provides_exclude ^(%{_privatelibs})$
%global __requires_exclude ^(%{_privatelibs})$

# Vendored libnyquist
# https://codeberg.org/tenacityteam/tenacity/issues/315
%global nyquist_commit 3678ee6bfff9e0edc721a1b8865ab625e40f9ce4
%global nyquist_shortcommit %(c=%{nyquist_commit}; echo ${c:0:10})

Name:          tenacity
Version:       1.3.3
Release:       1%{?dist}
Summary:       Multitrack audio editor
License:       GPL-2.0-only
URL:           https://codeberg.org/tenacityteam/tenacity
Source0:       https://codeberg.org/tenacityteam/tenacity/archive/%{name}-v%{version}.tar.gz
Source1:       https://codeberg.org/tenacityteam/libnyquist/archive/%{nyquist_shortcommit}.tar.gz#/libnyquist-%{nyquist_shortcommit}.tar.gz
ExcludeArch:   s390x
BuildRequires: cmake
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: git
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(expat)
BuildRequires: pkgconfig(flac)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(id3tag)
BuildRequires: lame-devel
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavdevice)
BuildRequires: pkgconfig(libavfilter)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libavutil)
BuildRequires: pkgconfig(libmatroska)
BuildRequires: pkgconfig(libpostproc)
BuildRequires: pkgconfig(libswresample)
BuildRequires: pkgconfig(libswscale)
BuildRequires: pkgconfig(lilv-0)
BuildRequires: pkgconfig(lv2)
BuildRequires: pkgconfig(mad)
BuildRequires: pkgconfig(ogg)
BuildRequires: pkgconfig(portaudio-2.0) >= 19-16
BuildRequires: portmidi-devel
BuildRequires: pkgconfig(portSMF)
BuildRequires: pkgconfig(sndfile)
BuildRequires: pkgconfig(soundtouch)
BuildRequires: pkgconfig(soxr)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(suil-0)
BuildRequires: pkgconfig(taglib)
BuildRequires: pkgconfig(twolame)
BuildRequires: pkgconfig(vamp) >= 2.0
BuildRequires: pkgconfig(vorbis)
BuildRequires: wxGTK-devel >= 3.1.0
BuildRequires: pkgconfig(zlib)

# For new symbols in portaudio
Requires:      portaudio%{?_isa} >= 19-16

# Bundled libnyquist
Provides:      bundled(liblibnyquist)


%description
Tenacity is a cross-platform multitrack audio editor. It allows you to
record sounds directly or to import files in various formats. It features
a few simple effects, all of the editing features you should need, and
unlimited undo. The GUI was built with wxWidgets and the audio I/O
supports PulseAudio, OSS and ALSA under Linux.


%prep
%autosetup -b 1 -n libnyquist
%autosetup -b 0 -n tenacity


%build
cp -r ../libnyquist/* lib-src/libnyquist
%cmake
%cmake_build


%install
%cmake_install

%{find_lang} %{name}

mkdir %{buildroot}%{_datadir}/doc/%{name}/nyquist
cp -pr lib-src/libnyquist/nyquist/license.txt %{buildroot}%{_datadir}/doc/%{name}/nyquist
cp -pr lib-src/libnyquist/nyquist/Readme.txt %{buildroot}%{_datadir}/doc/%{name}/nyquist

# https://codeberg.org/tenacityteam/tenacity/issues/358
rm %{buildroot}%{_prefix}/%{name}


%files -f %{name}.lang
%license LICENSE.txt
%{_bindir}/%{name}
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/lib-*
%{_libdir}/liblibnyquist.so
%dir %{_libdir}/%{name}/modules
%{_libdir}/%{name}/modules/*
%{_datadir}/applications/%{name}.desktop
%{_datadir}/metainfo/%{name}.metainfo.xml
%{_datadir}/pixmaps/gnome-mime-application-x-audacity-project.xpm
%{_datadir}/pixmaps/%{name}.xpm
%{_datadir}/pixmaps/%{name}16.xpm
%{_datadir}/pixmaps/%{name}32.xpm
%{_datadir}/mime/packages/%{name}.xml
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/EQDefaultCurves.xml
%dir %{_datadir}/%{name}/nyquist
%{_datadir}/%{name}/nyquist/*
%dir %{_datadir}/%{name}/plug-ins
%{_datadir}/%{name}/plug-ins/*
%{_datadir}/icons/hicolor/16x16/%{name}.png
%{_datadir}/icons/hicolor/22x22/%{name}.png
%{_datadir}/icons/hicolor/24x24/%{name}.png
%{_datadir}/icons/hicolor/32x32/%{name}.png
%{_datadir}/icons/hicolor/48x48/%{name}.png
%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
%{_datadir}/doc/%{name}
%{_mandir}/man1/%{name}.1.gz


%changelog
* Thu Sep 5 2024 Brandon Nielsen <nielsenb@jetfuse.net> - 1.3.3-1
- Update to 1.3.3
- Remove ffmpeg conditional

* Tue Sep 19 2023 Brandon Nielsen <nielsenb@jetfuse.net> - 1.3.1-2
- Add PortSMF dependency

* Mon Sep 18 2023 Brandon Nielsen <nielsenb@jetfuse.net> - 1.3.1-1
- Update to 1.3.1
- Change to SPDX license identifier

* Tue Feb 21 2023 Brandon Nielsen <nielsenb@jetfuse.net> - 1.3-beta2-5
- Fix builds on F38+

* Mon Feb 20 2023 Brandon Nielsen <nielsenb@jetfuse.net> - 1.3-beta2-4
- Manually copy liblibnyquist and note that it is bundled
- Cleanup leftover audacity in usr

* Wed Feb 8 2023 Brandon Nielsen <nielsenb@jetfuse.net> - 1.3-beta2-3
- Remove bundled liblibnyquist, a dependency is required instead

* Wed Feb 8 2023 Brandon Nielsen <nielsenb@jetfuse.net> - 1.3-beta2-2
- Add bundled liblibnyquist

* Mon Feb 6 2023 Brandon Nielsen <nielsenb@jetfuse.net> - 1.3-beta2-1
- Update to 1.3-beta2
- Switch upstream to Codeberg
- Drop forge macros since they don't support codeberg

* Sun Feb 27 2022 Brandon Nielsen <nielsenb@jetfuse.net> - 0-1.20220227gitd7ecf07
- Update to d7ecf07 git revision

* Fri Oct 8 2021 Brandon Nielsen <nielsenb@jetfuse.net> - 0-1.20211008git4df39ad
- Initial specfile