Bug 495403 (perl-MooseX-Storage) - Review Request: perl-MooseX-Storage - An serialization framework for Moose classes
Summary: Review Request: perl-MooseX-Storage - An serialization framework for Moose cl...
Keywords:
Status: CLOSED NEXTRELEASE
Alias: perl-MooseX-Storage
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
low
medium
Target Milestone: ---
Assignee: Iain Arnell
QA Contact: Fedora Extras Quality Assurance
URL: http://search.cpan.org/dist/MooseX-St...
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2009-04-12 19:29 UTC by Chris Weyl
Modified: 2009-04-19 00:46 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2009-04-19 00:46:24 UTC
Type: ---
Embargoed:
iarnell: fedora-review+
kevin: fedora-cvs+


Attachments (Terms of Use)

Description Chris Weyl 2009-04-12 19:29:41 UTC
Spec URL: http://fedorapeople.org/~cweyl/review/perl-MooseX-Storage.spec
SRPM URL: http://fedorapeople.org/~cweyl/review/perl-MooseX-Storage-0.17-1.fc10.src.rpm

Description:
MooseX::Storage is a serialization framework for Moose, it provides a
very flexible and highly pluggable way to serialize Moose classes to a
number of different formats and styles. This is still an early release
of this module, so use with caution. It's outward facing serialization
API should be considered stable, but I still reserve the right to make
tweaks if I need too. Anything beyond the basic pack/unpack, freeze/thaw
and load/store should not be relied on. There are 3 levels to the
serialization, each of which builds upon the other and each of which
can be customized to the specific needs of your class.

Koji build: http://koji.fedoraproject.org/koji/taskinfo?taskID=1292522

*rt-0.06

Comment 1 Iain Arnell 2009-04-13 06:22:36 UTC
+ source files match upstream.  
  89f835ca0cad9a2c3707cb8f748bc44f43dc6112  MooseX-Storage-0.17.tar.gz

+ package meets naming and versioning guidelines.
+ specfile is properly named, is cleanly written and uses macros consistently.
- summary matches upstream, but is poor English. Should be
  "A serialization framework for Moose classes" (not "An...")

+ description is OK.
+ dist tag is present.
+ build root is OK.
+ license field matches the actual license.
  GPL+ or Artistic

+ license is open source-compatible.
+ license text not included upstream.
+ latest version is being packaged.
+ BuildRequires are proper.
+ compiler flags are appropriate.
+ %clean is present.
+ package builds in mock
  http://koji.fedoraproject.org/koji/taskinfo?taskID=1292522

+ package installs properly.
+ rpmlint has no complaints:
  perl-MooseX-Storage.noarch: I: checking
  perl-MooseX-Storage.src: I: checking
  2 packages and 0 specfiles checked; 0 errors, 0 warnings.

- final provides and requires:
  perl(Moose::Meta::Attribute::Custom::DoNotSerialize) = 0.17
  perl(Moose::Meta::Attribute::Custom::Trait::DoNotSerialize) = 0.17
  perl(MooseX::Storage) = 0.17
  perl(MooseX::Storage::Base::WithChecksum) = 0.17
  perl(MooseX::Storage::Basic) = 0.17
  perl(MooseX::Storage::Deferred) = 0.17
  perl(MooseX::Storage::Engine) = 0.17
  perl(MooseX::Storage::Engine::IO::AtomicFile) = 0.17
  perl(MooseX::Storage::Engine::IO::File) = 0.17
  perl(MooseX::Storage::Format::JSON) = 0.17
  perl(MooseX::Storage::Format::Storable) = 0.17
  perl(MooseX::Storage::Format::YAML) = 0.17
  perl(MooseX::Storage::IO::AtomicFile) = 0.17
  perl(MooseX::Storage::IO::File) = 0.17
  perl(MooseX::Storage::IO::StorableFile) = 0.17
  perl(MooseX::Storage::Meta::Attribute::DoNotSerialize) = 0.17
  perl(MooseX::Storage::Meta::Attribute::Trait::DoNotSerialize) = 0.17
  perl(MooseX::Storage::Util) = 0.17
  perl-MooseX-Storage = 0.17-1.fc11

=
  perl(:MODULE_COMPAT_5.10.0)  
  perl(Best)  
  perl(Data::Dumper)  
  perl(Digest)  
  perl(IO::AtomicFile)  
  perl(IO::File)  
  perl(JSON::Any)  
  perl(Moose)  
  perl(Moose::Role)  
  perl(MooseX::Storage::Engine)  
  perl(MooseX::Storage::Engine::IO::AtomicFile)  
  perl(MooseX::Storage::Engine::IO::File)  
  perl(MooseX::Storage::Meta::Attribute::DoNotSerialize)  
  perl(Scalar::Util)  
  perl(Storable)  
  perl(utf8)  
  rpmlib(CompressedFileNames) <= 3.0.4-1
  rpmlib(FileDigests) <= 4.6.0-1
  rpmlib(PayloadFilesHavePrefix) <= 4.0-1
  rpmlib(VersionedDependencies) <= 3.0.3-1

+ %check is present and all tests pass.
  All tests successful.
  Files=27, Tests=349, 14 wallclock secs ( 0.20 usr  0.06 sys + 13.43 cusr  0.76 csys = 14.45 CPU)
  Result: PASS

+ no shared libraries are added to the regular linker search paths.
+ owns the directories it creates.
+ doesn't own any directories it shouldn't.
+ no duplicates in %files.
+ file permissions are appropriate.
+ no generically named files
+ code, not content.
+ documentation is small, so no -doc subpackage is necessary.
+ %docs are not necessary for the proper functioning of the package.


Minor niggle with the summary.  And you need to filter the provides:
  perl(Moose::Meta::Attribute::Custom::DoNotSerialize) = 0.17
  perl(Moose::Meta::Attribute::Custom::Trait::DoNotSerialize) = 0.17

Other than that, APPROVED.

Comment 2 Chris Weyl 2009-04-13 15:50:13 UTC
New Package CVS Request
=======================
Package Name: perl-MooseX-Storage
Short Description: An serialization framework for Moose classes
Owners: cweyl
Branches: F-9 F-10 devel
InitialCC: perl-sig

Comment 3 Kevin Fenzi 2009-04-13 15:51:36 UTC
cvs done.

Comment 4 Chris Weyl 2009-04-14 02:17:13 UTC
(In reply to comment #1)
> - summary matches upstream, but is poor English. Should be
>   "A serialization framework for Moose classes" (not "An...")

Ugh.  Thanks :)
 
> Minor niggle with the summary.  And you need to filter the provides:
>   perl(Moose::Meta::Attribute::Custom::DoNotSerialize) = 0.17
>   perl(Moose::Meta::Attribute::Custom::Trait::DoNotSerialize) = 0.17

Hm.  Why would we need to filter these?  They're valid packages, even if Moose::Meta::Attribute::Custom::Trait::DoNotSerialize is in lib/MooseX/Storage/Meta/Attribute/Trait/DoNotSerialize.pm.

Comment 5 Iain Arnell 2009-04-14 03:30:35 UTC
My simple test for provides is that after installing, I should be able to use them:

# yum install 'perl(Moose::Meta::Attribute::Custom::DoNotSerialize)'
$ perl -MMoose::Meta::Attribute::Custom::DoNotSerialize -e ''
Can't locate Moose/Meta/Attribute/Custom/DoNotSerialize.pm in @INC

It isn't particularly useful for rpm to provide things if they're not directly usable.  

Or is Moose able to make it available automagically?

Comment 6 Chris Weyl 2009-04-16 04:55:49 UTC
(sorry this is taking so long; $work has its way of interfering... :))

Hrm.  Well, I think that's a pretty reasonable approach.  I tend to use "is it filtered in META.yml or otherwise hidden from the CPAN indexer", but TMTOWTDI :)

In this case, that's a stub class that Moose uses to help do name resolution on traits.  It's made available when the owning file is use'd, and could reasonably be looked for if we ever get the autoreq handling Moose-y bits.  We also have precedent for this, in that, e.g. perl-RPC-XML does the same sort of thing (multiple packages in one .pm) and perl-App-Asciio does it in reverse (multiple .pm's for a single class).

I guess the heart of the question is: are perl(*) provides file or package based?  I'd say it's package based, given the way autoprov currently works, but it does seem ripe for discussion...

Comment 7 Iain Arnell 2009-04-16 14:55:44 UTC
I'd say file based myself, give the way autoreq currently seems to work ;)

But probably best discussed on the list for real rather than as bugspam.

Until it's resolved one way or the other, I bow to your experience - whatever you think is best.

Comment 9 Chris Weyl 2009-04-19 00:46:24 UTC
Thanks for the review! :-)


Note You need to log in before you can comment on or make changes to this bug.