Bug 602300

Summary: Review Request: perl-Mojolicious - A next generation web framework for Perl
Product: [Fedora] Fedora Reporter: Yanko Kaneti <yaneti>
Component: Package ReviewAssignee: Iain Arnell <iarnell>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: fedora-package-review, iarnell, notting, perl-devel
Target Milestone: ---Flags: iarnell: fedora-review+
kevin: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-06-11 05:47:53 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Description Yanko Kaneti 2010-06-09 14:42:17 UTC
Spec URL: http://declera.com/~yaneti/Mojolicious/Mojolicious.spec
SRPM URL: http://declera.com/~yaneti/Mojolicious/Mojolicious-0.999925-1.fc14.src.rpm
Description: 
Back in the early days of the web there was this wonderful Perl library
called CGI, many people only learned Perl because of it. It was simple
enough to get started without knowing much about the language and powerful
enough to keep you going, learning by doing was much fun. While most of the
techniques used are outdated now, the idea behind it is not. Mojolicious is
a new attempt at implementing this idea using state of the art technology.

Comment 1 Yanko Kaneti 2010-06-09 15:11:07 UTC
CC perl-devel for anyone interested. Packaged just for evaluation purposes.
It was quite simple and pleasant experience

Comment 2 Iain Arnell 2010-06-09 15:29:12 UTC
At first glance, you should remove the explicit Requires: lines - those modules are only necessary for building - not at runtime. 

I'd also refine the name slightly - either perl-Mojolicious (since it's not really an end-user app - more for developers who are likely to look for perl-Stuff), or all lower case mojolicious.

Otherwise, it looks pretty good to me.

Comment 4 Iain Arnell 2010-06-09 16:14:03 UTC
+ source files match upstream.  
    ee6d1120331e0e0762cce773e7d816a4  Mojolicious-0.999925.tar.gz

+ package meets naming and versioning guidelines.
+ specfile is properly named, is cleanly written and uses macros consistently.
+ summary is OK.
+ description is OK.
+ dist tag is present.
+ build root is OK.
+ license field matches the actual license.
    Artistic 2.0

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

+ package installs properly.
+ rpmlint has no complaints:
    perl-Mojolicious.noarch: I: checking
    perl-Mojolicious.noarch: I: checking-url http://mojolicious.org/ (timeout 10 seconds)
    perl-Mojolicious.src: I: checking
    perl-Mojolicious.src: I: checking-url http://mojolicious.org/ (timeout 10 seconds)
    perl-Mojolicious.src: I: checking-url http://www.cpan.org/authors/id/K/KR/KRAIH/Mojolicious-0.999925.tar.gz (timeout 10 seconds)
    2 packages and 0 specfiles checked; 0 errors, 0 warnings.

+ final provides and requires are sane:
    perl(Mojo) = 0.999925
    perl(Mojo::Asset)  
    perl(Mojo::Asset::File)  
    perl(Mojo::Asset::Memory)  
    perl(Mojo::Base)  
    perl(Mojo::ByteStream)  
    perl(Mojo::Client)  
    perl(Mojo::Command)  
    perl(Mojo::Command::Cgi)  
    perl(Mojo::Command::Daemon)  
    perl(Mojo::Command::DaemonPrefork)  
    perl(Mojo::Command::Fastcgi)  
    perl(Mojo::Command::Generate)  
    perl(Mojo::Command::Generate::App)  
    perl(Mojo::Command::Generate::Gitignore)  
    perl(Mojo::Command::Generate::Makefile)  
    perl(Mojo::Command::Get)  
    perl(Mojo::Command::Psgi)  
    perl(Mojo::Commands)  
    perl(Mojo::Command::Test)  
    perl(Mojo::Command::Version)  
    perl(Mojo::Content)  
    perl(Mojo::Content::MultiPart)  
    perl(Mojo::Content::Single)  
    perl(Mojo::Cookie)  
    perl(Mojo::CookieJar)  
    perl(Mojo::Cookie::Request)  
    perl(Mojo::Cookie::Response)  
    perl(Mojo::Date)  
    perl(Mojo::DOM)  
    perl(Mojo::Exception)  
    perl(Mojo::Filter)  
    perl(Mojo::Filter::Chunked)  
    perl(Mojo::Headers)  
    perl(Mojo::HelloWorld)  
    perl(Mojo::Home)  
    perl(Mojo::IOLoop)  
    perl(Mojo::JSON)  
    perl(Mojo::JSON::_Bool)  
    perl(Mojolicious) = 0.999925
    perl-Mojolicious = 0.999925-1.fc14
    perl(Mojolicious::Command::Generate)  
    perl(Mojolicious::Command::Generate::App)  
    perl(Mojolicious::Command::Generate::LiteApp)  
    perl(Mojolicious::Command::Inflate)  
    perl(Mojolicious::Command::Routes)  
    perl(Mojolicious::Commands)  
    perl(Mojolicious::Controller)  
    perl(Mojolicious::Lite)  
    perl(Mojolicious::Plugin)  
    perl(Mojolicious::Plugin::AgentCondition)  
    perl(Mojolicious::Plugin::Charset)  
    perl(Mojolicious::Plugin::DefaultHelpers)  
    perl(Mojolicious::Plugin::EplRenderer)  
    perl(Mojolicious::Plugin::EpRenderer)  
    perl(Mojolicious::Plugin::HeaderCondition)  
    perl(Mojolicious::Plugin::I18n)  
    perl(Mojolicious::Plugin::I18n::_Handler)  
    perl(Mojolicious::Plugin::JsonConfig)  
    perl(Mojolicious::Plugin::PodRenderer)  
    perl(Mojolicious::Plugin::PoweredBy)  
    perl(Mojolicious::Plugin::RequestTimer)  
    perl(Mojolicious::Plugins)  
    perl(Mojolicious::Plugin::TagHelpers)  
    perl(Mojo::Loader)  
    perl(Mojo::Log)  
    perl(Mojo::Message)  
    perl(Mojo::Message::Request)  
    perl(Mojo::Message::Response)  
    perl(Mojo::Parameters)  
    perl(Mojo::Path)  
    perl(Mojo::Server)  
    perl(Mojo::Server::CGI)  
    perl(Mojo::Server::Daemon)  
    perl(Mojo::Server::Daemon::Prefork)  
    perl(Mojo::Server::FastCGI)  
    perl(Mojo::Server::PSGI)  
    perl(Mojo::Server::PSGI::_Handle)  
    perl(Mojo::Stateful)  
    perl(Mojo::Template)  
    perl(Mojo::Transaction)  
    perl(Mojo::Transaction::HTTP)  
    perl(Mojo::Transaction::Single)  
    perl(Mojo::Transaction::WebSocket)  
    perl(Mojo::Upload)  
    perl(Mojo::URL)  
    perl(MojoX::Controller)  
    perl(MojoX::Dispatcher::Routes)  
    perl(MojoX::Dispatcher::Routes::Controller)  
    perl(MojoX::Dispatcher::Static)  
    perl(MojoX::Renderer)  
    perl(MojoX::Routes)  
    perl(MojoX::Routes::Match)  
    perl(MojoX::Routes::Pattern)  
    perl(MojoX::Session::Cookie)  
    perl(MojoX::Session::Cookie::Controller)  
    perl(MojoX::Types)  
    perl(Test::Mojo)  
    perl(Test::Mojo::Server)  
=
    perl(base)  
    perl(Carp)  
    perl(constant)  
    perl(Cwd)  
    perl(Data::Dumper)  
    perl(Digest::MD5)  
    perl(Encode)  
    perl(Errno)  
    perl(Fcntl)  
    perl(File::Basename)  
    perl(File::Copy)  
    perl(File::Path)  
    perl(File::Spec)  
    perl(File::stat)  
    perl(FindBin)  
    perl(Getopt::Long)  
    perl(I18N::LangTags)  
    perl(IO::File)  
    perl(IO::Poll)  
    perl(IO::Socket)  
    perl(IO::Socket::INET)  
    perl(lib)  
    perl(MIME::Base64)  
    perl(MIME::QuotedPrint)  
    perl(:MODULE_COMPAT_5.12.0)  
    perl(Mojo::Asset::File)  
    perl(Mojo::Asset::Memory)  
    perl(Mojo::ByteStream)  
    perl(Mojo::Client)  
    perl(Mojo::Command)  
    perl(Mojo::Commands)  
    perl(Mojo::Content::MultiPart)  
    perl(Mojo::Content::Single)  
    perl(Mojo::CookieJar)  
    perl(Mojo::Cookie::Request)  
    perl(Mojo::Cookie::Response)  
    perl(Mojo::Date)  
    perl(Mojo::Exception)  
    perl(Mojo::Filter::Chunked)  
    perl(Mojo::Headers)  
    perl(Mojo::Home)  
    perl(Mojo::IOLoop)  
    perl(Mojo::JSON)  
    perl(Mojolicious)  
    perl(Mojolicious::Commands)  
    perl(Mojolicious::Plugins)  
    perl(Mojo::Loader)  
    perl(Mojo::Log)  
    perl(Mojo::Message::Request)  
    perl(Mojo::Message::Response)  
    perl(Mojo::Parameters)  
    perl(Mojo::Path)  
    perl(Mojo::Server)  
    perl(Mojo::Server::CGI)  
    perl(Mojo::Server::Daemon)  
    perl(Mojo::Server::Daemon::Prefork)  
    perl(Mojo::Server::FastCGI)  
    perl(Mojo::Server::PSGI)  
    perl(Mojo::Template)  
    perl(Mojo::Transaction::HTTP)  
    perl(Mojo::Transaction::WebSocket)  
    perl(Mojo::Upload)  
    perl(Mojo::URL)  
    perl(MojoX::Dispatcher::Routes)  
    perl(MojoX::Dispatcher::Static)  
    perl(MojoX::Renderer)  
    perl(MojoX::Routes::Match)  
    perl(MojoX::Routes::Pattern)  
    perl(MojoX::Session::Cookie)  
    perl(MojoX::Types)  
    perl(overload)  
    perl(POSIX)  
    perl(Scalar::Util)  
    perl(Socket)  
    perl(Storable)  
    perl(strict)  
    perl(Test::Harness)  
    perl(Test::More)  
    perl(Time::HiRes)  
    perl(Time::Local)  
    perl(warnings)  

+ %check is present and all tests pass.
    PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/*/*.t t/*/*/*.t t/*/*/*/*.t
    t/mojo/apache_cgi.t ....................... skipped: Mac OS X required for this test!
    t/mojo/apache_fastcgi.t ................... skipped: Mac OS X required for this test!
    t/mojo/app.t .............................. ok
    t/mojo/asset.t ............................ ok
    t/mojo/base.t ............................. ok
    t/mojo/bytestream.t ....................... ok
    t/mojo/cgi.t .............................. ok
    t/mojo/client.t ........................... skipped: set TEST_CLIENT to enable this test (internet connection required!)
    t/mojo/content.t .......................... ok
    t/mojo/cookie.t ........................... ok
    t/mojo/cookiejar.t ........................ ok
    t/mojo/daemon.t ........................... skipped: set TEST_DAEMON to enable this test (developer only!)
    t/mojo/daemon_prefork.t ................... skipped: set TEST_PREFORK to enable this test (developer only!)
    t/mojo/date.t ............................. ok
    t/mojo/dom.t .............................. ok
    t/mojo/fastcgi.t .......................... ok
    t/mojo/headers.t .......................... ok
    t/mojo/home.t ............................. ok
    t/mojo/ioloop.t ........................... ok
    t/mojo/json.t ............................. ok
    t/mojo/loader.t ........................... ok
    t/mojo/message.t .......................... ok
    t/mojo/parameters.t ....................... ok
    t/mojo/path.t ............................. ok
    t/mojo/psgi.t ............................. ok
    t/mojo/server.t ........................... ok
    t/mojo/stateful.t ......................... ok
    t/mojo/template.t ......................... ok
    t/mojo/url.t .............................. ok
    t/mojolicious/app.t ....................... ok
    t/mojolicious/charset_lite_app.t .......... ok
    t/mojolicious/dispatcher_lite_app.t ....... ok
    t/mojolicious/embedded_lite_app.t ......... ok
    t/mojolicious/i18n_lite_app.t ............. ok
    t/mojolicious/json_config_lite_app.t ...... ok
    t/mojolicious/lite_app.t .................. ok
    t/mojolicious/pod_renderer_lite_app.t ..... ok
    t/mojolicious/production_app.t ............ ok
    t/mojolicious/twinkle_lite_app.t .......... ok
    t/mojolicious/upload_lite_app.t ........... ok
    t/mojolicious/websocket_lite_app.t ........ ok
    t/mojolicious/websocket_proxy_lite_app.t .. ok
    t/mojox/dispatcher/routes.t ............... ok
    t/mojox/dispatcher/routes/controller.t .... ok
    t/mojox/renderer.t ........................ ok
    t/mojox/routes/pattern.t .................. ok
    t/mojox/routes/routes.t ................... ok
    t/pod.t ................................... skipped: Test::Pod 1.14 required for this test!
    t/pod_coverage.t .......................... skipped: Test::Pod::Coverage 1.04 required for this test!
    All tests successful.
    Files=49, Tests=2717, 15 wallclock secs ( 0.11 usr  0.16 sys + 10.79 cusr  1.23 csys = 12.29 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.

Comment 5 Iain Arnell 2010-06-09 16:14:39 UTC
Looks good. APPROVED.

Comment 6 Yanko Kaneti 2010-06-09 16:22:06 UTC
New Package CVS Request
=======================
Package Name: perl-Mojolicious
Short Description: A next generation web framework for Perl
Owners: yaneti
Branches: F-13
InitialCC: perl-sig

Comment 7 Kevin Fenzi 2010-06-11 04:55:13 UTC
CVS done (by process-cvs-requests.py).

Comment 8 Yanko Kaneti 2010-06-11 05:47:53 UTC
Imported. Builds done. Bodhi update for stable submitted.
Thanks for the review. Co-maintainers and potential new owners welcome.