%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} Name: armstrong Version: 0.2.6 Release: 11%{?dist} Summary: Powerful music sequencing library Group: System Environment/Libraries # src/plugins/Geonik is GPL+ # src/plugins/fft is BSD # src/plugins/btdsys_ringmod is BSD # src/plugins/firesledge_parameq is LGPLv2+ # src/plugins/zzub_stream/resampler is LGPLv2+ # src/plugins/bigyo_frequencyshifter is LGPLv2+ # src/plugins/buzz2zzub is LGPLv2+ and GPLv2+ # src/plugins/graue_softsat is Public Domain # src/plugins/zzub_stream is LGPLv2+ # The core part of the library is LGPLv2+ # The rest is GPL+ or GPLv2+ License: GPLv2+ and GPL+ and BSD and LGPLv2+ URL: http://code.google.com/p/armstrong/ # The original source tarball # http://armstrong.googlecode.com/files/armstrong-0.2.6.tar.gz # contains libmad, which is a MP3 decoder/encoder, that cannot be # included in Fedora because it is patent encumbered. We remove # src/libmad # src/plugins/zzub_stream/stream_mp3.* # from the tarball and remove the MP3 related bits from # src/libzzub/import.h # src/libzzub/player.cpp # src/plugins/zzub_stream/main.h # src/plugins/zzub_stream/SConscript # and we also remove a directory that has some proprietary code # src/rtaudio/include # to produce the following file: Source0: %{name}-%{version}-fe.tar.gz # Fix build issues (optflags, drop sse optimizations). Also # disable compilation of ccmplayer, which is not ready for # this release # Since these (except the last one) are Fedora-specific, and ccmplayer # non-compilation is very obivous, they are not sent upstream. Patch0: armstrong-buildfix.patch # armstrong comes with bunch of libraries built in statically # we modify the sources to link to system libraries # http://bitbucket.org/paniq/armstrong/issue/6/link-armstrong-to-internal-libraries Patch1: armstrong-use-system-libs.patch # Fix gcc-4.4 issues # http://bitbucket.org/paniq/armstrong/issue/7/build-with-gcc-44 Patch2: armstrong-gcc44.patch # Fix size_t issues for 64bit systems and maybe others # http://bitbucket.org/paniq/armstrong/issue/8/size_t-issue Patch3: armstrong-size_t.patch # Build shared libraries with proper sonames # http://bitbucket.org/paniq/armstrong/issue/9/build-libraries-with-sonames Patch4: armstrong-sonamefix.patch # Add 64bit plugin paths # http://bitbucket.org/paniq/armstrong/issue/11/64bit-plugin-paths Patch5: armstrong-64bit.patch # Support multiple instances of DSSI plugins that require run_multiple_synths() # http://bitbucket.org/paniq/armstrong/changeset/bcb8dd70b78f/ Patch6: armstrong-bcb8dd70b78f.diff # Resolve undefined symbols # http://bitbucket.org/paniq/armstrong/issue/12/undefined-symbols Patch7: armstrong-define-symbols.patch # Resolve a conflict in the namespace against new boost # http://bitbucket.org/paniq/armstrong/issue/17/trunk-fails-to-build-w-boost-graph-140 Patch8: armstrong-conflict-namespace.patch # Repair lunar support # http://bitbucket.org/paniq/armstrong/issue/15/lunar-does-not-work Patch9: armstrong.git-0625ca6e4a4ebf9b6182334f027ed9d79734e28b.patch # More lunar fixes. From upstream trunk. Fixes RHBZ#508779 # http://bitbucket.org/paniq/armstrong/changeset/57a562c38b47/ Patch10: armstrong-57a562c38b47.diff # superfm fix # http://www.bitbucket.org/paniq/armstrong/changeset/29f9f6e28626 Patch11: armstrong-29f9f6e28626.diff # new lunar note plugin # http://www.bitbucket.org/paniq/armstrong/changeset/a8789ff6ae37 Patch12: armstrong-a8789ff6ae37.diff BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: alsa-lib-devel BuildRequires: boost-devel BuildRequires: dssi-devel BuildRequires: doxygen epydoc BuildRequires: fftw-devel BuildRequires: flac-devel BuildRequires: jack-audio-connection-kit-devel BuildRequires: ladspa-devel BuildRequires: libsamplerate-devel BuildRequires: libsndfile-devel BuildRequires: minizip-devel BuildRequires: portaudio-devel BuildRequires: portmidi-devel BuildRequires: python-setuptools-devel BuildRequires: rtaudio-devel BuildRequires: rubberband-devel BuildRequires: scons BuildRequires: zlib-devel Obsoletes: libzzub <= 0.2.5 Provides: libzzub = %{version}-%{release} %description If you are searching for a foundation for your next soundtracker, armstrong is what you want. armstrong provides an extensible DSP plugin system, a wavetable, instruments, a multitrack sequencer and support for major soundcard APIs. armstrong includes zzub and lunar libraries. %package devel Summary: Development files for %{name} Group: Development/Libraries License: GPLv2+ Requires: %{name} = %{version}-%{release} Obsoletes: libzzub-devel <= 0.2.5 Provides: libzzub-devel = %{version}-%{release} %description devel The %{name}-devel package contains libraries and header files for developing applications and plugins that use %{name}. %package -n pyzzub Summary: Python Bindings For libzzub Group: System Environment/Libraries License: GPLv2+ BuildArch: noarch Obsoletes: pyzzub < 0.2.6-9 Requires: %{name} = %{version}-%{release} %description -n pyzzub These are the Python bindings for armstrong, allowing you to use it from within Python scripts. %prep %setup -q -n %{name} %patch0 -p1 -b .buildfix %patch1 -p1 -b .internallibs %patch2 -p1 -b .gcc44 %patch3 -p1 -b .size_t %patch4 -p1 -b .soname %patch5 -p1 -b .64bit %patch6 -p1 -b .multidssi %patch7 -p1 -b .symbols %patch8 -p1 -b .conflict %patch9 -p1 -b .lunarrepair %patch10 -p1 -b .lunarstacksmashing %patch11 -p1 -b .superfm %patch12 -p1 -b .lunarnote # To build against portmidi >=184 %if 0%{fedora} > 12 sed -i '/porttime/d' src/libzzub/SConscript %endif # Remove the binded libraries. We'll use the system-wide ones pushd src rm -fr libsndfile flac rubberband zlib bmp-ccm \ portmidi portaudio rtaudio minizip popd rm -f include/{dssi,ladspa}.h # Remove the precompiled binaries for ext in aps bc dll exe lib ncb zip; do find . -name "*.$ext" | xargs rm -f -- || : done # There are many source files with wrong permissions and EOL encodings. Fix these pushd src/plugins for ext in cpp h hpp; do find . -name "*.$ext" \ -exec chmod 0644 '{}' \; \ -exec sed -i "s|\r||" '{}' \; done popd # Fix the encoding issues with text files for ext in txt ini; do for file in $(find . -name "*.$ext"); do sed 's|\r||' $file > tmpfile iconv --from-code=ISO-8859-1 --to-code=UTF-8 tmpfile > tmpfile2 touch -r $file tmpfile2 mv -f tmpfile2 $file done done %build scons configure \ PREFIX=%{_prefix} \ LIBDIR=/%{_lib} \ optflags="%{optflags}" \ %ifarch %{ix86} SSE="true" \ %endif %ifarch x86_64 ia64 SSE2="true" \ %endif MP3="False" scons %{?_smp_mflags} # Build the documentation: # (REMINDER: There is an incomplete docbook documentation that we might want # to replace with the doxygen documentation in a future release) pushd share/doc ./make_pyzzub_doc mv pyzzub html doxygen libzzub.dox doxygen libzzub-cpp.dox doxygen libzzub-plugin.dox popd %install rm -rf $RPM_BUILD_ROOT scons install DESTDIR=$RPM_BUILD_ROOT # signature.h differs per build host, circumvent multiarch conflicts mv $RPM_BUILD_ROOT%{_includedir}/zzub/signature.h \ %ifarch x86_64 ppc64 $RPM_BUILD_ROOT%{_includedir}/zzub/signature-64.h %else $RPM_BUILD_ROOT%{_includedir}/zzub/signature-32.h %endif cat > $RPM_BUILD_ROOT%{_includedir}/zzub/signature.h << EOF #include <bits/wordsize.h> #if __WORDSIZE == 32 #include "signature-32.h" #elseif __WORDSIZE == 64 #include "signature-64.h" #else #error "Unknown word size" #endif EOF # We want to install docs to the proper location: mkdir -p installed_docs mv $RPM_BUILD_ROOT%{_docdir}/zzub/* installed_docs/ # Collect the doc files scattered around the source tree: cp -a CREDITS.txt ChangeLog LICENCE installed_docs/ cp -a share/zzub installed_docs/ mkdir -p installed_docs/plugins/lad2zzub cp -a src/plugins/lad2zzub/gpl.txt installed_docs/plugins/lad2zzub/ mkdir -p installed_docs/plugins/Geonik cp -a src/plugins/Geonik/readme.txt installed_docs/plugins/Geonik/ mkdir -p installed_docs/plugins/buzz2zzub cp -a src/plugins/buzz2zzub/buzz2zzub.ini installed_docs/plugins/buzz2zzub mkdir -p installed_docs/plugins/jmmcd_Note_Pool cp -a src/plugins/jmmcd_Note_Pool/{index.html,note-pool-test.ccm} installed_docs/plugins/jmmcd_Note_Pool mkdir -p installed_docs/plugins/Intoxicat_ACloud cp -a src/plugins/Intoxicat_ACloud/Intoxicat\ ACloud.htm installed_docs/plugins/Intoxicat_ACloud mkdir -p installed_docs/plugins/fft cp -a src/plugins/fft/{test/tailscrap.m,CHANGELOG,COPYING,TIPS,README} installed_docs/plugins/fft mkdir -p installed_docs/plugins/MadBrain_Dynamite6 cp -a src/plugins/MadBrain_Dynamite6/MadBrains_Dynamite6*.{bmx,prs} installed_docs/plugins/MadBrain_Dynamite6 mkdir -p installed_docs/plugins/CyanPhase_DTMF-1 cp -a src/plugins/CyanPhase_DTMF-1/CyanPhase_DTMF-1.{txt,bmx} installed_docs/plugins/CyanPhase_DTMF-1 cp -a src/plugins/firesledge_parameq/license.txt installed_docs/plugins/firesledge_parameq mkdir -p installed_docs/plugins/fsm_infector/ cp -a src/plugins/fsm_infector/todo.txt installed_docs/plugins/fsm_infector/ mkdir -p installed_docs/plugins/psy2zzub cp -a src/plugins/psy2zzub/gpl.txt installed_docs/plugins/psy2zzub mkdir -p installed_docs/plugins/matilde_tracker cp -a src/plugins/matilde_tracker/Matilde\ Tracker.html installed_docs/plugins/matilde_tracker mkdir -p installed_docs/plugins/zzub_stream/resampler cp -a src/plugins/zzub_stream/resampler/{license,readme}.txt installed_docs/plugins/zzub_stream/resampler mkdir -p installed_docs/plugins/dssidapter cp -a src/plugins/dssidapter/README.txt installed_docs/plugins/dssidapter mkdir -p installed_docs/plugins/zzub_module cp -a src/plugins/zzub_module/libmodfile/readme.txt installed_docs/plugins/zzub_module cp -a src/plugins/green_milk/{about_te.bin,LICENSE} installed_docs/plugins/green_milk mkdir -p installed_docs/plugins/Elenzil_Modulator cp -a src/plugins/Elenzil_Modulator/elenziltest.bmx installed_docs/plugins/Elenzil_Modulator # Remove the shebang from the python library sed -i '\|^#!/usr/bin/env python|d' $RPM_BUILD_ROOT%{python_sitelib}/zzub/__init__.py # Install the python egg properly pushd src/pyzzub python -c 'import setuptools; execfile("setup.py")' install --skip-build --root $RPM_BUILD_ROOT popd %clean rm -rf $RPM_BUILD_ROOT %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %defattr(-,root,root,-) %doc installed_docs/* %{_libdir}/*.so.* %{_libdir}/zzub %{_libdir}/lunar %files devel %defattr(-,root,root,-) %doc share/doc/zzub/api* %{_includedir}/* %{_libdir}/*.so %files -n pyzzub %defattr(-,root,root,-) %doc src/pyzzub/testzzub.py share/doc/html %{python_sitelib}/* %changelog * Fri Mar 05 2010 Orcan Ogetbil <oget [DOT] fedora [AT] gmail [DOT] com> 0.2.6-11 - Fix stack smashing in 32 bit systems RHBZ#508779 - More lunar fixes - Superfm fix - New lunar note plugin * Sat Feb 13 2010 Orcan Ogetbil <oget [DOT] fedora [AT] gmail [DOT] com> 0.2.6-10 - Link against rtaudio-4.0.7 - Repair lunar support * Sat Jan 30 2010 Orcan Ogetbil <oget [DOT] fedora [AT] gmail [DOT] com> 0.2.6-9 - Rebuild against portmidi-200 (on F-13+) - Make the pyzzub package noarch * Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.2.6-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild * Sat Jun 06 2009 Orcan Ogetbil <oget [DOT] fedora [AT] gmail [DOT] com> 0.2.6-7 - Fix plugin loading error on 64bit systems - Build against system ladspa and dssi - Build against new rtaudio (4.0.6) - Backport multiple dssi instances fix patch - Fix undefined symbols * Sun May 10 2009 Orcan Ogetbil <oget [DOT] fedora [AT] gmail [DOT] com> 0.2.6-6 - Rebuild * Sun May 10 2009 Orcan Ogetbil <oget [DOT] fedora [AT] gmail [DOT] com> 0.2.6-5 - Rebuild against new boost (on F-12) - Re-enable sse optimizations on supported architectures * Thu Mar 05 2009 Orcan Ogetbil <oget [DOT] fedora [AT] gmail [DOT] com> 0.2.6-4 - Update the size_t patch to fix compilation on ppc64 - Remove some proprietary code from the tarball (src/rtaudio/include) * Sat Feb 28 2009 Orcan Ogetbil <oget [DOT] fedora [AT] gmail [DOT] com> 0.2.6-3 - License for -devel and pyzzub packages is GPLv2+ - Clarify system-wide library usage - Fix sonames - Don't package the empty directory %%_defaultdocdir/zzub * Fri Feb 27 2009 Orcan Ogetbil <oget [DOT] fedora [AT] gmail [DOT] com> 0.2.6-2 - BR: rtaudio-static instead of rtaudio-devel * Fri Feb 27 2009 Orcan Ogetbil <oget [DOT] fedora [AT] gmail [DOT] com> 0.2.6-1 - name changed from libzzub to armstrong - update to 0.2.6 * Wed Jan 7 2009 Caolán McNamara <caolanm@redhat.com> - 0.2.3-14 - defuzz patches and extend buildfix to get building again * Sat Nov 29 2008 Ignacio Vazquez-Abrams <ivazqueznet+rpm@gmail.com> - 0.2.3-13 - Rebuild for Python 2.6 * Sun Mar 2 2008 Alexander Kahl <akahl@iconmobile.com> - 0.2.3-12 - patch for missing explicit gcc 4.3 includes - pyzzub %%files also seizes the python egg now * Mon Feb 18 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 0.2.3-11 - Autorebuild for GCC 4.3 * Tue Nov 20 2007 Alexander Kahl <akahl@iconmobile.com> - 0.2.3-10 - updated buildfix patch to drop explicit sse optimizations - removed JOBS option again since scons supports -j build option * Thu Oct 25 2007 Alexander Kahl <akahl@iconmobile.com> - 0.2.3-9 - fixed multiarch conflict * Thu Sep 20 2007 Alexander Kahl <akahl@iconmobile.com> - 0.2.3-8 - included patch to install missing documentation to the right place - removed move macro instead - moved all plugin files *.{cpp,h,xml} back to get the lunar plugin loading right * Mon Sep 17 2007 Alexander Kahl <akahl@iconmobile.com> - 0.2.3-7 - re-added pyzzub python-devel build requirement - explicitly nailed the name of pyzzub * Mon Sep 17 2007 Alexander Kahl <akahl@iconmobile.com> - 0.2.3-6 - added pyzzub as an internal extra package * Thu Sep 13 2007 Alexander Kahl <akahl@iconmobile.com> - 0.2.3-5 - removed redundant explicit flac requirement * Mon Sep 10 2007 Alexander Kahl <akahl@iconmobile.com> - 0.2.3-4 - fixed double source definition - adapted modified source tarball w/ mp3 support removed - added patch to use internal flac support - removed INSTALL from %%doc - removed explicit python requirement - replaced static rm commands with macros * Mon Sep 10 2007 Alexander Kahl <akahl@iconmobile.com> - 0.2.3-3 - fixed redundant dependencies - replaced occurence of /usr with prefix macro - removed manual stripping of binaries - fixed directory ownership issue - fixed encoding of CREDITS file - excluded arch ppc64 due to build failure - replaced all space occurences with tabs * Mon Sep 3 2007 Alexander Kahl <akahl@iconmobile.com> - 0.2.3-2 - added flag to remove mp3 support * Sun Sep 2 2007 Alexander Kahl <akahl@iconmobile.com> - 0.2.3-1 - initial release