I used local::lib on a cross platform project about 6 months ago, where the contents of that lib directory where checked into subversion along with the main project source code, scripts etc.

In the main it worked well, but there where occasions where perl packages that compiled binary XS code would break things quite comprehensively for other platforms, while appearing to work fine for the platform I compiled an tested on.

In a typical scenario, In my development (on Linux x86_64), I decided that I needed package X from CPAN, so I would start the CPAN tool and install it into the local lib directory of my subversion checkout. CPAN would follow dependences and also install package Y which was an XS module. The install would appear to work fine. Once I finished my development and all the unit tests passed, I checked the code back into the trunk.

Shortly after another developer who works on windows (i686) would update to the latest head, and discover that everything was broken because the binary portions of package Y where missing.

Best case scenario he would be forced to stop what he was doing and start CPAN to re-install package Y. On one occasion we managed to break things so badly that local::lib would not work at all under windows, and we had to revert the whole change and start again.

The work around we came up with was to create three branches from trunk (n+1 where n is the number of supported platforms). We would then do the CPAN install into the local lib using a VM checked out on each supported platform on a different clean branch. All the branches where then merged into the staging branch that contained the binary XS code for all platforms. That was then unit tested on all platforms before being merged back into the trunk.


In reply to Re: local::lib & multiple architectures by chrestomanci
in thread local::lib & multiple architectures by mikeman

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.