Automatic dependencies
Paul Wolneykien
wolneykien at altlinux.org
Wed Sep 22 23:18:25 UTC 2010
22.09.2010 09:01, Peter Lobsinger пишет:
>> Information about static dependencies is a very important if you want to
>> > get a stable software distribution. If one program can not be run without
>> > another program you should install both of them. In the form of a high-level
>> > language source code the static dependencies a explicitly stated: if we read
>> > "use File::Temp;" at the beginning and the program is compiled successfully,
>> > then there is a good reason to treat the module File/Temp.pm as a static
>> > dependency.
> You've chosen a good example to prove that seemingly-static HLL
> dependancies are indeed dynamic. As I understand it, Perl 6 modules
> are not tied to the filesystem in such an intuitive way. They may be
> name-mangled or managed through a registry of some sort. "use
> File::Temp" looks up whatever your system considers to be the default
> implementation of File::Temp (there may be different versions by
> different authors). This will vary by system, and in fact needs to be
> a runtime lookup (if your bytecode is going to be able to be passed
> around between systems, robust against reconfiguration, etc).
I used "File/Temp.pm" as a simple example of a dependency resolution.
In fact all Perl 5 dependencies are extracted as "perl(module name)" and
in this form are written to the package metadata. If source code
contains "use File::Temp" then the package would automatically require
"perl(File::Temp)" (a so called "virtual dependency" in contrast to
"file dependency"). In attempt to install that package the
package-management system would try to find an other package which
provides "perl(File::Temp)". And there may be a number of such packages,
one already installed in the target system. This "requires/provides"
system has nothing to do with any particular module resolution method.
So, I do not see why "use File::Temp" is not a static dependency. If
program can not be run without that module available in the system, then
that is a static dependency. The logic is simple.
--
Paul Wolneykien,
ALT Linux, Ltd.
More information about the parrot-dev
mailing list