Index: parrot.spec =================================================================== --- parrot.spec (revision 37743) +++ parrot.spec (working copy) @@ -1,11 +1,54 @@ -Name: parrot -Version: 1.0.0 -Release: 1%{dist} +# Start out by figuring out distro +%define is_fedora %(test -e /etc/fedora-release && echo 1 || echo 0) +%define is_suse %(test -e /etc/SuSE-release && echo 1 || echo 0) +%define is_mandriva %(test -e /etc/mandriva-release && echo 1 || echo 0) + +%define name parrot +%define version 1.0.0 + +%if %is_mandriva +%define release %mkrel 2 +%define group Development/Perl +%define optimiseflags +%define libname %{mklibname} %{name} +%define libname_devel %{mklibname} -d %{name} +%define distro_buildreqs BuildRequires: perl-doc +%else +%define not_mandriva 1 +%define release 1%{?dist} +%define group Development/Libraries +%define optimiseflags --optimize="$RPM_OPT_FLAGS -maccumulate-outgoing-args" +%define libname lib%{name} +%define libname_devel lib%{name}-devel +%define distro_buildreqs 0 +%endif + +%if %is_suse +%define _docdir %{_usr}/share/doc +%define curseslib ncurses +%else +%define curseslib curses +%endif + +%if %{is_fedora} +%define distro_provides 1 +%define distro_provides1 Provides: perl(Parrot::Pmc2c::PCCMETHOD_BITS) +%define distro_provides2 Provides: perl(Parrot::Pmc2c::MethodEmitter) +%define distro_provides3 Provides: perl(Parrot::Pmc2c::PMCEmitter) +%else +%define distro_provides 0 +%endif + +%define parrotlib %{_libdir}/parrot/%{version}-devel/ + +Name: %{name} +Version: %{version} +Release: %{release} Summary: Parrot Virtual Machine License: Artistic 2.0 -Group: Development/Libraries +Group: %{group} URL: http://www.parrot.org/ -Source0: ftp://ftp.parrot.org/pub/parrot/releases/stable/%{version}/parrot-%{version}.tar.gz +Source0: ftp://ftp.parrot.org/pub/parrot/releases/stable/%{version}/%{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: readline-devel BuildRequires: ncurses-devel @@ -13,30 +56,82 @@ BuildRequires: gdbm-devel BuildRequires: libicu-devel BuildRequires: perl-Test-Harness +Requires: %{libname} = %{version}-%{release} +%if %{distro_buildreqs} +%{distro_buildreqs} +%endif +%if %{distro_provides} +%{distro_provides1} +%{distro_provides2} +%endif -%package docs -Summary: Parrot Virtual Machine documentation -License: Artistic 2.0 -Group: Development/Libraries -BuildRequires: /usr/bin/perldoc +%description +Parrot is a virtual machine designed to efficiently compile and execute +bytecode for dynamic languages. Parrot is the target for Rakudo Perl 6, +as well as variety of other languages. -%package devel -Summary: Parrot Virtual Machine development headers and libraries +#-- + +%package -n %{libname} +Summary: Parrot Virtual Machine run time library License: Artistic 2.0 Group: Development/Libraries +Group: %{group} +Provides: lib%{name} = %{version}-%{release} Requires: %{name} = %{version}-%{release} Requires: %{_libdir}/pkgconfig +%if %{distro_provides} +%{distro_provides3} +%endif -%description -Parrot is a virtual machine designed to efficiently compile and execute -bytecode for dynamic languages. Parrot is the target for Rakudo Perl 6, -as well as variety of other languages. +%description -n %{libname} +Run time library for the Parrot Virtual Machine. -%description docs +%post -n %{libname} -p /sbin/ldconfig + +%postun -n %{libname} -p /sbin/ldconfig + +#-- + +%if %{is_mandriva} +%define docsname doc +%else +%define docsname docs +%endif + +%package %{docsname} +Summary: Parrot Virtual Machine documentation +License: Artistic 2.0 +Group: %{group} +%if %{not_mandriva} +BuildRequires: /usr/bin/perldoc +%endif + +%description %{docsname} Documentation in text-, POD- and HTML-format (docs/html-subdirectory) and also examples about the Parrot Virtual Machine -%description devel +#-- + +%if %is_mandriva +%define develname -n %{name}_devel +%else +%define develname devel +%endif + +%package %{develname} +Summary: Parrot Virtual Machine development headers and libraries +License: Artistic 2.0 +Group: %{group} +Requires: %{libname} = %{version} +Requires: %{_libdir}/pkgconfig + +%if is_mandriva +Provides: %{name}-devel = %version-%release +%else +%endif + +%description %{develname} Parrot Virtual Machine development headers and libraries. %prep @@ -48,12 +143,9 @@ tools/dev/install_files.pl %build -if test "%{_vendor}" = "suse" -then - LIBS='-lncurses -lm' -else - LIBS='-lcurses -lm' -fi +%ifarch x86_64 + RPM_OPT_FLAGS=`echo "$RPM_OPT_FLAGS" | %{__perl} -pi -e 's/-O2//'` +%endif %ifarch i386 x86_64 %{__perl} Configure.pl \ @@ -64,11 +156,10 @@ --mandir=%{_mandir} \ --cc="%{__cc}" \ --cxx=%{__cxx} \ - --optimize="$RPM_OPT_FLAGS -maccumulate-outgoing-args" \ --parrot_is_shared \ --lex=/usr/bin/flex \ --yacc=/usr/bin/yacc \ - --libs="$LIBS" + --libs="-l%{curseslib} -lm" %{optimiseflags} %else # PowerPC %{__perl} Configure.pl \ @@ -116,26 +207,26 @@ %clean rm -rf $RPM_BUILD_ROOT -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig - %files %defattr(-,root,root,-) %exclude %{_bindir}/parrot_config %exclude %{_bindir}/parrot_debugger %exclude %{_bindir}/pbc_* %{_bindir}/* + +%files -n %{libname} +%defattr(-,root,root,-) +%exclude %{parrotlib}/languages %{_libdir}/parrot -%{_libdir}/libparrot.so.* +%{_libdir}/*.so.* -%files docs +%files %{docsname} %defattr(-,root,root,-) %doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README %doc RESPONSIBLE_PARTIES TODO %doc docs examples -%files devel +%files %{develname} %defattr(-,root,root,-) %{_bindir}/parrot_config %{_bindir}/parrot_debugger @@ -150,6 +241,10 @@ %{_libdir}/pkgconfig/* %changelog +* Thu Mar 26 2009 Tim Nelson 1.0.0 +- Modified to support multiple distributions better. Mandriva changes drawn from a .spec + file supplied by Jerome Quelin + * Tue Mar 17 2009 Allison Randal 1.0.0 - updated to 1.0.0