Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Automatic packaging of multiple perl-modules in a major bundle

by aquarium (Curate)
on Nov 12, 2010 at 02:22 UTC ( [id://870974]=note: print w/replies, xml ) Need Help??


in reply to Automatic packaging of multiple perl-modules in a major bundle

a previous company i worked for provided one install/upgrade self-extracting binary for unix (all flavors) and another for windows server. all the custom provided perl modules were cross-platform and deployed during install or upgrade into our main software directory, that is kept separate from perl installation itself. the many perl programs/scripts all followed a standard to push the custom perl module directory onto @INC, before any "use" statements. this minimizes need to muck about with system environment. we never made use of custom modules that are not part of the standard supplied (proprietary build) perl that would require XS/binary code compiled for separate platforms.
at some stage a proprietary (but fully scripted) patching system was also developed, to deliver small but important fixes between major upgrades. naturally there's plenty of sanity code there to make sure it does the right thing or it stops..and you have a full trace of all that was done to that point, and an automated prior backup.
i'm not entirely certain that absolutely everything was best practice..but these systems generally faired well, and without saying figures, if i sold the system and kept the money for myself, i could live without working for life.
all the perl code was structured in certain ways. the code was easy to read/develop/maintain, without any OO or other fancy code that could possibly work differently across platforms. years ago DBI was dropped as a database access layer from perl, as it was emerging that some bits worked differently on different platforms. a proprietary kind of DBI was established that produced same results across the platforms and the compatible DBs. quite different to SQL though. every command that accessed the database, ended up being a set of internal commands that a central API server processed and logged...be it the web interface, a staff interface, or data access through perl scripts.
quite clever really....hope this helps provoke some thought regards system structure.
the hardest line to type correctly is: stty erase ^H

Replies are listed 'Best First'.
Re^2: Automatic packaging of multiple perl-modules in a major bundle
by poulhs (Beadle) on Nov 12, 2010 at 07:28 UTC

    Thanks for the response, but the problem is the build-process, not the packaging and distribution. The main question is how to do rebuilding very frequently with little manual intervention

      you probably can't change mid-stream now, but my point was that because the custom modules sit separately and are architecture agnostic(?), we had merely a tar archive of the custom modules. so didn't need to make .msi, .dep, .rpm, etc.
      as for the main embedded perl distribution. that was also essentially a .tar archive, with a little bit of installation script that worked across all platforms...because on windows we had cygwin. All in all, for the server side of things for install or major upgrade there was one package for linux, one for unix (only some internal differences to linux), and windows. But all of these followed same pattern of using least common denominator (e.g. tar) to achieve desired outcomes. The install/upgrade script was exactly the same for all platforms. the only real difference between the distributions was that because the install/upgrade couldn't assume cygwin & perl were installed, so for windows these were bootstrapped into the .exe. also the data api commands and server daemons were pre-compiled, so this /bin directory was different for linux/unix/windows.
      the hardest line to type correctly is: stty erase ^H

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://870974]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (3)
As of 2024-03-19 06:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found