---
title: Perlish goodness
date: 2008-02-08 02:14:00.000000000 -08:00
type: post
parent_id: '0'
published: true
password: ''
status: publish
categories: []
tags: []
meta:
  _publicize_pending: '1'
  lj_itemid: '360'
  lj_permalink: http://obra.livejournal.com/92181.html
author:
permalink: "/2008/02/08/perlish-goodness/"
---
<p>We have a new build and distribution tool called 'Shipwright.' It basically takes the pain out of distributing perl applications with all their dependencies. (It also lets you version the dependencies, build relocatable binary distributions with one command and actually imports packages and their dependencies into version control with a single command).</p>
<p><!--more So, this is what Hiveminder&#039;s Shipwright repository looks like. It took me 3 commands to check all of these into version control:--></p>
<p>So, this is what Hiveminder&#039;s Shipwright repository looks like. It took me 3 commands to check all of these into version control</p>
<p>AnyEvent/<br />
App-CLI/<br />
Archive-Tar/<br />
Array-Compare/<br />
BTDT/<br />
Bit-Vector/<br />
Business-CreditCard/<br />
Business-OnlinePayment/<br />
Business-OnlinePayment-AuthorizeNet/<br />
Business-OnlinePayment-AuthorizeNet-AIM-ErrorCodes/<br />
CGI-Cookie-Splitter/<br />
CGI-Simple/<br />
CGI.pm/<br />
CSS-Squish/<br />
Cache-Cache/<br />
Cache-Simple-TimedExpiry/<br />
Calendar-Simple/<br />
Carp-Assert/<br />
Carp-Assert-More/<br />
Carp-Clan/<br />
Chatbot-Eliza/<br />
Class-Accessor/<br />
Class-Accessor-Chained/<br />
Class-Container/<br />
Class-Data-Inheritable/<br />
Class-Factory-Util/<br />
Class-InsideOut/<br />
Class-Inspector/<br />
Class-ReturnValue/<br />
Class-Singleton/<br />
Class-Trigger/<br />
Clone/<br />
Color-Calc/<br />
Color-Library/<br />
Compress-PPMd/<br />
Compress-Raw-Zlib/<br />
Compress-Zlib/<br />
Config-General/<br />
Coro/<br />
Crypt-Blowfish/<br />
Crypt-CBC/<br />
Crypt-Rijndael/<br />
DBD-Pg/<br />
DBD-SQLite/<br />
DBI/<br />
DBIx-DBSchema/<br />
DBM-Deep/<br />
Data-Denter/<br />
Data-ICal/<br />
Data-OptList/<br />
Data-Page/<br />
Data-Serializer/<br />
Data-Taxi/<br />
Data-UUID/<br />
Date-Calc/<br />
Date-Extract/<br />
Date-ICal/<br />
Date-Leapyear/<br />
Date-Manip/<br />
DateTime/<br />
DateTime-Format/<br />
DateTime-Format-Builder/<br />
DateTime-Format-Mail/<br />
DateTime-Format-Natural/<br />
DateTime-Format-Strptime/<br />
DateTime-Locale/<br />
DateTime-TimeZone/<br />
Devel-StackTrace/<br />
Devel-Symdump/<br />
Digest/<br />
Digest-SHA/<br />
EV/<br />
Email-Abstract/<br />
Email-Address/<br />
Email-Date-Format/<br />
Email-Folder/<br />
Email-FolderType/<br />
Email-LocalDelivery/<br />
Email-MIME/<br />
Email-MIME-Attachment-Stripper/<br />
Email-MIME-ContentType/<br />
Email-MIME-CreateHTML/<br />
Email-MIME-Creator/<br />
Email-MIME-Encodings/<br />
Email-MIME-Modifier/<br />
Email-MessageID/<br />
Email-Reply/<br />
Email-Send/<br />
Email-Simple/<br />
Email-Simple-Creator/<br />
Error/<br />
Event/<br />
Exception-Class/<br />
Exporter-Lite/<br />
ExtUtils-CBuilder/<br />
ExtUtils-Command/<br />
ExtUtils-MakeMaker/<br />
ExtUtils-ParseXS/<br />
File-Find-Rule/<br />
File-MMagic/<br />
File-Path-Expand/<br />
File-Policy/<br />
File-ShareDir/<br />
File-Slurp/<br />
FileHandle-Fmode/<br />
FreezeThaw/<br />
GD/<br />
Graphics-ColorNames/<br />
Graphics-ColorNames-WWW/<br />
HTML-Lint/<br />
HTML-Mason/<br />
HTML-Parser/<br />
HTML-Scrubber/<br />
HTML-TagCloud/<br />
HTML-Tagset/<br />
HTML-TokeParser-Simple/<br />
HTML-Truncate/<br />
HTTP-Server-Simple/<br />
HTTP-Server-Simple-Recorder/<br />
Hash-Merge/<br />
Hook-LexWrap/<br />
IO-AIO/<br />
IO-All/<br />
IO-Compress-Base/<br />
IO-Compress-Zlib/<br />
IO-Socket-SSL/<br />
IO-String/<br />
IO-Tee/<br />
IO-Zlib/<br />
IO-stringy/<br />
IPC/<br />
IPC-Cmd/<br />
IPC-PubSub/<br />
JSON/<br />
JSON-Any/<br />
Jifty/<br />
Jifty-DBI/<br />
Lingua-EN-Inflect/<br />
Lingua-EN-Numbers-Ordinate/<br />
List-MoreUtils/<br />
Locale-Maketext-Lexicon/<br />
Locale-Maketext-Simple/<br />
Log-Log4perl/<br />
Log-Trace/<br />
MIME-Types/<br />
Module-Build/<br />
Module-CoreList/<br />
Module-Load/<br />
Module-Load-Conditional/<br />
Module-Loaded/<br />
Module-Pluggable/<br />
Module-Refresh/<br />
Module-ScanDeps/<br />
Module-Signature/<br />
Net-IMAP-Server/<br />
Net-IMAP-Simple/<br />
Net-IMAP-Simple-SSL/<br />
Net-SSLeay/<br />
Net-Server/<br />
Net-Server-Coro/<br />
Net-Twitter/<br />
Number-Compare/<br />
Number-RecordLocator/<br />
Object-Declare/<br />
PHP-Serialization/<br />
PadWalker/<br />
Params-Check/<br />
Params-Util/<br />
Params-Validate/<br />
PathTools/<br />
Pod-Coverage/<br />
Pod-Escapes/<br />
Pod-Readme/<br />
Pod-Simple/<br />
Pod-Strip/<br />
Proc-ProcessTable/<br />
Regexp-Common/<br />
Regexp-Common-Email-Address/<br />
Return-Value/<br />
SQL-ReservedWords/<br />
Scalar-Defer/<br />
Spiffy/<br />
String-Koremutake/<br />
Sub-Exporter/<br />
Sub-Install/<br />
Sub-Override/<br />
Sub-Uplevel/<br />
Task-Weaken/<br />
Template-Declare/<br />
TermReadKey/<br />
Test-Assertions/<br />
Test-Base/<br />
Test-Deep/<br />
Test-Dependencies/<br />
Test-Distribution/<br />
Test-Exception/<br />
Test-HTTP-Server-Simple/<br />
Test-Log4perl/<br />
Test-LongString/<br />
Test-Manifest/<br />
Test-Mock-LWP/<br />
Test-MockObject/<br />
Test-MockTime/<br />
Test-NoWarnings/<br />
Test-Pod/<br />
Test-Pod-Coverage/<br />
Test-Portability-Files/<br />
Test-Simple/<br />
Test-Tester/<br />
Test-WWW-Mechanize/<br />
Test-WWW-Selenium/<br />
Test-Warn/<br />
Test-use-ok/<br />
Text-Autoformat/<br />
Text-CSV_XS/<br />
Text-FixEOL/<br />
Text-Glob/<br />
Text-Markdown/<br />
Text-Password-Pronounceable/<br />
Text-Quoted/<br />
Text-Reform/<br />
Text-Tags/<br />
Text-vFile-asData/<br />
Tie-IxHash/<br />
Tie-Sub/<br />
Time-Duration/<br />
Time-Piece/<br />
Time-modules/<br />
Tree-DAG_Node/<br />
UNIVERSAL-can/<br />
UNIVERSAL-isa/<br />
UNIVERSAL-require/<br />
URI/<br />
WWW-Mechanize/<br />
XML-Atom/<br />
XML-Dumper/<br />
XML-LibXML/<br />
XML-LibXML-Common/<br />
XML-NamespaceSupport/<br />
XML-Parser/<br />
XML-SAX/<br />
XML-Simple/<br />
XML-Writer/<br />
XML-XPath/<br />
YAML/<br />
YAML-Syck/<br />
libwww-perl/<br />
parent/<br />
podlators/<br />
rpm-build-perl/<br />
version/</p>
<p>And this is the order they need to be built in: (It took 0  manual commands to work that out)<br />
---<br />
- ExtUtils-MakeMaker<br />
- EV<br />
- AnyEvent<br />
- Event<br />
- IO-AIO<br />
- Coro<br />
- Net-Server<br />
- Net-Server-Coro<br />
- Tree-DAG_Node<br />
- Test-Simple<br />
- Module-Signature<br />
- Pod-Escapes<br />
- Pod-Simple<br />
- podlators<br />
- Regexp-Common<br />
- Test-Pod<br />
- Test-Portability-Files<br />
- Devel-Symdump<br />
- Pod-Coverage<br />
- Test-Pod-Coverage<br />
- Pod-Readme<br />
- version<br />
- ExtUtils-CBuilder<br />
- IO-Compress-Base<br />
- Compress-Raw-Zlib<br />
- IO-Compress-Zlib<br />
- Compress-Zlib<br />
- IO-Zlib<br />
- Archive-Tar<br />
- ExtUtils-ParseXS<br />
- Module-Build<br />
- Sub-Uplevel<br />
- Test-Exception<br />
- Array-Compare<br />
- Test-Warn<br />
- Net-SSLeay<br />
- IO-Socket-SSL<br />
- Email-MIME-ContentType<br />
- Class-Accessor<br />
- Email-Simple<br />
- Email-Address<br />
- Email-MIME-Encodings<br />
- MIME-Types<br />
- Email-MIME<br />
- Net-IMAP-Server<br />
- Params-Validate<br />
- DateTime-Locale<br />
- Class-Singleton<br />
- DateTime-TimeZone<br />
- DateTime<br />
- IO-stringy<br />
- Class-Trigger<br />
- Sub-Override<br />
- Object-Declare<br />
- Clone<br />
- Hash-Merge<br />
- Cache-Simple-TimedExpiry<br />
- UNIVERSAL-require<br />
- Lingua-EN-Inflect<br />
- DBI<br />
- DBD-SQLite<br />
- Exporter-Lite<br />
- Class-InsideOut<br />
- Scalar-Defer<br />
- Class-Accessor-Chained<br />
- Data-Page<br />
- Devel-StackTrace<br />
- Class-ReturnValue<br />
- YAML-Syck<br />
- Task-Weaken<br />
- Class-Factory-Util<br />
- DateTime-Format-Strptime<br />
- DateTime-Format-Builder<br />
- Module-CoreList<br />
- Text-Glob<br />
- Number-Compare<br />
- File-Find-Rule<br />
- Test-Distribution<br />
- DateTime-Format<br />
- FreezeThaw<br />
- DBIx-DBSchema<br />
- Class-Data-Inheritable<br />
- Jifty-DBI<br />
- YAML<br />
- Locale-Maketext-Lexicon<br />
- Module-Pluggable<br />
- Locale-Maketext-Simple<br />
- App-CLI<br />
- Sub-Install<br />
- Params-Util<br />
- Data-OptList<br />
- Sub-Exporter<br />
- SQL-ReservedWords<br />
- Email-MessageID<br />
- Email-MIME-Modifier<br />
- Exception-Class<br />
- Error<br />
- Digest<br />
- Cache-Cache<br />
- Class-Container<br />
- HTML-Tagset<br />
- HTML-Parser<br />
- HTML-Mason<br />
- ExtUtils-Command<br />
- URI<br />
- HTTP-Server-Simple<br />
- Crypt-CBC<br />
- Module-Refresh<br />
- Data-UUID<br />
- FileHandle-Fmode<br />
- DBM-Deep<br />
- IPC-PubSub<br />
- File-Path-Expand<br />
- Email-FolderType<br />
- Email-LocalDelivery<br />
- Log-Trace<br />
- Email-Date-Format<br />
- Email-Simple-Creator<br />
- Email-MIME-Creator<br />
- HTML-TokeParser-Simple<br />
- Digest-SHA<br />
- Data-Taxi<br />
- Compress-PPMd<br />
- XML-NamespaceSupport<br />
- XML-SAX<br />
- XML-Simple<br />
- Crypt-Blowfish<br />
- JSON<br />
- libwww-perl<br />
- XML-Parser<br />
- XML-Dumper<br />
- PHP-Serialization<br />
- Config-General<br />
- Data-Denter<br />
- Data-Serializer<br />
- Test-Assertions<br />
- File-Slurp<br />
- File-Policy<br />
- Email-MIME-CreateHTML<br />
- Date-Manip<br />
- HTML-Lint<br />
- Template-Declare<br />
- UNIVERSAL-can<br />
- UNIVERSAL-isa<br />
- Test-MockObject<br />
- Test-Mock-LWP<br />
- Test-WWW-Selenium<br />
- Calendar-Simple<br />
- Class-Inspector<br />
- File-ShareDir<br />
- Test-LongString<br />
- XML-XPath<br />
- IPC<br />
- WWW-Mechanize<br />
- String-Koremutake<br />
- Log-Log4perl<br />
- File-MMagic<br />
- XML-Writer<br />
- IO-Tee<br />
- Test-HTTP-Server-Simple<br />
- HTTP-Server-Simple-Recorder<br />
- Return-Value<br />
- Email-Send<br />
- Email-Folder<br />
- PathTools<br />
- Lingua-EN-Numbers-Ordinate<br />
- Test-Log4perl<br />
- Module-ScanDeps<br />
- Spiffy<br />
- Test-Base<br />
- PadWalker<br />
- Carp-Assert<br />
- Carp-Assert-More<br />
- Test-WWW-Mechanize<br />
- Test-Manifest<br />
- Crypt-Rijndael<br />
- Hook-LexWrap<br />
- CSS-Squish<br />
- CGI-Simple<br />
- Test-use-ok<br />
- CGI-Cookie-Splitter<br />
- CGI.pm<br />
- Jifty<br />
- Number-RecordLocator<br />
- Net-IMAP-Simple<br />
- GD<br />
- Business-OnlinePayment-AuthorizeNet-AIM-ErrorCodes<br />
- Module-Loaded<br />
- Module-Load<br />
- Color-Library<br />
- Tie-Sub<br />
- Graphics-ColorNames<br />
- Graphics-ColorNames-WWW<br />
- Color-Calc<br />
- List-MoreUtils<br />
- Text-Markdown<br />
- HTML-Truncate<br />
- Net-IMAP-Simple-SSL<br />
- Regexp-Common-Email-Address<br />
- HTML-TagCloud<br />
- Time-modules<br />
- Proc-ProcessTable<br />
- DateTime-Format-Mail<br />
- Business-OnlinePayment<br />
- Text-Password-Pronounceable<br />
- Time-Piece<br />
- Test-MockTime<br />
- TermReadKey<br />
- Text-Reform<br />
- Text-Autoformat<br />
- Email-MIME-Attachment-Stripper<br />
- XML-LibXML-Common<br />
- XML-LibXML<br />
- XML-Atom<br />
- Date-Leapyear<br />
- Date-ICal<br />
- Text-Quoted<br />
- Test-Tester<br />
- Test-NoWarnings<br />
- Text-vFile-asData<br />
- Data-ICal<br />
- Email-Abstract<br />
- Email-Reply<br />
- parent<br />
- Carp-Clan<br />
- Bit-Vector<br />
- Date-Calc<br />
- DateTime-Format-Natural<br />
- Date-Extract<br />
- Business-CreditCard<br />
- HTML-Scrubber<br />
- Text-Tags<br />
- Text-FixEOL<br />
- Time-Duration<br />
- Pod-Strip<br />
- rpm-build-perl<br />
- Params-Check<br />
- Module-Load-Conditional<br />
- IPC-Cmd<br />
- Test-Dependencies<br />
- IO-String<br />
- IO-All<br />
- Tie-IxHash<br />
- Text-CSV_XS<br />
- Business-OnlinePayment-AuthorizeNet<br />
- DBD-Pg<br />
- Test-Deep<br />
- JSON-Any<br />
- Net-Twitter<br />
- Chatbot-Eliza<br />
- BTDT</p>
