#
# Conditional build:
-%bcond_without dotnet # don't build mono plugin
+%bcond_without dotnet # C#/Mono binding
+%bcond_without java # Java binding
#
%ifnarch %{ix86} %{x8664} alpha arm hppa ia64 mips ppc s390 s390x sparc sparcv9
%undefine with_dotnet
%undefine with_dotnet
%endif
+%define rel 3
+%define subver beta19
%{?with_dotnet:%include /usr/lib/rpm/macros.mono}
Summary: Graphics library that outputs text instead of pixels
Summary(pl.UTF-8): Biblioteka graficzna wyświetlająca tekst zamiast pikseli
Name: libcaca
Version: 0.99
-%define subver beta17
-Release: 0.%{subver}.1
-License: WTFPL
+Release: 0.%{subver}.%{rel}
+License: WTFPL v2
Group: Libraries
-Source0: http://libcaca.zoy.org/files/libcaca/%{name}-%{version}.%{subver}.tar.gz
-# Source0-md5: 790d6e26b7950e15909fdbeb23a7ea87
-Patch0: install.patch
-URL: http://libcaca.zoy.org/
+Source0: http://caca.zoy.org/raw-attachment/wiki/libcaca/%{name}-%{version}.%{subver}.tar.gz
+# Source0-md5: a3d4441cdef488099f4a92f4c6c1da00
+Patch0: %{name}-monodir.patch
+URL: http://caca.zoy.org/
BuildRequires: OpenGL-devel
BuildRequires: autoconf >= 2.50
BuildRequires: automake
BuildRequires: doxygen
BuildRequires: freeglut-devel >= 2.0.0
+# not used
+#BuildRequires: ftgl-devel >= 2.1.3
BuildRequires: imlib2-devel
+%{?with_java:BuildRequires: jdk}
BuildRequires: libstdc++-devel
-BuildRequires: libtool
+BuildRequires: libtool >= 2:1.5
%{?with_dotnet:BuildRequires: mono-csharp}
BuildRequires: pkgconfig
+BuildRequires: python-devel >= 2.2
BuildRequires: rpmbuild(macros) >= 1.533
BuildRequires: rpmbuild(monoautodeps)
BuildRequires: ruby-devel
BuildRequires: sed >= 4.0
BuildRequires: slang-devel >= 2.0.0
-# shouldn't these be in doxygen requirements?
-BuildRequires: tetex-fonts-jknappen
-BuildRequires: tetex-makeindex
-BuildRequires: tetex-metafont
+#BuildRequires: texlive-fonts-jknappen
+#BuildRequires: texlive-format-pdflatex
+#BuildRequires: texlive-latex-ams
+#BuildRequires: texlive-makeindex
BuildRequires: xorg-lib-libX11-devel
+BuildRequires: zlib-devel
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define specflags -fomit-frame-pointer
%description -n dotnet-caca-sharp -l pl.UTF-8
Wiązania C# do libcaca.
+%package -n java-caca
+Summary: Java bindings for libcaca
+Summary(pl.UTF-8): Wiązania Javy do libcaca
+Group: Libraries/Java
+Requires: %{name} = %{version}-%{release}
+Requires: jre
+
+%description -n java-caca
+Java bindings for libcaca.
+
+%description -n java-caca -l pl.UTF-8
+Wiązania Javy do libcaca.
+
+%package -n python-caca
+Summary: Python bindings for libcaca
+Summary(pl.UTF-8): Wiązania Pythona do libcaca
+Group: Development/Languages/Python
+Requires: %{name} = %{version}-%{release}
+# ctypes
+Requires: python-modules
+
+%description -n python-caca
+Python bindings for libcaca.
+
+%description -n python-caca -l pl.UTF-8
+Wiązania Pythona do libcaca.
+
%package -n ruby-caca
Summary: Ruby bindings for libcaca
Summary(pl.UTF-8): Wiązania języka Ruby do libcaca
%prep
%setup -q -n %{name}-%{version}.%{subver}
-%undos */Makefile.am
%patch0 -p1
%build
%{__automake}
# NOTE: ncurses driver builds, but there's no color when linked against
# ABI 6. While caca defaults to ncurses this must be disabled until fixed.
+# NOTE: as of libcaca 0.99beta19 / doxygen 1.8.7 pdflatex fails - use
+# KPSEWHICH hack to disable PDF documentation.
%configure \
- --disable-ncurses \
- --%{!?with_dotnet:dis}%{?with_dotnet:en}able-csharp \
- --disable-java \
+ KPSEWHICH=/nonexisting \
+ --enable-csharp%{!?with_dotnet:=no} \
--enable-cxx \
--enable-gl \
+ --enable-java%{!?with_java:=no} \
+ --disable-ncurses \
--enable-plugins \
--enable-slang \
--enable-x11
-
+# --disable-silent-rules doesn't work due to AM_DEFAULT_VERBOSITY=0; use V=1 instead
# ObjC file not used, use plain CC to link library to avoid C++/ObjC deps
-%{__make} \
- OBJC="%{__cc}"
+%{__make} %{?with_java:-j1} \
+ CLASSPATH=$(pwd)/java \
+ OBJC="%{__cc}" \
+ V=1 \
+ jnidir=%{_libdir}
%install
rm -rf $RPM_BUILD_ROOT
%{__make} install \
- DESTDIR=$RPM_BUILD_ROOT
+ DESTDIR=$RPM_BUILD_ROOT \
+ jnidir=%{_libdir}
# replace symlink by groff include
-rm -f $RPM_BUILD_ROOT%{_mandir}/man1/cacademo.1
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/cacademo.1
echo '.so cacafire.1' > $RPM_BUILD_ROOT%{_mandir}/man1/cacademo.1
-rm -f $RPM_BUILD_ROOT%{_libdir}/caca/*.{a,la}
-rm -f $RPM_BUILD_ROOT%{ruby_sitearchdir}/*.{a,la}
+# loadable modules
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/caca/*.{a,la}
+%{__rm} $RPM_BUILD_ROOT%{ruby_sitearchdir}/*.la
+%if %{with java}
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/libcaca-java.la
+%endif
# man3 pages have too common base names to be included
-rm -f $RPM_BUILD_ROOT%{_mandir}/man3/*.3caca
-rm -rf $RPM_BUILD_ROOT%{_docdir}/libcucul-dev
-
-cd $RPM_BUILD_ROOT%{_libdir}
-for i in libcaca*.so.*.*.*; do
- ln -sf $i $(echo $i |sed 's/caca/cucul/')
-done
-ln -sf libcaca.a $RPM_BUILD_ROOT%{_libdir}/libcucul.a
-ln -sf libcaca.la $RPM_BUILD_ROOT%{_libdir}/libcucul.la
-ln -sf libcaca.so $RPM_BUILD_ROOT%{_libdir}/libcucul.so
-ln -sf libcaca.so.0 $RPM_BUILD_ROOT%{_libdir}/libcucul.so.0
-ln -sf libcaca++.a $RPM_BUILD_ROOT%{_libdir}/libcucul++.a
-ln -sf libcaca++.la $RPM_BUILD_ROOT%{_libdir}/libcucul++.la
-ln -sf libcaca++.so $RPM_BUILD_ROOT%{_libdir}/libcucul++.so
-ln -sf libcaca++.so.0 $RPM_BUILD_ROOT%{_libdir}/libcucul++.so.0
-ln -sf caca-sharp $RPM_BUILD_ROOT%{_libdir}/cucul-sharp
-ln -sf caca++.h $RPM_BUILD_ROOT%{_includedir}/cucul++.h
-ln -sf caca_types.h $RPM_BUILD_ROOT%{_includedir}/cucul_types.h
-#ln -sf caca_types++.h $RPM_BUILD_ROOT%{_includedir}/cucul_types++.h
-ln -sf caca.so $RPM_BUILD_ROOT%{ruby_sitearchdir}/cucul.so
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man3/*.3caca
+# packaged as %doc in -devel
+%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/libcaca-dev
+
+%py_postclean
%clean
rm -rf $RPM_BUILD_ROOT
%post c++ -p /sbin/ldconfig
%postun c++ -p /sbin/ldconfig
+%post -n java-caca -p /sbin/ldconfig
+%postun -n java-caca -p /sbin/ldconfig
+
%files
%defattr(644,root,root,755)
%doc AUTHORS COPYING ChangeLog NEWS NOTES README THANKS
+%attr(755,root,root) %{_bindir}/cacaclock
%attr(755,root,root) %{_bindir}/cacademo
%attr(755,root,root) %{_bindir}/cacafire
%attr(755,root,root) %{_bindir}/cacaplay
%attr(755,root,root) %{_bindir}/cacaserver
%attr(755,root,root) %{_libdir}/libcaca.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libcaca.so.0
-%attr(755,root,root) %{_libdir}/libcucul.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libcucul.so.0
%dir %{_libdir}/caca
%{_datadir}/%{name}
%{_mandir}/man1/cacademo.1*
%doc doc/html/*
%attr(755,root,root) %{_bindir}/caca-config
%attr(755,root,root) %{_libdir}/libcaca.so
-%attr(755,root,root) %{_libdir}/libcucul.so
%{_libdir}/libcaca.la
-%{_libdir}/libcucul.la
%{_includedir}/caca.h
%{_includedir}/caca0.h
+%{_includedir}/caca_conio.h
%{_includedir}/caca_types.h
-%{_includedir}/cucul.h
-%{_includedir}/cucul_types.h
%{_pkgconfigdir}/caca.pc
-%{_pkgconfigdir}/cucul.pc
%{_mandir}/man1/caca-config.1*
# man3 pages have too common base names to be included
%files static
%defattr(644,root,root,755)
%{_libdir}/libcaca.a
-%{_libdir}/libcucul.a
%files c++
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libcaca++.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libcaca++.so.0
-%attr(755,root,root) %{_libdir}/libcucul++.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libcucul++.so.0
%files c++-devel
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libcaca++.so
-%attr(755,root,root) %{_libdir}/libcucul++.so
%{_libdir}/libcaca++.la
-%{_libdir}/libcucul++.la
%{_includedir}/caca++.h
-%{_includedir}/cucul++.h
%{_pkgconfigdir}/caca++.pc
-%{_pkgconfigdir}/cucul++.pc
%files c++-static
%defattr(644,root,root,755)
%{_libdir}/libcaca++.a
-%{_libdir}/libcucul++.a
%if %{with dotnet}
%files -n dotnet-caca-sharp
%defattr(644,root,root,755)
-%{_libdir}/caca-sharp
-%{_libdir}/cucul-sharp
+%{_prefix}/lib/mono/caca-sharp-0.0
+%{_prefix}/lib/mono/gac/caca-sharp
+%{_javadir}/libjava.jar
+%endif
+
+%if %{with dotnet}
+%files -n java-caca
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libcaca-java.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libcaca-java.so.0
+%attr(755,root,root) %{_libdir}/libcaca-java.so
%endif
+%files -n python-caca
+%defattr(644,root,root,755)
+%dir %{py_sitescriptdir}/caca
+%{py_sitescriptdir}/caca/*.py[co]
+
%files -n ruby-caca
%defattr(644,root,root,755)
%{ruby_sitelibdir}/caca.rb
%attr(755,root,root) %{ruby_sitearchdir}/caca.so
-%attr(755,root,root) %{ruby_sitearchdir}/cucul.so