<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>canspice.org &#187; git</title>
	<atom:link href="http://www.canspice.org/tag/git/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.canspice.org</link>
	<description>all about a canadian guy living in canada</description>
	<lastBuildDate>Sun, 05 Feb 2012 14:59:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Notes on creating a Shipwright package for Starlink Perl modules</title>
		<link>http://www.canspice.org/2009/08/03/notes-on-creating-a-shipwright-package-for-starlink-perl-modules/</link>
		<comments>http://www.canspice.org/2009/08/03/notes-on-creating-a-shipwright-package-for-starlink-perl-modules/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 02:51:00 +0000</pubDate>
		<dc:creator>Brad</dc:creator>
				<category><![CDATA[Geek Stuff]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[shipwright]]></category>

		<guid isPermaLink="false">http://www.canspice.org/?p=1066</guid>
		<description><![CDATA[I&#8217;m using Shipwright to come up with an easier method of installing Perl modules for the Starlink Software Collection. Normally it takes me the better part of a day to manually install everything for one platform. Given we support (at least) four different platforms, this is a waste of my time. Shipwright can (purportedly) automate [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m using <a href="http://search.cpan.org/dist/Shipwright/">Shipwright</a> to come up with an easier method of installing Perl modules for the <a href="http://starlink.jach.hawaii.edu/starlink">Starlink Software Collection</a>. Normally it takes me the better part of a day to manually install everything for one platform. Given we support (at least) four different platforms, this is a waste of my time. Shipwright can (purportedly) automate this to some degree.</p>
<p>Unfortunately Shipwright&#8217;s documentation is lacking, so I thought I&#8217;d keep some notes about my process in hopes that it will help others in creating a Shipwright package (or vessel, or repository, or whatever it&#8217;s actually called). These notes were written with version 2.2.1.</p>
<p>By the way, I&#8217;m only showing output from Shipwright and not from any of the other commands I run. A command run on the command-line is prefixed with a <tt>%</tt>.</p>
<p>I first started by creating a directory (<tt>oracdr-perl-modules</tt>) that would hold everything. Then I changed into that directory and initialized a git repository:</p>
<pre> % cd oracdr-perl-modules
 % git init</pre>
<p>I then initialized my Shipwright repository and commited the initial state to my git repository:</p>
<pre> % shipwright create -r fs:`pwd`
 % git add *
 % git commit -m 'Shipwright initialization.'</pre>
<p>I am not using the git backend for Shipwright, as I will be handling my git repository manually.</p>
<p>As I will be making tweaks to modules to make sure they build correctly, pass tests, etc., I created a <tt>vendor</tt> branch that would hold the un-modified modules as downloaded from <a href="http://search.cpan.org/">CPAN</a>:</p>
<pre> % git branch vendor
 % git checkout vendor</pre>
<p>Then I started adding modules from CPAN:</p>
<pre> % shipwright -r fs:`pwd` import cpan:Proc::Simple
 % git add *
 % git commit -m 'Added Proc::Simple.'</pre>
<p>These three steps were repeated for all of the CPAN modules I needed.</p>
<p>Once I finished importing the CPAN modules, I switched to my <tt>master</tt> branch and merged from <tt>vendor</tt>, since I want my <tt>vendor</tt> branch to reflect the &#8220;base&#8221; state of modules as obtained from the vendor, and my <tt>master</tt> branch to hold any local changes I have to make to the modules to get them to build properly:</p>
<pre> % git checkout master
 % git merge vendor</pre>
<p>Now it was time to make tweaks to some of the modules. As an example, <tt><a href="http://search.cpan.org/~kgb/ExtUtils-F77-1.16/">ExtUtils::F77</a></tt> doesn&#8217;t support the <a href="http://www.g95.org/">g95</a> Fortran compiler, so I had to make some changes to the <tt>F77.pm</tt> file:</p>
<pre> % cd sources/cpan-ExtUtils-F77/vendor
 % xemacs F77.pm</pre>
<p>Once my changes were complete, I checked in the modified file:</p>
<pre> % git add F77.pm
 % git commit -m 'ExtUtils::F77: Tweaks to support g95.'</pre>
<p>I had to add some compilation options for <tt><a href="http://search.cpan.org/~pratzlaff/Astro-FITS-CFITSIO-1.05/">Astro::FITS::CFITSIO</a></tt>, adding a command-line option when running <tt>perl Makefile.PL</tt> and tweaking <tt>Makefile.PL</tt>. To do this, I modified the <tt>build</tt> file:</p>
<pre> % cd ../../../scripts/cpan-Astro-FITS-CFITSIO
 % xemacs build</pre>
<p>As I needed to add a command-line option to the <tt>Makefile.PL</tt> line, I edited the <tt>configure:</tt> line to read:</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1066code2'); return false;">View Code</a> PERL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10662"><td class="code" id="p1066code2"><pre class="perl" style="font-family:monospace;">configure<span style="color: #339933;">:</span> <span style="color: #339933;">%</span><span style="color: #0000ff;">%PERL</span><span style="color: #339933;">%%</span> Makefile<span style="color: #339933;">.</span>PL OPTIMIZE<span style="color: #339933;">=-</span>O LIB<span style="color: #339933;">=%</span><span style="color: #0000ff;">%INSTALL_BASE</span><span style="color: #339933;">%%/</span>lib<span style="color: #339933;">/</span>perl5<span style="color: #339933;">/</span> PREFIX<span style="color: #339933;">=%</span><span style="color: #0000ff;">%INSTALL_BASE</span><span style="color: #339933;">%%</span> <span style="color: #339933;">%</span><span style="color: #0000ff;">%MAKEMAKER_CONFIGURE_EXTRA</span><span style="color: #339933;">%%</span></pre></td></tr></table></div>

<p>In this case, I added <tt>OPTIMIZE=-O</tt>. </p>
<p>I then edited the <tt>Makefile.PL</tt>:</p>
<pre> % cd ../../sources/cpan-Astro-FITS-CFITSIO/vendor
 % xemacs Makefile.PL</pre>
<p>Then, another commit to the git repository:</p>
<pre> % git add Makefile.PL ../../../sources/cpan-Astro-FITS-CFITSIO/build
 % git commit -m 'Astro::FITS::CFITSIO: Add OPTIMIZE=-O to Makefile.PL command-line, edit Makefile.PL to know about $ENV{STARLINK_DIR}'</pre>
<p>At this point I thought I&#8217;d test out the build process, making sure that the modules I&#8217;d imported passed their tests. If they didn&#8217;t, I could either fix the tests or patch modules (or, in a worse-case scenario, tell Shipwright to skip testing specific modules). I had to make a clone of my git repository in a different directory:</p>
<pre> % cd ~/development
 % mkdir shipwright-test
 % cd shipwright-test
 % git clone file:///home/bradc/development/oracdr-perl-modules</pre>
<p>Testing time! I&#8217;m testing with a private build of Perl, which is located in <tt>$STARLINK_DIR/Perl/bin/perl</tt>, thus the extra preamble. If I was just using the system Perl I&#8217;d leave that out.
<pre> % cd oracdr-perl-modules
 % $STARLINK_DIR/Perl/bin/perl bin/shipwright-builder
no default install-base, will set it to /tmp/vessel_oracdr-perl-modules-pHWh30/oracdr-perl-modules
Building cpan-Proc-Simple
Building cpan-Tk</pre>
<p>During <tt>Tk</tt>&#8216;s tests it hung up. I&#8217;ve seen this before, so I cancelled the build by hitting <tt>Ctrl-C</tt>. I changed to my original Shipwright directory, deleted the offending test file, and updated my repository:</p>
<pre> % cd ~/development/oracdr-perl-modules/sources/cpan-Tk/vendor/t
 % git rm font.t
 % git commit -m 'Tk: font.t test locks up, remove it'</pre>
<p>Then back to my Shipwright test directory and continue on merrily. I first cleaned up the Shipwright build by adding <tt>--clean</tt> &#8212; this might not be necessary, but it allows things to start from a fresh slate. When building XS modules like Tk sometimes header or object files can get into a state, so cleaning them up before rebuilding is good practice, I&#8217;ve found.</p>
<pre> % cd ~/development/shipwright-test/oracdr-perl-modules
 % git pull
 % $STARLINK_DIR/Perl/bin/perl bin/shipwright-builder --clean
 % $STARLINK_DIR/Perl/bin/perl bin/shipwright-builder
Building cpan-Tk
Use of uninitialized value in string at bin/shipwright-builder line 443.
build cpan-Tk test part failed.
 at bin/shipwright-builder line 456
        main::_install('cpan-Tk', 'GLOB(0x12f73e10)') called at bin/shipwright-builder line 346
        main::install() called at bin/shipwright-builder line 241</pre>
<p>Another error. Rerunning with <tt>--verbose</tt><sup>[<a href="http://www.canspice.org/2009/08/03/notes-on-creating-a-shipwright-package-for-starlink-perl-modules/#footnote_0_1066" id="identifier_0_1066" class="footnote-link footnote-identifier-link" title="sunnavy, the author of Shipwright, notes below that a build.log file is written, and that contains the error messages. Just check that for the error messages instead of having to re-run with --verbose!">1</a>]</sup> shows that the problem is with the <tt>t/listbox.t</tt> test, which I removed in a similar fashion to the <tt>t/font.t</tt> test. Update the repository, clean up, and start again:</p>
<pre> % git pull
 % $STARLINK_DIR/Perl/bin/perl bin/shipwright-builder --clean
 % $STARLINK_DIR/Perl/bin/perl bin/shipwright-builder
Building cpan-Tk
Building cpan-Params-Validate
Building cpan-Class-Singleton
Building cpan-Compress-Raw-Zlib
Building cpan-Compress-Raw-Bzip2
Building cpan-IO-Compress
Building cpan-IO-Zlib
Building cpan-Package-Constants
Building cpan-Archive-Tar
Building cpan-Regexp-Common
Building cpan-Pod-Escapes
Building cpan-Pod-Simple
Building cpan-podlators
Building cpan-Devel-Symdump
Building cpan-Pod-Coverage
Building cpan-Test-Pod-Coverage
Building cpan-Test-Pod
Building cpan-Test-Portability-Files
Building cpan-Pod-Readme
Building cpan-version
Building cpan-ExtUtils-CBuilder
Building cpan-Digest-SHA
Building cpan-Module-Signature
Building cpan-ExtUtils-ParseXS
Building cpan-Test-Harness
Building cpan-Module-Build
Building cpan-DateTime-TimeZone
Building cpan-List-MoreUtils
Building cpan-DateTime-Locale
Building cpan-DateTime
Building cpan-Time-Piece
Building cpan-IO-Tee
Building cpan-URI
Building cpan-HTML-Tagset
Building cpan-HTML-Parser
Building cpan-libwww-perl
Building cpan-Tk-TextANSIColor
Building cpan-XML-Parser
build cpan-XML-Parser make part failed.
 at bin/shipwright-builder line 456
        main::_install('cpan-XML-Parser', 'GLOB(0x116f0e10)') called at bin/shipwright-builder line 346
        main::install() called at bin/shipwright-builder line 241</pre>
<p>Well, that&#8217;s a bit more successful. Running with <tt>--verbose</tt> showed that the <tt>expat.h</tt> file couldn&#8217;t be found. I then determined that <tt><a href="http://search.cpan.org/~msergeant/XML-Parser-2.36/">XML::Parser</a></tt> is needed by <tt><a href="http://search.cpan.org/~mkutter/SOAP-Lite-0.710.08/">SOAP::Lite</a></tt>, which we don&#8217;t really need after all, so I switched to my Shipwright directory, changed to the <tt>vendor</tt> branch, removed <tt>SOAP::Lite</tt>, changed back to the <tt>master</tt> branch, then merged in the changes:</p>
<pre> % cd ~/development/oracdr-perl-modules
 % get checkout vendor
 % shipwright -r fs:`pwd` delete cpan-SOAP-Lite
 % shipwright -r fs:`pwd` delete cpan-XML-Parser
 % git add *
 % git rm -r scripts/cpan-SOAP-Lite
 % git rm -r scripts/cpan-XML-Parser
 % git rm -r sources/cpan-SOAP-Lite
 % git rm -r sources/cpan-XML-Parser
 % git commit -m 'Remove SOAP::Lite and XML::Parser.'
 % git checkout master
 % git merge vendor</pre>
<p>Note the change in naming convention when using <tt>shipwright delete</tt> versus <tt>shipwright import</tt>! For CPAN modules,  you import using <tt>cpan:SOAP::Lite</tt> and delete using <tt>cpan-SOAP-Lite</tt>.</p>
<p>Now, back to the test directory to start again:
<pre> % cd ~/development/shipwright-test/oracdr-perl-modules
 % git pull
 % $STARLINK_DIR/Perl/bin/perl bin/shipwright-builder --clean
akule % $STARLINK_DIR/Perl/bin/perl bin/shipwright-builder
Building cpan-Task-Weaken
Building cpan-DateTime-Format-Strptime
Use of uninitialized value in string at bin/shipwright-builder line 443.
build cpan-DateTime-Format-Strptime test part failed.</pre>
<p>This error is because of <tt><a href="http://search.cpan.org/~drolsky/DateTime-Locale-0.43/">DateTime::Locale</a></tt>. You&#8217;ll note that the most recent version (as of this writing) is 0.43. Apparently this version causes one of the tests in <tt><a href="http://search.cpan.org/~rickm/DateTime-Format-Strptime-1.0901/">DateTime::Format::Strptime</a></tt> to fail, so we need to tell Shipwright that we only want version 0.42 of <tt>DateTime::Locale</tt>. In our Shipwright repository we do:</p>
<pre> % git checkout vendor
 % shipwright update -r fs:`pwd` cpan-DateTime-Locale --version 0.42
imported with success
updated with success</pre>
<p>Don&#8217;t let those two lines fool you! Nothing has actually happened here<sup>[<a href="http://www.canspice.org/2009/08/03/notes-on-creating-a-shipwright-package-for-starlink-perl-modules/#footnote_1_1066" id="identifier_1_1066" class="footnote-link footnote-identifier-link" title="Actually, this whole section doesn&amp;#8217;t apply to version 2.3 of Shipwright, as this version bug has since been fixed.">2</a>]</sup>. If you run the last command with <tt>-l info</tt> you&#8217;ll see a message stating:
<pre>path scripts/cpan-DateTime-Locale alreay exists, need to set overwrite arg to overwrite</pre>
<p>I wouldn&#8217;t call this &#8220;success&#8221;, so I <a href="http://rt.cpan.org/Public/Bug/Display.html?id=47789">filed a bug</a><sup>[<a href="http://www.canspice.org/2009/08/03/notes-on-creating-a-shipwright-package-for-starlink-perl-modules/#footnote_2_1066" id="identifier_2_1066" class="footnote-link footnote-identifier-link" title="Like I said, this bug was fixed in Shipwright v2.3.">3</a>]</sup>. Turns out the <tt>overwrite</tt> argument isn&#8217;t implemented (<a href="http://rt.cpan.org/Public/Bug/Display.html?id=47790">another bug filed</a>) so I just deleted <tt>DateTime::Locale</tt> and imported version 0.42:
<pre> % shipwright -r fs:`pwd` delete cpan-DateTime-Locale
 % shipwright -r fs:`pwd` import cpan:DateTime::Locale --version 0.42
 % git add *
 % git commit -m 'Revert DateTime::Locale to v0.42 to...'
 % git checkout master
 % git merge vendor</pre>
<p>At this point I&#8217;m not going to show every little error that popped up. Let&#8217;s skip ahead to the end:
<pre>Building cpan-Astro-FITS-CFITSIO
install finished, the dists are at /tmp/vessel_oracdr-perl-modules-GwEUP5/oracdr-perl-modules</pre>
<p>Success!</p>
<p>Sort of. At this point I&#8217;ve only done the CPAN modules. Now it&#8217;s time to do some of our own modules. Because our modules aren&#8217;t stored in separate git repositories, I have to make a <a href="http://en.wikipedia.org/wiki/Tar_(file_format)">tarball</a> of each one and import that:</p>
<pre> % shipwright import -r fs:`pwd` file:/home/bradc/development/starlink/perlmods/Starlink/Config/Starlink-Config-1.01.tar.gz</pre>
<p><tt>Starlink-Config-1.01.tar.gz</tt> is the result of doing <tt>perl Makefile.PL &#038;&#038; make dist</tt> in our <tt>starlink/perlmods/Starlink/Config</tt> directory, which is the standard method of creating a tarball for distribution. Shipwright can import these directly.</p>
<p>Unfortunately when you import a module using a tarball, Shipwright doesn&#8217;t seem to realize that it exists for the purposes of being an installation requirement for future modules. For example, our <tt>Astro::Telescope</tt> module depends on <tt>Astro::SLA</tt>. I imported <tt>Astro::SLA</tt> from a tarball, then tried to import <tt>Astro::Telescope</tt>. Instead of realizing that <tt>Astro::SLA</tt> was already imported, Shipwright imported it again from CPAN. This is a particular problem when you&#8217;ve imported a module that doesn&#8217;t exist on CPAN, as Shipwright tries to find it, then fails to, and then crashes with a scary error:</p>
<pre> % shipwright import -r fs:`pwd` file:/home/bradc/development/starlink/perlmods/Starlink/HDSPACK/Starlink-HDSPACK-undef.tar.gz
CPAN related output will be at /tmp/shipwright_cpan.log
Use of uninitialized value in numeric eq (==) at /local/perl-5.8/lib/site_perl/5.8.8/Shipwright/Source/CPAN.pm line 85.
invalid source: can't find 'NDF' in your CPAN mirror(s) [http://cpan.mirror.facebook.com http://cpan.knowledgematters.net http://cpan.yahoo.com]. at /local/perl-5.8/lib/site_perl/5.8.8/Shipwright/Source/CPAN.pm line 97
        Shipwright::Source::CPAN::run('Shipwright::Source::CPAN=HASH(0x789c8d0)') called at /local/perl-5.8/lib/site_perl/5.8.8/Shipwright/Source/Base.pm line 441
        Shipwright::Source::Base::_follow('Shipwright::Source::Compressed=HASH(0x6ca0770)', '/tmp/shipwright_source_gIMm9O/Starlink-HDSPACK-undef') called at /local/perl-5.8/lib/site_perl/5.8.8/Shipwright/Source/Compressed.pm line 33
        Shipwright::Source::Compressed::run('Shipwright::Source::Compressed=HASH(0x6ca0770)', 'copy', 'HASH(0x661ac80)') called at /local/perl-5.8/lib/site_perl/5.8.8/Shipwright/Script/Import.pm line 157
        Shipwright::Script::Import::run('Shipwright::Script::Import=HASH(0x639b500)', 'file:/home/bradc/development/starlink/perlmods/Starlink/HDSPA...') called at /local/perl-5.8/lib/site_perl/5.8.8/App/CLI/Command.pm line 53
        App::CLI::Command::run_command('Shipwright::Script::Import=HASH(0x639b500)', 'file:/home/bradc/development/starlink/perlmods/Starlink/HDSPA...') called at /local/perl-5.8/lib/site_perl/5.8.8/App/CLI.pm line 79
        App::CLI::dispatch('Shipwright::Script') called at /local/perl/bin/shipwright line 16</pre>
<p>Did you spot the key piece of information there? Here it is:
<pre>invalid source: can't find 'NDF' in your CPAN mirror(s) [http://cpan.mirror.facebook.com http://cpan.knowledgematters.net http://cpan.yahoo.com]. at /local/perl-5.8/lib/site_perl/5.8.8/Shipwright/Source/CPAN.pm line 97</pre>
<p>Even though I&#8217;ve already imported <tt>NDF</tt> to this Shipwright repository, Shipwright can&#8217;t find it. I&#8217;ve <a href="https://rt.cpan.org/Ticket/Display.html?id=47846">filed a bug</a> about this one<sup>[<a href="http://www.canspice.org/2009/08/03/notes-on-creating-a-shipwright-package-for-starlink-perl-modules/#footnote_3_1066" id="identifier_3_1066" class="footnote-link footnote-identifier-link" title="&amp;#8230;which has since been closed because the developer doesn&amp;#8217;t consider this a bug. You can see his reply and rationale by clicking that link.">4</a>]</sup>.</p>
<p>The only work-around I can see at this point is to add <tt>--no-follow</tt> to my imports. This means that I have to have figured out the module requirements and dependency tree before importing every module from this point, which luckily I&#8217;ve already done. However, if this had been early in the process and I was relying on Shipwright to figure all of this out for me (which it&#8217;s supposed to do) I&#8217;d be screwed.</p>
<p>I found that the <tt>NDF</tt> module was missing a file in its <tt>MANIFEST</tt> so it wouldn&#8217;t build properly. I fixed the module, recreated the tarball, and deleted and imported the module again:</p>
<pre> % shipwright delete -r fs:`pwd` NDF
 % shipwright import -r fs:`pwd` file:/home/bradc/development/starlink/perlmods/Starlink/NDF/NDF-1.48.tar.gz</pre>
<p>Now unfortunately when you do this sort of thing Shipwright thinks you want to build this module at the end, when actually you just want to build it where it was before. If you&#8217;ve already imported a bunch and want to go back and fix a module in this way, things will build out of order and your dependency tree will be all screwed up. Since I&#8217;m keeping this repository in git, I just have to revert a couple of files:</p>
<pre> % git checkout -- shipwright/order.yml
 % git checkout -- scripts/NDF/require.yml</pre>
<p>The <tt>shipwright/order.yml</tt> file tells Shipwright which order to build modules in, and since we want to keep that order, we just revert it to lose the changes imposed by the delete/import pair of commands. The <tt>scripts/NDF/require.yml</tt> file lists requirements for <tt>NDF</tt> &#8212; I don&#8217;t know if this is used by Shipwright anywhere, but we might as well revert it anyhow.</p>
<p>I&#8217;m skipping ahead here to the point where I&#8217;ve ironed out all the kinks in my Shipwright repository, and it&#8217;s time to create a vessel on each platform and install the modules in my Starlink distribution directory. For future reference, Starlink has Perl installed in <tt>/star/Perl</tt>, so that&#8217;s the base directory for this case.</p>
<p>I start by checking out the repository via git:</p>
<pre> % git clone file:///net/akule/export/data/bradc/backup/development/oracdr-perl-modules perlmods-nanahope</pre>
<p>Once this is done, I create my vessel:</p>
<pre> % cd perlmods-nanahope
 % /star/Perl/bin/perl bin/shipwright-builder --install-base /tmp/shipwright-vessel</pre>
<p>This goes about and, since I&#8217;ve fixed up all of the tests and compiles and whatnot, creates the vessel in <tt>/tmp/shipwright-vessel</tt>.</p>
<p>Because the library directory structure doesn&#8217;t match that for Perl itself, I can&#8217;t install directly into <tt>/star/Perl</tt> like I&#8217;d want. Instead I have to change to my <tt>/star/Perl/lib/perl5/site_perl/5.10.0</tt> directory, then copy the Shipwright-created files over:</p>
<pre> % cd /star/Perl/lib/perl5/site_perl/5.10.0
 % rsync -avz /tmp/shipwright-vessel/lib/perl5/ ./</pre>
<p>And I&#8217;m done! Well, not quite, as I have some scripts in <tt>/tmp/shipwright-vessel/bin</tt> that need copying over. However, those scripts are merely wrappers around calls to a Shipwright-specific script. If you&#8217;re just installing into a Perl tree, you should copy the files in <tt>/tmp/shipwright-vessel/bin-wrapped</tt> into your Perl <tt>bin</tt> directory instead, as it keeps things clean.</p>
<ol class="footnotes"><li id="footnote_0_1066" class="footnote">sunnavy, the author of Shipwright, <a href="http://www.canspice.org/2009/08/03/notes-on-creating-a-shipwright-package-for-starlink-perl-modules/comment-page-1/#comment-62266">notes below</a> that a <tt>build.log</tt> file is written, and that contains the error messages. Just check that for the error messages instead of having to re-run with <tt>--verbose</tt>!</li><li id="footnote_1_1066" class="footnote">Actually, this whole section doesn&#8217;t apply to version 2.3 of Shipwright, as this version bug has since been fixed.</li><li id="footnote_2_1066" class="footnote">Like I said, this bug was fixed in Shipwright v2.3.</li><li id="footnote_3_1066" class="footnote">&#8230;which has since been closed because the developer doesn&#8217;t consider this a bug. You can see his reply and rationale by clicking that link.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.canspice.org/2009/08/03/notes-on-creating-a-shipwright-package-for-starlink-perl-modules/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

