What do I do now?
The old fashioned method is to RTFS which you will find at Perl/site/lib/PPM/UI.pm. I found this file simply by greping for the error message. Here is the code in question.
# Find the correct target for this package. This means matching the
# LANGUAGE tag in the PPD. Basically we find out what LANGUAGE the PPD
# represents, and we search through the targets looking for a subset w
+hich
# implement that language. If more than one target implements the lang
+uage
# and version, we pick the first. If none work, we fail. If the LANGUA
+GE
# tag is missing, or the LANGUAGE matches the given target, we use the
# given target.
# NOTE: because LANGUAGE is a child-node of IMPLEMENTATION, we _first_
+ have to
# search for an implementation that matches the target, _then_ we have
+ to
# verify that the target supports the LANGUAGE tag. If it does, we ret
+urn it,
# otherwise we go on to the next target.
sub choose_target {
my $o = shift;
for (@_) {
# Load the target:
my $target = PPM::UI::get_targ($_);
next unless $target->ok;
$target = $target->result;
# Load the PPD and find a suitable implementation for this target:
$o->make_complete($target);
my $ppd = $o->getppd_obj($target);
return $ppd unless $ppd->ok; # the package doesn't exist.
my $impl = $ppd->result->find_impl($target);
next unless $impl->ok;
my $lang = $impl->result->language;
# Older PPDs didn't have a LANGUAGE tag, so we must assume a Perl
# implementation. For old-times' sake, we'll assume version 5.6.0
+is
# required.
unless (defined $lang) {
$lang = PPM::PPD::Language->new({
NAME => 'Perl',
VERSION => '5.6.0',
});
}
# Check if this implementation's language is understood by the tar
+get:
my $match = $lang->matches_target($target);
return $match unless $match->ok;
return Ok($target) if $match->result;
}
return Error(
"no suitable installation target found for package $o->{name}."
);
}
So the error relates vaguely to the (lack of) a LANGUAGE attribute. As you can perhaps see if there is not a LANGUAGE tag in the PPM then it runs some default code. This is the code that is executing to give you the error message. This is a good place to put in some debugging print/warns so you can see what is going on. It may be as simple as adding a LANGUAGE tag to the PPD or possibly changing the default version to 5.8.x to get a valid lang that will match the target.
|