# $Id: jack.spec.in,v 1.8 2005/01/16 21:28:42 rncbc Exp $
# set to 0 to build rpms without capabilities support
%define enable_capabilities 1
# set to 1 to enable alternate jack temporary directory
# mounted as tmpfs
%define enable_tmpdir 1
%if %{enable_tmpdir}
%define jack_tmpdir /var/lib/jack/tmp
%endif
# use port audio
%define port_audio 0
# use oss
%define oss 1
# strip binaries 
%define strip_jackd 1
# use premmption check
%define preemption_check 1


Summary:	the Jack Audio Connection Kit
Name:		jack-audio-connection-kit
Version:	0.100.0
Release:	1
License:	GPL
Group:		System Environment/Daemons
Source0:	%{name}-%{version}.tar.gz
URL:		http://jackit.sourceforge.net
BuildRoot:	 %{_tmppath}/%{name}-%{version}-root-%(id -u -n)

BuildRequires: automake >= 1.6 libsndfile-devel >= 1.0.0

%if %{port_audio}
BuildRequires: portaudio >= 18.1
%endif

%description
JACK is a low-latency audio server, written primarily for the Linux
operating system. It can connect a number of different applications to
an audio device, as well as allowing them to share audio between
themselves. Its clients can run in their own processes (ie. as a
normal application), or can they can run within a JACK server (ie. a
"plugin").

JACK is different from other audio server efforts in that it has been
designed from the ground up to be suitable for professional audio
work. This means that it focuses on two key areas: synchronous
execution of all clients, and low latency operation.

%package devel
Summary:	Header files for Jack 
Group:		Development/Libraries
Requires:	%{name} = %{version}

%description devel
Header files for the Jack Audio Connection Kit.

%package example-clients
Summary:	Example clients that use Jack 
Group:		Applications/Multimedia
Requires:	%{name} = %{version}

%description example-clients
Small example clients that use the Jack Audio Connection Kit.

%prep
%setup -q

%build
%configure      --enable-optimize \
%if %{enable_tmpdir}
                --with-default-tmpdir=%{jack_tmpdir} \
%endif
%if %{enable_capabilities}
                 --enable-capabilities \
%endif
%if %{preemption_check}
                 --enable-preemption-check \
%endif
%if ! %{port_audio}
		--disable-portaudio \
%endif
%if ! %{oss}
		--disable-oss \
%endif
%if %{strip_jackd}
                 --enable-stripped-jackd
%endif
make


%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT

%if %{enable_capabilities}
# make jackstart suid root
chmod 04755 $RPM_BUILD_ROOT%{_bindir}/jackstart
%endif

%if %{enable_tmpdir}
# create jack temporary directory
mkdir -p $RPM_BUILD_ROOT%{jack_tmpdir}
%endif

# remove extra install of the documentation
rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/*

%if %{enable_tmpdir}
%preun
if [ "$1" = "0" ] ; then
    # try to unmount the tmpfs filesystem
    umount %{jack_tmpdir} >/dev/null 2>&1
    # remove any leftover files after the mount is gone
    rm -rf %{jack_tmpdir}/* >/dev/null 2>&1
fi
%endif

%post
/sbin/ldconfig
%if %{enable_tmpdir}
# add jack temporary directory mount point to fstab
if [ -f /etc/fstab ] ; then
    if grep 'jack' /etc/fstab >/dev/null 2>&1 ; then
        if ! grep '%{jack_tmpdir}' /etc/fstab >/dev/null 2>&1 ; then
            echo
            echo "A line containing \"jack\" was found in /etc/fstab. The mount point"
            echo "does not match the one needed by this package, so the tmpfs mount line"
            echo "was not automatically added. Edit /etc/fstab (be very careful!) and"
            echo "add the following line:"
            echo "    \"none %{jack_tmpdir} tmpfs defaults 0 0\""
            echo
        fi
    else
        # add the mount point
        echo "Adding jack tmpfs entry to /etc/fstab..."
        NEWLINES=$(wc -l /etc/fstab|awk '{print $1}' 2> /dev/null)
        LINES=$(grep -c '^.*$' /etc/fstab 2> /dev/null)
        if [ $NEWLINES -lt $LINES ] ; then
            echo '' >> /etc/fstab || \
            { echo "failed to add jack tmpfs entry to /etc/fstab" 1>&2 ; exit 0 ; }
        fi
        echo 'none                    %{jack_tmpdir}       tmpfs   defaults         0 0' \
        >> /etc/fstab || \
        { echo "failed to add jack tmpfs entry to /etc/fstab" 1>&2 ; exit 0 ; }
        echo "Mounting jack tmpfs temporary directory..."
        mount %{jack_tmpdir} >/dev/null 2>&1 || \
        { echo "failed to mount jack tmpfs temporary directory" 1>&2 ; exit 0 ; }
    fi
fi
%endif

%postun
/sbin/ldconfig
%if %{enable_tmpdir}
if [ "$1" = "0" ] ; then
    if grep "%{jack_tmpdir}" /etc/fstab >/dev/null 2>&1 ; then
        echo "Deleting jack tmpfs fstab entry..."
        TMP=$(mktemp /tmp/fstab.XXXXXX)
        grep -v "%{jack_tmpdir}" /etc/fstab > $TMP
        if [ "$?" == "0" -a -f $TMP -a -s $TMP ] ; then
            cat $TMP > /etc/fstab
        else
            echo "failed to erase jack tmpfs entry from /etc/fstab"
        fi
        rm -f $TMP
    fi
fi
%endif

%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT

%files 
%defattr(-,root,root)
%doc AUTHORS TODO COPYING*
%if %{enable_capabilities}
%attr(4755, root, root) %{_bindir}/jackstart
%endif
%{_bindir}/jackd
%{_bindir}/jack_load
%{_bindir}/jack_unload
%{_bindir}/jack_bufsize
%{_bindir}/jack_freewheel
%{_bindir}/jack_transport
%{_libdir}/libjack.so
%{_libdir}/libjack.so.0
%{_libdir}/libjack.so.0.0.*
%{_libdir}/jack/inprocess.so
%{_libdir}/jack/intime.so
%{_libdir}/jack/jack_alsa.so
%{_libdir}/jack/jack_dummy.so
%if %{port_audio}
%{_libdir}/jack/jack_portaudio.so
%endif
%if %{oss}
%{_libdir}/jack/jack_oss.so
%endif
%{_mandir}/man1/*
%if %{enable_tmpdir}
%dir %{jack_tmpdir}
%attr(0777, root, root) %{jack_tmpdir}
%endif

%files devel
%defattr(-,root,root)
%doc doc/reference
%{_libdir}/libjack.la
%{_libdir}/jack/inprocess.la
%{_libdir}/jack/intime.la
%{_libdir}/jack/jack_alsa.la
%{_libdir}/jack/jack_dummy.la
%if %{port_audio}
%{_libdir}/jack/jack_portaudio.la
%endif
%if %{oss}
%{_libdir}/jack/jack_oss.la
%endif
%{_includedir}/jack/jack.h
%{_includedir}/jack/ringbuffer.h
%{_includedir}/jack/timestamps.h
%{_includedir}/jack/transport.h
%{_includedir}/jack/types.h
%{_includedir}/jack/thread.h
%{_includedir}/jack/intclient.h
%{_includedir}/jack/statistics.h
%{_libdir}/pkgconfig/jack.pc


%files example-clients
%defattr(-,root,root)
%{_bindir}/jackrec
%{_bindir}/jack_connect
%{_bindir}/jack_disconnect
%{_bindir}/jack_impulse_grabber
%{_bindir}/jack_lsp
%{_bindir}/jack_metro
%{_bindir}/jack_monitor_client
%{_bindir}/jack_showtime
%{_bindir}/jack_simple_client


%changelog

* Thu Jan  3 2005 Rui Nuno Capela <rncbc@rncbc.org> - 0.99.44-1
- add jack/statistics.h to devel package

* Thu Dec 28 2004 Rui Nuno Capela <rncbc@rncbc.org> - 0.99.41-1
- merge integration of usx2y (rawusb) driver into alsa backend
- enable preemption check feature of 2.6 RT kernels
- add jack/intclient.h to devel package
- add jack/thread.h to devel package
- moved doc/reference to devel package
- set default tmpdir to /var/lib/jack/tmp
- include oss backend driver if available

* Sat May 22 2004 Pete Bessman <ninjadroid@gazuga.net> - 0.98.1-1
- changes to accomodate jack_oss and RPM's fascist build policy

* Mon Nov 13  2003 Lawrie Abbott <lawrieabbott@iinet.net.au>      
- update based on Planet CCRMA 0.80.0 release

* Thu May 23 2002 Fernando Lopez-Lezcano <nando@ccrma.stanford.edu>
- added configuration variable to build with/without capabilities

* Tue May 21 2002 Fernando Lopez-Lezcano <nando@ccrma.stanford.edu>
- split the examples into a different package so that the base
  package does not depend on, for example, fltk. 
- disable stripping of binaries

* Mon May 13 2002 Fernando Lopez-Lezcano <nando@ccrma.stanford.edu>
- do not compress documentation, added doxygen docs directory
- changed defattr directives
- added libdir/jack*, libdir/*.a and libdir/*.so.* to files
- moved all so's to libs, jack will not start without jack_alsa.so
- merged base and libs packages

* Sat May  4 2002 Christian Fredrik Kalager Schaller <uraeus@linuxrising.org> 
- initial release of jack sound server package for GStreamer
