# Status: active
# Tag: Tracker, Jack, Alsa
# Type: Standalone
# Category: Audio, Sequencer

Name: prototracker
Version: 0.0.2
Release: 1%{?dist}
Summary: A synth tracker
License: MIT
URL: https://github.com/kometbomb/prototracker
ExclusiveArch: x86_64 aarch64

Vendor:       Audinux
Distribution: Audinux

Source0: https://github.com/kometbomb/prototracker/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
Source1: prototracker.png
Patch0: prototracker-modular-0001-move-assets-to-system-dir.patch

BuildRequires: gcc gcc-c++
BuildRequires: make
BuildRequires: SDL2-devel
BuildRequires: SDL2_image-devel
BuildRequires: alsa-lib-devel
BuildRequires: desktop-file-utils

%description
Prototracker is a multiplatform fakebit chiptune tracker. Try the online version.
The editor is a fairly normal tracker. The synth is an absolutely minimal
single-oscillator synth (with 256 preset waveforms).
Macros are used to create "instruments" and also some normal channel effects.
Most keyboard shortcuts are the same as in Protracker.
See the docs/ directory for help.

%prep
%autosetup -p1 -n %{name}-%{version}

sed -i -e "s|-static-libstdc++ -static-libgcc||g" Makefile.linux
# Add Fedora flags
sed -i -e "s|-O3|\$(CXXFLAGS)|g" Makefile.linux
# Remove stripping
sed -i -e "s|-s | |g" Makefile.linux

%build

%set_build_flags

%make_build -f Makefile.linux

%install

install -m 755 -d %{buildroot}/%{_bindir}
install -m 755 prototracker %{buildroot}/%{_bindir}/prototracker

# install assets
install -m 755 -d %{buildroot}/%{_datadir}/%{name}/
cp -ra assets doc templates %{buildroot}/%{_datadir}/%{name}/

# Write bash script to select audio driver

cat > %{buildroot}/%{_bindir}/%{name}-jack <<EOF
#!/bin/bash

SDL_AUDIODRIVER=jack prototracker
EOF
chmod a+x %{buildroot}/%{_bindir}/%{name}-jack

cat > %{buildroot}/%{_bindir}/%{name}-pulse <<EOF
#!/bin/bash

SDL_AUDIODRIVER=pulse prototracker
EOF
chmod a+x %{buildroot}/%{_bindir}/%{name}-pulse

cat > %{buildroot}/%{_bindir}/%{name}-alsa <<EOF
#!/bin/bash

SDL_AUDIODRIVER=alsa prototracker
EOF
chmod a+x %{buildroot}/%{_bindir}/%{name}-alsa

# Install icon
install -m 755 -d %{buildroot}/%{_datadir}/pixmaps/
cp %{SOURCE1} %{buildroot}/%{_datadir}/pixmaps/%{name}.png

# Write desktop files
install -m 755 -d %{buildroot}/%{_datadir}/applications/

cat > %{buildroot}%{_datadir}/applications/%{name}-jack.desktop <<EOF
[Desktop Entry]
Encoding=UTF-8
Name=%name-jack
Exec=%{name}-jack
Icon=%{name}
Comment=Prototracker tracker
Terminal=false
Type=Application
Categories=AudioVideo;Audio;Music;
EOF

cat > %{buildroot}%{_datadir}/applications/%{name}-alsa.desktop <<EOF
[Desktop Entry]
Encoding=UTF-8
Name=%name-alsa
Exec=%{name}-alsa
Icon=%{name}
Comment=Prototracker tracker
Terminal=false
Type=Application
Categories=AudioVideo;Audio;Music;
EOF

cat > %{buildroot}%{_datadir}/applications/%{name}-pulse.desktop <<EOF
[Desktop Entry]
Encoding=UTF-8
Name=%name-pulse
Exec=%{name}-pulse
Icon=%{name}
Comment=Prototracker tracker
Terminal=false
Type=Application
Categories=AudioVideo;Audio;Music;
EOF

desktop-file-install                         \
  --delete-original                          \
  --dir=%{buildroot}%{_datadir}/applications \
  %{buildroot}/%{_datadir}/applications/%{name}-jack.desktop

desktop-file-install                         \
  --delete-original                          \
  --dir=%{buildroot}%{_datadir}/applications \
  %{buildroot}/%{_datadir}/applications/%{name}-pulse.desktop

desktop-file-install                         \
  --delete-original                          \
  --dir=%{buildroot}%{_datadir}/applications \
  %{buildroot}/%{_datadir}/applications/%{name}-alsa.desktop

%check

desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}-jack.desktop
desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}-pulse.desktop
desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}-alsa.desktop

%files
%doc README.md
%license LICENSE
%{_bindir}/*
%{_datadir}/pixmaps/*
%{_datadir}/applications/*
%dir %{_datadir}/%{name}/
%{_datadir}/%{name}/*

%changelog
* Wed Feb 05 2025 Yann Collette <ycollette.nospam@free.fr> - 0.0.2-1
- initial spec file