diff --git a/vala.spec b/vala.spec index 53918ac..3cc3a1c 100644 --- a/vala.spec +++ b/vala.spec @@ -2,7 +2,7 @@ Name: vala Version: 0.15.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A modern programming language for GNOME Group: Development/Languages @@ -22,14 +22,22 @@ BuildRequires: flex BuildRequires: bison BuildRequires: glib2-devel BuildRequires: libxslt -# only while we carry the patch -BuildRequires: vala +# only if Vala source files are patched +# BuildRequires: vala # for Emacs modes BuildRequires: emacs emacs-el # for tests -BuildRequires: dbus-x11 +# BuildRequires: dbus-x11 + +# alternatives +%global vala_binaries vala valac +%global vala_manpages valac +%global vala_tools_binaries vala-gen-introspect vapicheck vapigen +%global vala_tools_manpages vala-gen-introspect vapigen +Requires(post): %{_sbindir}/update-alternatives +Requires(postun): %{_sbindir}/update-alternatives %description @@ -52,7 +60,6 @@ type system. Summary: Development files for %{name} Group: Development/Libraries Requires: %{name} = %{version}-%{release} -Requires: pkgconfig %description devel Vala is a new programming language that aims to bring modern programming @@ -154,8 +161,21 @@ cp -p %{SOURCE3} COPYING %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT +# Makefile.vapigen somehow gets copied; bug authors +rm $RPM_BUILD_ROOT%{_datadir}/vala/Makefile.vapigen +# remove symlinks, using alternatives +for f in %{vala_binaries} %{vala_tools_binaries}; +do + rm $RPM_BUILD_ROOT%{_bindir}/$f + touch $RPM_BUILD_ROOT%{_bindir}/$f +done +for f in %{vala_manpages} %{vala_tools_manpages}; +do + rm $RPM_BUILD_ROOT%{_mandir}/man1/$f.1* + touch $RPM_BUILD_ROOT%{_mandir}/man1/$f.1.gz +done # own this directory for third-party *.vapi files -mkdir -p $RPM_BUILD_ROOT%{_datadir}/vala +mkdir -p $RPM_BUILD_ROOT%{_datadir}/vala/vapi rm $RPM_BUILD_ROOT%{_libdir}/libvala-%{api_ver}.la # Emacs mode files @@ -176,24 +196,77 @@ rm -rf $RPM_BUILD_ROOT %endif -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig +%post +/sbin/ldconfig +for f in %{vala_binaries}; +do + %{_sbindir}/update-alternatives --install %{_bindir}/$f \ + $f %{_bindir}/$f-%{api_ver} 90 +done +for f in %{vala_manpages}; +do + %{_sbindir}/update-alternatives --install %{_mandir}/man1/$f.1.gz \ + $f.1.gz %{_mandir}/man1/$f-%{api_ver}.1.gz 90 +done + +%post tools +for f in %{vala_tools_binaries}; +do + %{_sbindir}/update-alternatives --install %{_bindir}/$f \ + $f %{_bindir}/$f-%{api_ver} 90 +done +for f in %{vala_tools_manpages}; +do + %{_sbindir}/update-alternatives --install %{_mandir}/man1/$f.1.gz \ + $f.1.gz %{_mandir}/man1/$f-%{api_ver}.1.gz 90 +done + +%postun +/sbin/ldconfig +if [ $1 -eq 0 ]; +then + for f in %{vala_binaries}; + do + %{_sbindir}/update-alternatives --remove $f \ + %{_bindir}/$f-%{api_ver} + done + for f in %{vala_manpages}; + do + %{_sbindir}/update-alternatives --remove $f.1.gz \ + %{_mandir}/man1/$f-%{api_ver}.1.gz + done +fi + +%postun tools +if [ $1 -eq 0 ]; +then + for f in %{vala_tools_binaries}; + do + %{_sbindir}/update-alternatives --remove $f \ + %{_bindir}/$f-%{api_ver} + done + for f in %{vala_tools_manpages}; + do + %{_sbindir}/update-alternatives --remove $f.1.gz \ + %{_mandir}/man1/$f-%{api_ver}.1.gz + done +fi %files %defattr(-,root,root,-) %doc AUTHORS ChangeLog COPYING INSTALL MAINTAINERS NEWS README THANKS -# TODO to support parallel installation, the symlinks in bin/ must be -# migrated to use the alternatives system -%{_bindir}/vala -%{_bindir}/valac +%ghost %{_bindir}/vala +%ghost %{_bindir}/valac %{_bindir}/vala-%{api_ver} %{_bindir}/valac-%{api_ver} -%{_datadir}/vala +# owning only the directories, they should be empty +%dir %{_datadir}/vala +%dir %{_datadir}/vala/vapi %{_datadir}/vala-%{api_ver} %{_libdir}/libvala-%{api_ver}.so.* -%{_mandir}/*/valac* +%ghost %{_mandir}/man1/valac.1.gz +%{_mandir}/man1/valac-%{api_ver}.1.gz %files devel %defattr(-,root,root,-) @@ -205,16 +278,19 @@ rm -rf $RPM_BUILD_ROOT %files tools %defattr(-,root,root,-) -%{_bindir}/vala-gen-introspect -%{_bindir}/vapicheck -%{_bindir}/vapigen +%ghost %{_bindir}/vala-gen-introspect +%ghost %{_bindir}/vapicheck +%ghost %{_bindir}/vapigen %{_bindir}/vala-gen-introspect-%{api_ver} %{_bindir}/vapicheck-%{api_ver} %{_bindir}/vapigen-%{api_ver} %{_libdir}/vala-%{api_ver} %{_datadir}/aclocal/vapigen.m4 %{_datadir}/pkgconfig/vapigen*.pc -%{_mandir}/*/*gen* +%ghost %{_mandir}/man1/vala-gen-introspect.1.gz +%ghost %{_mandir}/man1/vapigen.1.gz +%{_mandir}/man1/vala-gen-introspect-%{api_ver}.1.gz +%{_mandir}/man1/vapigen-%{api_ver}.1.gz %files doc %defattr(-,root,root,-) @@ -233,6 +309,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Fri Feb 3 2012 Michel Salim - 0.15.1-2 +- Support parallel installation with other Vala versions + * Mon Jan 30 2012 Michel Salim - 0.15.1-1 - Update to 0.15.1