On Thursday 28 May 2009 4:54:50 pm Daniel Carrera wrote:
> On the other hand, distributing Parrot bytecode (or PIR, or PASM) seems
> fine. But I don't know what to suggest for modules that require a C
> compiler.
The problem with that is that Rakudo isn't the "Official" impelentation, and 
never will be. Distributing modules as Parrot bytecode would lock out other 
implementations, something that is very strongly discouraged. Also, I think 
Larry may have meant the compiled form of whatever the P6 equivalent of XS is, 
since Perl is largely designed as a scripting (or at least scripting-ish) 
language and therefore might lose more than it gains by precompiling the 
/Perl/ code rather than just the C/C++/etc.

> I suggested something similar to wayland76 a couple of days ago, to
> solve a different problem. If I remember correctly, he was concerned
> about the local package manager not knowing which files were installed.
>
> Perhaps we should revisit this idea. This is what I proposed: We have
> our own package manager (e.g. /usr/bin/cpan6 ) that takes a .tgz file
> with an appropriate format:
>
> /usr/bin/cpan6 install Foo-Bar.tgz
>
> The RPM Foo-Bar.rpm would contain Foo-Bar.tgz and the rpm install script
> would simply run "cpan6 install Foo-Bar.tgz". When the Fedora user
> uninstall the module, rpm runs a script which just calls "cpan6
> uninstall Foo::Bar".
 The issue with that goes somewhat farther than just "the package manager 
doesn't know what's there." Package managers provide several important 
features that would be rendered near-useless by that model:

* Collision detection - It becomes impossible to prevent another package from 
overwriting a file installed this way
* Linkage checking - If a library interface breaks compatibility, then 
binaries installed this way will not be detected when sweeping installed 
packages to fix linkage
* Programmatic generation of binary packages for hybrid distributions [1]
* Recording the attributes (permissions, etc) of installed packages, so they 
can be fixed if changed inappropriately
* Source-based distributions which give the user the option of 
enabling/disabling tests selectively lose that ability (Gentoo, Exherbo)

[1]: This is a footnote because it'll take a paragraph.
In Gentoo (and when their binary package format is stabilized, Exherbo) binary 
packages are generated by invoking the package manager with specific options. 
With Portage (Gentoo only), the --buildpkg[[only]?] flag determines this, 
while with Paludis (Gentoo and Exherbo) it is accomplished by 'installing' to 
a binary repository. The system you describe makes this model impossible.

Reply via email to