I've been working on a deployment function for a perl application using the following guide (http://serialized.net/2010/08/deploying-self-contained-perl-dancer-applications/)

It works just fine on a new clean box with no cpan modules (apart from Shipwright), however the process of importing the required modules to the shipyard fails when working on a different server which already has some modules installed (Which is the server image we will currently need to deploy to for this release. Out of my control).

The perl application uses the Dancer framework, and one of the required modules is Dancer::Plugin::DBIC, which requires the DBIx module. Because the system we're deploying to already has some modules installed, we run the import command with a --skip-installed flag. This checks the version installed and the version required, and will only import the module if a higher version is required. In our case, the DBIx module is of the same version.

At some point, some module appears to be trying to install DBIx::Class::Schema as a module. Because of the skip installed flag, it checks the version installed. The .pm file doesn't have a version number, as it can't be installed as a cpan module (I believe).

Shipwright dies at https://metacpan.org/source/SUNNAVY/Shipwright-2.4.39/lib/Shipwright/Source/Base.pm#L523 when it is checking the current version of DBIx::Class::Schema, it tries to parse the version number, which is of invalid format, being "-1, set by base.pm.". base.pm referres to http://search.cpan.org/~jhi/perl-5.8.0/lib/base.pm.

Does this mean there is a bug with Shipwright, that should remove non numeric data before trying to parse the version number?

Hopefully this is enough information to go on. The exact error we see via cli is... Invalid version format (non-numeric data) at /usr/local/share/perl/5.14.2/Shipwright/Source/Base.pm line 523. After which, the proceses is terminated.

I understand from some people on irc, that Shipwright may not be the best way to go about doing deployments, but I've spent a while working on this, and I'd like to solve the issue anyway, if possible.

Thanks in advance.


In reply to Shipwright import process crashing due to invalid version set from base by relequestual

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.