<br><br><div class="gmail_quote">On 21 April 2011 06:48, David Dick <span dir="ltr"><<a href="mailto:ddick@iinet.net.au">ddick@iinet.net.au</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On 20/04/11 11:35, Mathew Robertson wrote:<br>
</div><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Toby,<br>
<br>
I am not familiar with how this would do the dependency checking<br>
required -> how would building a package containing exactly the<br>
installed files, differ from simply creating a tarball?  ie: it appears<br>
this technique completely ignores the OS versioning problems...<br>
</blockquote>
<br></div>
well, technically since toby is creating a debian package, the difference is he has wrapped a tarball inside an arball :)<br>
<br>
But the practical difference is, creating any sort of native os package is the first step to calculating dependencies.  Once you have a debian package (or a rpm, or whatever), the next step is to examine your build directory for dependencies and list them in the package.<br>

<br>
For example, run 'file' on everything in the build directory, grep for 'shared object' or 'executable', run 'objdump -p' on that, discover the library names that aren't in the build directory and run 'dpkg -S' on those libraries.  That list (plus version numbers from 'dpkg -s' if you want) goes straight into the control file in the debian package.<div>
<div></div><div class="h5"><br></div></div></blockquote><div><br></div><div>I do already understand the requirement for determining dependencies, and so my question.... If you stick every package into an OS specific target (in this example, /usr/local/$NAME/perl) using the packages' installer, you end up with a list of files that are dependent on that OS... and so "how is this different from a tarball?".</div>
<div><br></div><div>Perl has native versioning support and you can use the Makefile.PL (Build.PL, META.yml, etc) to get your dependencies checked for you, without having to make OS/brand specific install scripts.   [ Since this is Perl, neither "dpkg" or "objdump", etc. are applicable **]</div>
<div><br></div><div>Toby's answer was perfectly acceptable -> the build process creates an OS-versioned target, at the expense of being cross-platform like the actual modules being used.</div><div><br></div><div>Mathew</div>
<div><br></div><div><div>** I'm not sure why you mentioned those... is there a specific example where the standard Perl packaging tools dont cover some use cases?</div></div><div><br></div></div>