Changeset 2494 in ProjectBuilder


Ignore:
Timestamp:
Mar 31, 2020, 12:56:14 PM (4 years ago)
Author:
Bruno Cornec
Message:

pb_conf_write also needs multiple YAML implementation support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • devel/pb-modules/lib/ProjectBuilder/Conf.pm

    r2491 r2494  
    251251        } else {
    252252            $ldfunc = \&YAML::LoadFile;
     253        }
    253254    } else {
    254255        $ldfunc = \&YAML::XS::LoadFile;
     
    256257
    257258    # Have we already handled that conf file ?
    258     next if ($lh->{'__cf'}->{$cf} eq 1);
     259    next if ((defined $lh) && (defined $lh->{'__cf'}) && (defined $lh->{'__cf'}->{$cf}) && ($lh->{'__cf'}->{$cf} eq 1));
    259260
    260261    pb_log(1,"Loading YAML conf file $cf\n");
     
    382383    # This is the new YAML format
    383384    eval {
    384         require YAML;
    385         YAML->import();
     385        require YAML::XS;
     386        YAML::XS->import();
    386387    };
    387388    if ($@) {
    388389        eval {
    389             # No YAML found using a more std but less complete one. Old perl only
    390             require Module::Build::YAML;
    391             Module::Build::YAML->import();
     390            require YAML;
     391            YAML->import();
    392392        };
    393393        if ($@) {
    394             die "Unable to handle YAML configuration files without a YAML.pm module\n";
     394            eval {
     395                # No YAML found using a more std but less complete one. Old perl only
     396                require Module::Build::YAML;
     397                Module::Build::YAML->import();
     398            };
     399            if ($@) {
     400                eval {
     401                    # No YAML found using a more std but less complete one. Old perl only
     402                    require YAML::Tiny;
     403                    YAML::Tiny->import();
     404                };
     405                if ($@) {
     406                    eval {
     407                        # No YAML found using an embedded pne
     408                        require ProjectBuilder::YAML;
     409                        ProjectBuilder::YAML->import();
     410                    };
     411                    if ($@) {
     412                        # Here we should be in the setup phase, with an embedded YAML code
     413                        $dpfunc = \&LoadFile;
     414                        #die "Unable to handle YAML configuration files without a YAML.pm module\n";
     415                    } else {
     416                        $dpfunc = \&ProjectBuilder::YAML::Dump;
     417                    }
     418                } else {
     419                    $dpfunc = \&YAML::Tiny::Dump;
     420                }
     421            } else {
     422                $dpfunc = \&Module::Build::YAML::Dump;
     423            }
    395424        } else {
    396             $dpfunc = \&Module::Build::YAML::Dump;
     425            $dpfunc = \&YAML::Dump;
    397426        }
    398427    } else {
    399         $dpfunc = \&YAML::Dump;
     428        $dpfunc = \&YAML::XS::Dump;
    400429    }
    401430
    402431    pb_log(1,"Writing YAML conf file $conffile\n");
     432    delete $h->{'__cf'};
    403433    print CONF $dpfunc->($h);
    404434}
Note: See TracChangeset for help on using the changeset viewer.