%global openEuler 1
%global _metainfodir %{_datadir}/metainfo

%bcond_without  ffmpeg
%bcond_with     local_ffmpeg

%global __requires_exclude ^lib-.*.so
%global __provides_exclude ^lib-.*.so

Name: audacity
Version: 3.7.8
Release: 1
Summary: Multitrack audio editor
License: GPL-2.0-or-later AND GPL-3.0-only AND CC-BY-3.0
URL:     https://www.audacityteam.org/

Source0: https://github.com/audacity/audacity/releases/download/Audacity-%{version}/%{name}-sources-%{version}.tar.gz
Source1: https://github.com/audacity/audacity-manual/releases/download/v%{version}/%{name}-manual-%{version}.tar.gz

BuildRequires: cmake
BuildRequires: gettext-devel
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: chrpath
BuildRequires: alsa-lib-devel
BuildRequires: desktop-file-utils
BuildRequires: expat-devel
BuildRequires: flac-devel
BuildRequires: git
BuildRequires: jack-audio-connection-kit-devel
BuildRequires: ladspa-devel
BuildRequires: lame-devel
BuildRequires: libid3tag-devel
BuildRequires: libmpg123-devel
BuildRequires: taglib-devel
BuildRequires: twolame-devel
BuildRequires: libogg-devel
BuildRequires: libsndfile-devel
BuildRequires: libvorbis-devel
BuildRequires: libuuid-devel
BuildRequires: portaudio-devel
BuildRequires: portmidi-devel
BuildRequires: soundtouch-devel
BuildRequires: soxr-devel
BuildRequires: sqlite-devel >= 3.32
#BuildRequires: vamp-plugin-sdk-devel >= 2.0
BuildRequires: vamp-plugin-sdk-devel
BuildRequires: wavpack-devel
BuildRequires: zip
BuildRequires: zlib-devel
BuildRequires: python3
BuildRequires: rapidjson-devel
BuildRequires: opusfile-devel
BuildRequires: wxWidgets-devel
BuildRequires: libjpeg-turbo
BuildRequires: libjpeg-turbo-devel
BuildRequires: turbojpeg
BuildRequires: turbojpeg-devel
BuildRequires: gettext
BuildRequires: gettext-devel

%if %{with ffmpeg}
%if ! %{with local_ffmpeg}
BuildRequires: ffmpeg-devel
%endif
%endif

BuildRequires: lv2 >= 1.18.6
BuildRequires: lilv-devel >= 0.24.6
BuildRequires: serd-devel >= 0.30.2
BuildRequires: sord-devel >= 0.16.4
BuildRequires: sratom-devel >= 0.6.4
BuildRequires: suil-devel >= 0.10.6

Requires:      portaudio%{?_isa}
Requires:      xorg-x11-server-Xwayland
Requires:      suil
Requires:      portmidi
Requires:      turbojpeg

ExcludeArch: %{ix86} s390x

%description
Audacity 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.

%package manual
Summary: Manual for Audacity - Offline Install
BuildArch: noarch
Requires: /usr/bin/audacity

%description manual
Audacity Manual can be installed locally if preferred, or accessed on-line
if internet connection is available.
For the most up to date manual content, use the on-line manual.

%prep
%setup -q -n %{name}-sources-%{version}
sed -i -e 's|%hs|%s|g' locale/*.po

%build
export CFLAGS="$CFLAGS -std=gnu17 -fPIE"
export CXXFLAGS="$CXXFLAGS -fPIE"

%cmake .. \
    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
    -DwxWidgets_CONFIG_EXECUTABLE="$(which wx-config)" \
    -DCMAKE_C_FLAGS="$CFLAGS" \
    -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
    -DAUDACITY_BUILD_LEVEL:STRING=2 \
    -Daudacity_conan_enabled=Off \
    -Daudacity_has_networking=Off \
    -Daudacity_has_crashreports=Off \
    -Daudacity_has_updates_check=Off \
    -Daudacity_has_sentry_reporting=Off \
    -Daudacity_has_vst3=Off \
    -Daudacity_lib_preference=system \
    -Daudacity_obey_system_dependencies=On \
    -Daudacity_use_wxwidgets=system \
    -Daudacity_use_uuid=system \
    -Daudacity_use_sqlite=system \
    -Daudacity_use_libsndfile=system \
    -Daudacity_use_soxr=system \
    -Daudacity_use_lame=system \
    -Daudacity_use_twolame=system \
    -Daudacity_use_libflac=system \
    -Daudacity_use_ladspa=on \
    -Daudacity_use_libvorbis=system \
    -Daudacity_use_libid3tag=system \
    -Daudacity_use_expat=system \
    -Daudacity_use_soundtouch=system \
    -Daudacity_use_vamp=system \
    -Daudacity_use_lv2=system \
    -Daudacity_use_portaudio=system \
    -Daudacity_use_midi=system \
    -Daudacity_use_libogg=system \
%if %{with ffmpeg}
%if ! %{with local_ffmpeg}
    -Daudacity_use_ffmpeg=loaded \
%endif
%else
    -Daudacity_use_ffmpeg=off \
%endif
    -Daudacity_use_portsmf=local \
    -Daudacity_use_sbsms=local \
    -Daudacity_use_wavpack=system 

%cmake_build

%install
%cmake_install

rm -Rf %{buildroot}%{_datadir}/%{name}/include
rm -Rf %{buildroot}%{_bindir}/../%{name}

pushd %{buildroot}%{_libdir}/%{name}
for libFile in *;
do
    if [[ ! -d $libFile ]];
    then
        chrpath --delete $libFile
        chmod 755 $libFile
    fi
done
popd

pushd %{buildroot}%{_libdir}/%{name}/modules
for libFile in *;
do
    if [[ ! -d $libFile ]];
    then
        chrpath --delete $libFile
        chmod 755 $libFile
    fi
done
popd

pushd %{buildroot}%{_datadir}/%{name}
gzip -dc %{SOURCE1} | tar -xvvf -
mv help/manual/* .
rmdir -p help/manual
popd

pushd %{_builddir}/%{name}-sources-%{version}/locale
for po in *.po; do
    lang=${po%.po}
    install -d %{buildroot}%{_datadir}/locale/$lang/LC_MESSAGES
    msgfmt "$po" -o %{buildroot}%{_datadir}/locale/$lang/LC_MESSAGES/audacity.mo
done
popd

pushd %{_builddir}/%{name}-sources-%{version}
%{find_lang} %{name} || touch %{name}.lang
popd

desktop-file-install --dir %{buildroot}%{_datadir}/applications \
        %{buildroot}%{_datadir}/applications/audacity.desktop

pushd %{_builddir}/%{name}-sources-%{version}

mkdir -p %{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
rm -f %{buildroot}%{_datadir}/doc/%{name}/LICENSE.txt

%files -f %{name}.lang
%{_bindir}/%{name}
%{_libdir}/%{name}
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/EffectsMenuDefaults.xml
%{_datadir}/%{name}/nyquist/
%{_datadir}/%{name}/plug-ins/
%exclude %{_datadir}/%{name}/favicon.ico
%exclude %{_datadir}/%{name}/index.html
%exclude %{_datadir}/%{name}/quick_help.html
%exclude %{_datadir}/%{name}/man/
%exclude %{_datadir}/%{name}/m/
%{_mandir}/man*/*
%{_metainfodir}/%{name}.appdata.xml
%{_datadir}/applications/*
%{_datadir}/pixmaps/*
%{_datadir}/icons/hicolor/*/%{name}.png
%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
%{_datadir}/mime/packages/*
%{_datadir}/doc/%{name}
%license LICENSE.txt

%files manual
%{_datadir}/%{name}/favicon.ico
%{_datadir}/%{name}/index.html
%{_datadir}/%{name}/quick_help.html
%{_datadir}/%{name}/man/
%{_datadir}/%{name}/m/

%changelog
* Thu Jul 16 2026 liweigang <liweiganga@gmail.com> - 3.7.8-1
- Bump to version 3.7.8

* Sun Sep 28 2025 Wenyu Zhu <iewyzhu@163.com> - 3.7.4-1
- Initial openEuler RPM packaging of audacity 3.7.4