<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Elliot Loves Perl &#187; continuous integration</title>
	<atom:link href="http://elliotlovesperl.com/tag/continuous-integration/feed/" rel="self" type="application/rss+xml" />
	<link>http://elliotlovesperl.com</link>
	<description>A boy and his language</description>
	<lastBuildDate>Wed, 17 Feb 2010 12:43:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='elliotlovesperl.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/7899c71f1e2dd5c5fa1b1ec047ffdf34?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>Elliot Loves Perl &#187; continuous integration</title>
		<link>http://elliotlovesperl.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://elliotlovesperl.com/osd.xml" title="Elliot Loves Perl" />
	<atom:link rel='hub' href='http://elliotlovesperl.com/?pushpress=hub'/>
		<item>
		<title>Dealing with perl binary compatibility issues as a user of XS modules.</title>
		<link>http://elliotlovesperl.com/2009/05/25/dealing-with-perl-binary-compatibility-issues-as-a-user-of-xs-modules/</link>
		<comments>http://elliotlovesperl.com/2009/05/25/dealing-with-perl-binary-compatibility-issues-as-a-user-of-xs-modules/#comments</comments>
		<pubDate>Mon, 25 May 2009 22:46:37 +0000</pubDate>
		<dc:creator>elliotlovesperl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[modern perl]]></category>
		<category><![CDATA[upgrading]]></category>
		<category><![CDATA[xs]]></category>

		<guid isPermaLink="false">http://elliotlovesperl.wordpress.com/?p=100</guid>
		<description><![CDATA[chromatic discusses binary compatibility with the perl executable. I&#8217;m someone who only uses XS modules and hopes to never have to write one. Yet, unlike what seems to be the prevailing fear, I don&#8217;t worry about binary compatibility. I don&#8217;t worry about upgrades breaking things. I don&#8217;t worry that I&#8217;m going to have mismatches in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elliotlovesperl.com&amp;blog=7775865&amp;post=100&amp;subd=elliotlovesperl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>chromatic <a href="http://www.modernperlbooks.com/mt/2009/05/perl-5-and-binary-compatibility.html">discusses binary compatibility with the perl executable</a>.  I&#8217;m someone who only uses XS modules and hopes to never have to write one.  Yet, unlike what seems to be the prevailing fear, I don&#8217;t worry about binary compatibility.  I don&#8217;t worry about upgrades breaking things.  I don&#8217;t worry that I&#8217;m going to have mismatches in executables/libraries.</p>
<p>Why?  <a href="http://en.wikipedia.org/wiki/Continuous_integration">Continuous integration</a>.</p>
<p>Don&#8217;t just grab modules from the CPAN and install them somewhere never to be upgraded until you&#8217;re forced to at a huge amount of time and expense.  Regularly rebuild everything you use, preferably daily or hourly.</p>
<ol>
<li>Install a perl binary and then lock it down.  Don&#8217;t use site dirs.  Have the perl core be inviolate.</li>
<li>Instead, install to some other directory and point <code>PERL5LIB</code> at it.  Both CPAN and CPANPLUS allow you to configure what you want to be passed to the configuration program.  Pass a value for <code>INSTALL_BASE</code> to <code>Makefile.PL</code> and <code>install_base</code> to <code>Build.PL</code> that points to your directory.</li>
<li>Set up a build server to use CPAN or CPANPLUS to &#8220;install&#8221; and build everything.  Since your build machine will be rebuilding everything regularly, when you upgrade your perl binary or an XS module, any problems will be quickly identified.  Everything being rebuilt in one go means that all binary code will match up and you don&#8217;t have to worry about them getting out of sync.  Because installing a distribution causes all of that distribution&#8217;s tests to be run, you&#8217;ll know that that distribution works in <em>your environment</em>.</li>
</ol>
<p>(If you&#8217;re using taint mode and thus cannot use <code>PERL5LIB</code>, have your build machine build a custom perl executable along with everything else.)</p>
<p>Details for doing this belong in another post.  But the point is, if you regularly rebuild all of the CPAN code you use, you don&#8217;t need to worry about binary issues.</p>
<br /> Tagged: administration, continuous integration, modern perl, upgrading, xs <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elliotlovesperl.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elliotlovesperl.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elliotlovesperl.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elliotlovesperl.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elliotlovesperl.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elliotlovesperl.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elliotlovesperl.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elliotlovesperl.com&amp;blog=7775865&amp;post=100&amp;subd=elliotlovesperl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elliotlovesperl.com/2009/05/25/dealing-with-perl-binary-compatibility-issues-as-a-user-of-xs-modules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e2e2e6430cc24b91f3c25f25fba6d9e6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elliotlovesperl</media:title>
		</media:content>
	</item>
	</channel>
</rss>