how to enable File::Share on cpantesters-web-legacy
Closed this issue · 4 comments
I tried to use File::Share dist_dir
to configure the paths where Mojolicious should look for templates and static files for cpantesters-web-legacy
, but that's not working:
CPAN-Testers-Web-0.001$ morbo bin/cpantesters-web-legacy
Server available at http://127.0.0.1:3000
Can't load application from file "/home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/cpantesters-web-legacy": Failed to find share dir for dist 'CPAN-Testers-web' at /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.1/File/Share.pm line 37.
Compilation failed in require at (eval 91) line 1.
Is there anything else I need to do (besides installing)? Currently I'm using "hard coded" values for development.
Same thing happens with cpantesters-web
:
CPAN-Testers-Web-0.001$ morbo bin/cpantesters-web
Server available at http://127.0.0.1:3000
Can't load application from file "/home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/cpantesters-web": Base class package "Import::Base" is empty.
(Perhaps you need to 'use' the module which defines that package first,
or make that module available in @INC (@INC contains: /home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/../lib /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.1/x86_64-linux /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.1 /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.1/x86_64-linux /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.1 /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0/x86_64-linux /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0 /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl .).
at /home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/../lib/CPAN/Testers/Web/Base.pm line 37.
BEGIN failed--compilation aborted at /home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/../lib/CPAN/Testers/Web/Base.pm line 37.
Compilation failed in require at /home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/../lib/CPAN/Testers/Web.pm line 26.
BEGIN failed--compilation aborted at /home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/../lib/CPAN/Testers/Web.pm line 26.
Compilation failed in require at (eval 92) line 1.
Compilation failed in require at (eval 91) line 1.
It seem like you asked for CPAN-Testers-web
, but the distribution is named CPAN-Testers-Web
. I wouldn't think capitalization matters, but that'd be my first guess. Otherwise, I don't see a call to dist_dir
in the cpantesters-web-legacy
, so I don't know what you might be doing.
A different thing is happening with cpantesters-web
: the prereqs aren't installed (the error is "Import::Base" is empty
).
It seem like you asked for CPAN-Testers-web, but the distribution is named CPAN-Testers-Web. I wouldn't think capitalization matters, but that'd be my first guess. Otherwise, I don't see a call to dist_dir in the cpantesters-web-legacy, so I don't know what you might be doing.
I didn't push
those changes into the repository yet, but here is what I have done:
:~/Projetos/cpantesters-web/CPAN-Testers-Web-0.001$ ack dist_dir
lib/CPAN/Testers/Web.pm
27:use File::Share qw( dist_dir dist_file );
57: catdir( dist_dir( 'CPAN-Testers-Web' ), 'templates' );
59: catdir( dist_dir( 'CPAN-Testers-Web' ), 'public' );
73: catdir( dist_dir( 'CPAN-Testers-Web' ), 'node_modules' ),
95: catdir( dist_dir( 'CPAN-Testers-Web' ), 'node_modules', 'font-awesome' );
bin/cpantesters-web-legacy
113:use File::Share 'dist_dir';
114:unshift @{ app->renderer->paths }, catdir( dist_dir('CPAN-Testers-Web'), 'templates' );
116:unshift @{ app->static->paths }, catdir( dist_dir('CPAN-Testers-Web'), 'public' );
~/Projetos/cpantesters-web/CPAN-Testers-Web-0.001$ morbo bin/cpantesters-web-legacy
Server available at http://127.0.0.1:3000
Can't load application from file "/home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/cpantesters-web-legacy": Failed to find share dir for dist 'CPAN-Testers-Web' at /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.1/File/Share.pm line 37.
Compilation failed in require at (eval 91) line 1.
^C~/Projetos/cpantesters-web/CPAN-Testers-Web-0.001$ which morbo
/home/alceu/perl5/perlbrew/perls/perl-5.24.0/bin/morbo
~/Projetos/cpantesters-web/CPAN-Testers-Web-0.001$ perl -Ilib /home/alceu/perl5/perlbrew/perls/perl-5.24.0/bin/morbo bin/cpantesters-web-legacy
Server available at http://127.0.0.1:3000
Can't load application from file "/home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/cpantesters-web-legacy": Failed to find share dir for dist 'CPAN-Testers-Web' at /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.1/File/Share.pm line 37.
Compilation failed in require at (eval 91) line 1.
A different thing is happening with cpantesters-web: the prereqs aren't installed (the error is "Import::Base" is empty).
Interesting, because it is declared in the dist.ini file, but I got no complaints about it:
~/Projetos/cpantesters-web$ dzil build
[DZ] beginning to build CPAN-Testers-Web
[DZ] guessing dist's main_module is lib/CPAN/Testers/Web.pm
[PodWeaver] [Name] couldn't find abstract in bin/cpantesters-web
[PodWeaver] [Name] couldn't find abstract in bin/cpantesters-web-legacy
[RewriteVersion] Skipping: no "our $VERSION = '...'" found in "bin/cpantesters-web-legacy"
[DZ] writing CPAN-Testers-Web in CPAN-Testers-Web-0.001
[ReadmeAnyFromPod] overriding README.mkdn in root
[CopyFilesFromBuild] Copied CPAN-Testers-Web-0.001/cpanfile to cpanfile
[CopyFilesFromBuild] Copied CPAN-Testers-Web-0.001/META.json to META.json
[CopyFilesFromBuild] Copied CPAN-Testers-Web-0.001/LICENSE to LICENSE
[CopyFilesFromBuild] Copied CPAN-Testers-Web-0.001/Makefile.PL to Makefile.PL
[CopyFilesFromBuild] Copied CPAN-Testers-Web-0.001/CHANGES to CHANGES
[Run::AfterBuild] executing: perl -pi -e 's{(# SYNOPSIS)}{# STATUS\n\n<a href="https://travis-ci.org/cpan-testers/cpantesters-web"><img src="https://travis-ci.org/cpan-testers/cpantesters-web.svg?branch=master"></a><a href="https://coveralls.io/r/cpan-testers/cpantesters-web"><img src="https://coveralls.io/repos/cpan-testers/cpantesters-web/badge.png" alt="Coverage Status" /></a>\n\n$1}' README.mkdn
[DZ] building archive with Archive::Tar::Wrapper
[DZ] writing archive to CPAN-Testers-Web-0.001.tar.gz
[DZ] built in CPAN-Testers-Web-0.001
alceu@yggdrasil:~/Projetos/cpantesters-web$ ls
bin CONTRIBUTING.md CPAN-Testers-Web-0.001 dist.ini lib Makefile.PL README.mkdn share weaver.ini
CHANGES cpanfile CPAN-Testers-Web-0.001.tar.gz etc LICENSE META.json Rexfile t
~/Projetos/cpantesters-web$ cd CPAN-Testers-Web-0.001/
~/Projetos/cpantesters-web/CPAN-Testers-Web-0.001$ ls
bin CHANGES CONTRIBUTING.md cpanfile dist.ini etc lib LICENSE Makefile.PL MANIFEST META.json META.yml README Rexfile share t weaver.ini
~/Projetos/cpantesters-web/CPAN-Testers-Web-0.001$ morbo bin/cpantesters-web
Server available at http://127.0.0.1:3000
Can't load application from file "/home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/cpantesters-web": Base class package "Import::Base" is empty.
(Perhaps you need to 'use' the module which defines that package first,
or make that module available in @INC (@INC contains: /home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/../lib /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.1/x86_64-linux /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.1 /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.1/x86_64-linux /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.1 /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0/x86_64-linux /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0 /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl .).
at /home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/../lib/CPAN/Testers/Web/Base.pm line 37.
BEGIN failed--compilation aborted at /home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/../lib/CPAN/Testers/Web/Base.pm line 37.
Compilation failed in require at /home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/../lib/CPAN/Testers/Web.pm line 26.
BEGIN failed--compilation aborted at /home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/../lib/CPAN/Testers/Web.pm line 26.
Compilation failed in require at (eval 92) line 1.
Compilation failed in require at (eval 91) line 1.
~/Projetos/cpantesters-web$ ack 'Import::Base'
dist.ini
135:Import::Base = 0.012 ; Fixed using subs in imports
141:;Import::Base = 0.012 ; Fixed using subs in imports
lib/CPAN/Testers/Web/Base.pm
29:=item L<Import::Base>
37:use base 'Import::Base';
META.json
37: "Import::Base" : "0.012",
share/templates/report.html.ep
164:# Import::Base 0.012 1.002
292: Import::Base 0.012 1.002
share/templates/user/inbox/1.html.ep
185:# Import::Base 0.012 1.002
313: Import::Base 0.012 1.002
Makefile.PL
33: "Import::Base" => "0.012",
62: "Import::Base" => "0.012",
cpanfile
3:requires "Import::Base" => "0.012";
After installing Import::Base
:
~/Projetos/cpantesters-web/CPAN-Testers-Web-0.001$ morbo bin/cpantesters-web
Server available at http://127.0.0.1:3000
Can't load application from file "/home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/cpantesters-web": Can't locate Log/Any/Adapter/MojoLog.pm in @INC (you may need to install the Log::Any::Adapter::MojoLog module) (@INC contains: /home/alceu/Projetos/cpantesters-web/CPAN-Testers-Web-0.001/bin/../lib /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.1/x86_64-linux /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.1 /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.1/x86_64-linux /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.1 /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0/x86_64-linux /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0 /home/alceu/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl .) at (eval 100) line 1.
Compilation failed in require at (eval 91) line 1.
Got the problem. The solution will require some thinking about how the distribution is organized.
dist_dir
requires that CPAN/Testers/Web.pm
is included in %INC
, but cpantesters-web-legacy
is using Mojolicious::Lite
instead, so it is not importing CPAN::Testers::Web
as cpantesters-web does.
Or cpantesters-web-legacy
is changed to use Mojolicious (which seems overkill to me at this moment) or we create another package to contain the templates and static files (like CPAN::Testers::Web::Legacy
), which would contain only Pod.
dzil build
does not install prereqs, dzil listdeps --missing | cpanm
installs prereqs.