yaml: Prefer YAML::Syck or YAML::PP over YAML modules.

YAML is not an appropriate fallback from what I can glean of Perl
community discussions.  YAML::XS is preferred, or YAML::Syck.  If I can
get repo-metadata to conform to a stricter YAML subset then YAML::Tiny
would work too.

CCBUG:388109
wilder
Michael Pyne 8 years ago
parent e1d38b76e5
commit 54bb06dd31
  1. 27
      modules/ksb/KDEXMLReader.pm

@ -11,27 +11,22 @@ use 5.014;
use File::Find;
# Load YAML if available without causing compile error if it isn't
# Load YAML-reading module if available without causing compile error if it
# isn't. Note that YAML::Tiny and YAML do not work since some metadata files
# use features it doesn't support
my @YAML_Opts = qw(Dump Load LoadFile);
my @YAML_Mods = qw(YAML::XS YAML::Syck YAML::PP);
my $success = 0;
my $success = eval {
require YAML::XS;
YAML::XS->import(@YAML_Opts);
1;
};
# Note that YAML::Tiny does not work since some metadata files use
# features it doesn't support
if (!$success) {
$success = eval {
require YAML; # Hope that an appropriate module is mapped to this entry point
YAML->import(@YAML_Opts);
1;
};
foreach my $mod (@YAML_Mods) {
$success ||= eval "require $mod; $mod->import(\@YAML_Opts); 1;";
last if $success;
}
if (!$success) {
die "Unable to load YAML::Tiny or YAML::XS modules, one of which is needed to handle KDE project data.";
die "Unable to load one of " .
join(', ', @YAML_Mods) .
" modules, one of which is needed to handle KDE project data.";
}
# Method: new

Loading…
Cancel
Save