Name: linuxsampler Version: 2.4.1 Release: 1%{?dist} Summary: Modular, open-source audio sampler License: GPL-2.0-or-later URL: https://www.linuxsampler.org Source0: https://download.linuxsampler.org/packages/%{name}-%{version}.tar.bz2 BuildRequires: gcc-c++ BuildRequires: make BuildRequires: pkgconfig BuildRequires: libgig-devel BuildRequires: libsndfile-devel BuildRequires: alsa-lib-devel BuildRequires: pkgconfig(jack) BuildRequires: uuid-devel BuildRequires: sqlite-devel BuildRequires: readline-devel BuildRequires: ncurses-devel BuildRequires: doxygen Recommends: pipewire-jack-audio-connection-kit Requires: libgig Requires: libsndfile %description LinuxSampler is a modular, open-source audio sampler designed for streaming large instrument libraries. It supports Gigasampler, DLS, and SoundFont2 formats via libgig, and provides ALSA and JACK drivers for low-latency playback. %prep %autosetup -n %{name}-%{version} # --- Hotfix for generated lscp_shell_reference.cpp missing the array declaration under rpmbuild --- # If the file starts its table with '{ "SUBSCRIBE BUFFER_FILL",' but lacks the declaration line, # inject it. This is idempotent and only touches the file when the declaration is absent. if grep -q '^{ *"SUBSCRIBE BUFFER_FILL"' src/network/lscp_shell_reference.cpp 2>/dev/null && \ ! grep -q 'lscp_ref_entry_t[[:space:]]\+lscp_reference\[.*\]=' src/network/lscp_shell_reference.cpp 2>/dev/null; then sed -i '1i static lscp_ref_entry_t lscp_reference[] =' src/network/lscp_shell_reference.cpp # Ensure the file ends with a semicolon after the closing brace # (some generators emit just "};", others already do; make this safe) tail -n1 src/network/lscp_shell_reference.cpp | grep -q '};' || echo '};' >> src/network/lscp_shell_reference.cpp fi %build export HAVE_UNIX98=1 export LDFLAGS="$LDFLAGS -L/usr/lib64" %configure %make_build -j4 %install %make_install # Rename lscp binary to avoid conflict with nilfs-utils if [ -f %{buildroot}%{_bindir}/lscp ]; then mv %{buildroot}%{_bindir}/lscp %{buildroot}%{_bindir}/linuxsampler-lscp fi # Rename the man page accordingly if ls %{buildroot}%{_mandir}/man1/lscp.1* >/dev/null 2>&1; then for f in %{buildroot}%{_mandir}/man1/lscp.1*; do mv "$f" "$(dirname "$f")/linuxsampler-lscp.1.gz" done fi # Fedora guidelines: remove libtool archives find %{buildroot} -name "*.la" -delete %post # Create a top-level symlink to linuxsampler.so.8.0.0 for compatibility if [ -f /usr/lib64/linuxsampler/liblinuxsampler.so.8.0.0 ]; then ln -sf linuxsampler/liblinuxsampler.so.8.0.0 /usr/lib64/liblinuxsampler.so.8 echo "Created symlink: /usr/lib64/liblinuxsampler.so.8 -> linuxsampler/liblinuxsampler.so.8.0.0" else echo "liblinuxsampler.so.8.0.0 not found under /usr/lib64/linuxsampler/" fi %check # Runs make check if defined, otherwise skips %{?__make} check || : %files %license COPYING %doc AUTHORS ChangeLog README %{_bindir}/linuxsampler %{_bindir}/ls_instr_script %{_bindir}/linuxsampler-lscp %{_libdir}/linuxsampler/*.so* %{_libdir}/lv2/linuxsampler.lv2/* %{_libdir}/dssi/linuxsampler.so %{_libdir}/dssi/linuxsampler.a %dir %{_libdir}/linuxsampler %dir %{_libdir}/lv2 %dir %{_libdir}/lv2/linuxsampler.lv2 %{_mandir}/man1/linuxsampler-lscp.1* %{_mandir}/man1/linuxsampler.1* %dir /var/lib/linuxsampler /var/lib/linuxsampler/instruments.db %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %description devel Development headers and pkg-config files for %{name}, required for applications such as QSampler or gigedit. %files devel %{_includedir}/linuxsampler/* %{_libdir}/pkgconfig/linuxsampler.pc %{_libdir}/linuxsampler/*.a %{_libdir}/lv2/linuxsampler.lv2/*.a %changelog * Fri Nov 07 2025 Jim Hines - 2.4.1-1 - Modernized for Fedora 41 (Autotools build) - Added devel subpackage for QSampler and gigedit builds - Renamed lscp binary and manpage to linuxsampler-lscp to avoid conflict with nilfs-utils