packages: perl-Readonly-XS/perl-Readonly-XS.spec (NEW) - new

adamg adamg at pld-linux.org
Sat Dec 31 15:30:32 CET 2011


Author: adamg                        Date: Sat Dec 31 14:30:32 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- new

---- Files affected:
packages/perl-Readonly-XS:
   perl-Readonly-XS.spec (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/perl-Readonly-XS/perl-Readonly-XS.spec
diff -u /dev/null packages/perl-Readonly-XS/perl-Readonly-XS.spec:1.1
--- /dev/null	Sat Dec 31 15:30:32 2011
+++ packages/perl-Readonly-XS/perl-Readonly-XS.spec	Sat Dec 31 15:30:27 2011
@@ -0,0 +1,89 @@
+# $Revision$, $Date$
+#
+# Conditional build:
+%bcond_without	tests		# do not perform "make test"
+#
+%define		pdir	Readonly
+%define		pnam	XS
+%include	/usr/lib/rpm/macros.perl
+Summary:	Readonly::XS - Companion module for Readonly.pm, to speed up read-only scalar variables
+Name:		perl-Readonly-XS
+Version:	1.05
+Release:	1
+# same as perl
+License:	GPL v1+ or Artistic
+Group:		Development/Languages/Perl
+Source0:	http://www.cpan.org/modules/by-module/Readonly/%{pdir}-%{pnam}-%{version}.tar.gz
+# Source0-md5:	df71f29abfcbd14c963f912d6d6ded6b
+URL:		http://search.cpan.org/dist/Readonly-XS/
+BuildRequires:	perl-devel >= 1:5.8.0
+BuildRequires:	rpm-perlprov >= 4.1-13
+%if %{with tests}
+BuildRequires:	perl-Readonly >= 1.02
+%endif
+BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+The Readonly module (q.v.) is an effective way to create
+non-modifiable variables. However, it's relatively slow.
+
+The reason it's slow is that is implements the read-only-ness of
+variables via tied objects. This mechanism is inherently slow. Perl
+simply has to do a lot of work under the hood to make tied variables
+work.
+
+This module corrects the speed problem, at least with respect to
+scalar variables. When Readonly::XS is installed, Readonly uses it to
+access the internals of scalar variables. Instead of creating a scalar
+variable object and tying it, Readonly simply flips the SvREADONLY bit
+in the scalar's FLAGS structure.
+
+Readonly arrays and hashes are not sped up by this, since the
+SvREADONLY flag only works for scalars. Arrays and hashes always use
+the tie interface.
+
+Why implement this as a separate module? Because not everyone can use
+XS. Not everyone has a C compiler. Also, installations with a
+statically-linked perl may not want to recompile their perl binary
+just for this module. Rather than render Readonly.pm useless for these
+people, the XS portion was put into a separate module.
+
+%prep
+%setup -q -n %{pdir}-%{pnam}-%{version}
+
+%build
+%{__perl} Makefile.PL \
+	INSTALLDIRS=vendor
+%{__make} \
+	CC="%{__cc}" \
+	OPTIMIZE="%{rpmcflags}"
+
+%{?with_tests:%{__make} test}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+%{__make} pure_install \
+	DESTDIR=$RPM_BUILD_ROOT
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(644,root,root,755)
+%doc Changes README
+%{perl_vendorarch}/Readonly/*.pm
+%dir %{perl_vendorarch}/auto/Readonly/XS
+%{perl_vendorarch}/auto/Readonly/XS/*.bs
+%attr(755,root,root) %{perl_vendorarch}/auto/Readonly/XS/*.so
+%{_mandir}/man3/*
+
+%define	date	%(echo `LC_ALL="C" date +"%a %b %d %Y"`)
+%changelog
+* %{date} PLD Team <feedback at pld-linux.org>
+All persons listed below can be reached at <cvs_login>@pld-linux.org
+
+$Log$
+Revision 1.1  2011/12/31 14:30:27  adamg
+- new
+
================================================================


More information about the pld-cvs-commit mailing list