in reply to Distribute script with dependencies

What's the difference between distributing a binary and a script?

What I'm planning on doing, with AIX no less, is to have version control contain the source to perl and 160+ modules, plus another repository with my actual code in it. We build the code, tar it up, and distribute it. I do not want to use the system perl because that creates headaches. First off, it's too old - AIX 7 comes with perl 5.10.1. Second, it can change outside of my control: an AIX update could add or remove stuff, including introducing a fix I'm not compatible with.

In my case, we already have the "non-free proprietary IBM compiler" so that isn't the issue. But it's far better to ship your own copy of perl with your code. Then you don't need to worry about the OS compiler, or anything else. It also makes updating AIX easier - going from AIX 6 to AIX 7 broke some of our stuff and we had to build stuff separately for the two because we were building for the system perl (5.8.8 vs 5.10.1).

  • Comment on Re: Distribute script with dependencies

Replies are listed 'Best First'.
Re^2: Distribute script with dependencies
by Limbic~Region (Chancellor) on Oct 25, 2013 at 14:25 UTC
    ...going from AIX 6 to AIX 7 broke some of our stuff...

    Hijacking the OP's thread for a moment, can you describe what the problems were and what you did to resolve them? I would like to head them off if possible for my environment.

    Cheers - L~R

      Fair enough - the breakage was something that will likely strike you as obvious once you see it: going from 5.8.8 to 5.10.1 - that's not a binary-compatible version change. As I seem to recall, this was one of the biggest binary breakages p5p has ever done, but size doesn't really matter - any breakage is a breakage. Obviously, pure-perl code wasn't impacted, other than the change from 5.8 to 5.10 itself (yay, can now use state variables! -- but I didn't encounter anything significant here), it's the XS code, such as DBD::DB2, as you pointed out. We needed DBI, DBD::DB2, JSON::XS, and various other XS modules, so these got hit. Originally, TPTB wanted to use the same AIX 6 box for compiling both versions of our product, but this forced their hand - we had to get an AIX 7 system to compile.

      In addition, we were installing the CPAN modules to the site directory, which, again, changes from 5.8.8 to 5.10.1. If we installed the 5.8.8-compiled XS modules to the 5.8.8 directory on AIX 7, perl 5.10.1 on AIX 7 simply won't see them. If you're installing to a local lib directory, that's not an issue.

      So, basically, we had to compile on both AIX 6 (against 5.8.8) and AIX 7 (against 5.10.1) to get our modules working in both places. Going with our own private perl in the future, we could compile the whole stack on an AIX 6 box and use it on both AIX 6 and AIX 7.

      So, really, there was nothing here that was unique to AIX per se. Going from RHEL 5 to RHEL 6, for example, could have basically the same issues. It's pretty much all just the fact that we're installing CPAN modules to the system perl pre-compiled and automatically, without any compiler being on the target system.

        . As I seem to recall, this was one of the biggest binary breakages p5p has ever done, but size doesn't really matter