Changeset 1850 in ProjectBuilder for devel/pb


Ignore:
Timestamp:
Jan 28, 2014, 9:10:25 AM (10 years ago)
Author:
Bruno Cornec
Message:
  • Move pb_cms_compliant fundtion into VCS.pm and rename it pb_vcs_compliant, as it was used incorrectly in Env.pm which was lower in the tree. Detected by MondoRescue 3.2 update by Corey Wirun and reported on the ML.
Location:
devel/pb
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • devel/pb/bin/pb

    r1848 r1850  
    30883088
    30893089    pb_log(2,"Checkin $ENV{'PBCONFDIR'}/$newver\n");
    3090     pb_cms_checkin($scheme,"$ENV{'PBCONFDIR'}/$newver",undef);
     3090    pb_vcs_checkin($scheme,"$ENV{'PBCONFDIR'}/$newver","updated to $ENV{'PBCONFDIR'}");
    30913091}
    30923092
  • devel/pb/lib/ProjectBuilder/CMS.pm

    r1801 r1850  
    3535 
    3636our @ISA = qw(Exporter);
    37 our @EXPORT = qw(pb_cms_init pb_cms_checkin pb_cms_get_pkg pb_cms_get_real_pkg pb_cms_compliant pb_cms_log);
     37our @EXPORT = qw(pb_cms_init pb_cms_get_pkg pb_cms_get_real_pkg pb_cms_log);
    3838($VERSION,$REVISION) = pb_version_init();
    3939
     
    9494my $turl = "$pburl->{$ENV{'PBPROJ'}}/$tmp";
    9595$turl = $pburl->{$ENV{'PBPROJ'}} if ($scheme =~ /^(flat)|(ftp)|(http)|(file)\b/o);
    96 pb_cms_compliant(undef,'PBDIR',"$ENV{'PBPROJDIR'}/$tmp",$turl,$pbinit);
     96pb_vcs_compliant(undef,'PBDIR',"$ENV{'PBPROJDIR'}/$tmp",$turl,$pbinit);
    9797
    9898
     
    147147pb_log(1,"pb_cms_init returns $scheme,$pburl->{$ENV{'PBPROJ'}}\n");
    148148return($scheme,$pburl->{$ENV{'PBPROJ'}});
    149 }
    150 
    151 =item B<pb_cms_checkin>
    152 
    153 This function updates a CMS content from a local directory.
    154 The first parameter is the schema of the CMS systems (svn, cvs, svn+ssh, ...)
    155 The second parameter is the directory to update from.
    156 The third parameter indicates if we are in a new version creation (undef) or in a new project creation (1)
    157 
    158 =cut
    159 
    160 sub pb_cms_checkin {
    161 my $scheme = shift;
    162 my $dir = shift;
    163 my $pbinit = shift || undef;
    164 
    165 my $ver = basename($dir);
    166 my $msg = "updated to $ver";
    167 $msg = "Project $ENV{'PBPROJ'} creation" if (defined $pbinit);
    168 
    169 pb_vcs_checkin($scheme,$dir,$msg);
    170149}
    171150
     
    239218}
    240219
    241 =item B<pb_cms_compliant>
    242 
    243 This function checks the compliance of the project and the pbconf directory.
    244 The first parameter is the key name of the value that needs to be read in the configuration file.
    245 The second parameter is the environment variable this key will populate.
    246 The third parameter is the location of the pbconf dir.
    247 The fourth parameter is the URI of the CMS content related to the pbconf dir.
    248 The fifth parameter indicates whether we should inititate the context or not.
    249 
    250 =cut
    251 
    252 sub pb_cms_compliant {
    253 
    254 my $param = shift;
    255 my $envar = shift;
    256 my $defdir = shift;
    257 my $uri = shift;
    258 my $pbinit = shift;
    259 my %pdir;
    260 
    261 pb_log(1,"pb_cms_compliant: envar: $envar - defdir: $defdir - uri: $uri\n");
    262 my ($pdir) = pb_conf_get_if($param) if (defined $param);
    263 if (defined $pdir) {
    264     %pdir = %$pdir;
    265 }
    266 
    267 
    268 if ((defined $pdir) && (%pdir) && (defined $pdir{$ENV{'PBPROJ'}})) {
    269     # That's always the environment variable that will be used
    270     $ENV{$envar} = $pdir{$ENV{'PBPROJ'}};
    271 } else {
    272     if (defined $param) {
    273         pb_log(1,"WARNING: no $param defined, using $defdir\n");
    274         pb_log(1,"         Please create a $param reference for project $ENV{'PBPROJ'} in $ENV{'PBETC'}\n");
    275         pb_log(1,"         if you want to use another directory\n");
    276     }
    277     $ENV{$envar} = "$defdir";
    278 }
    279 
    280 # Expand potential env variable in it
    281 eval { $ENV{$envar} =~ s/(\$ENV.+\})/$1/eeg };
    282 pb_log(2,"$envar: $ENV{$envar}\n");
    283 
    284 my ($scheme, $account, $host, $port, $path) = pb_get_uri($uri);
    285 
    286 if (($scheme !~ /^cvs/) && ($scheme !~ /^svn/) && ($scheme !~ /^svk/) && ($scheme !~ /^hg/) && ($scheme !~ /^git/)) {
    287     # Do not compare if it's not a real cms
    288     pb_log(1,"pb_cms_compliant useless\n");
    289     return;
    290 } elsif (defined $pbinit) {
    291     pb_mkdir_p("$ENV{$envar}");
    292 } elsif (! -d "$ENV{$envar}") {
    293     # Either we have a version in the uri, and it should be the same
    294     # as the one in the envar. Or we should add the version to the uri
    295     if (basename($uri) ne basename($ENV{$envar})) {
    296         $uri .= "/".basename($ENV{$envar})
    297     }
    298     pb_log(1,"Checking out $uri\n");
    299     # Create structure and remove end dir before exporting
    300     pb_mkdir_p("$ENV{$envar}");
    301     pb_rm_rf($ENV{$envar});
    302     pb_vcs_checkout($scheme,$uri,$ENV{$envar});
    303 } else {
    304     pb_log(1,"$uri found locally, checking content\n");
    305     my $cmsurl = pb_vcs_get_uri($scheme,$ENV{$envar});
    306     my ($scheme2, $account2, $host2, $port2, $path2) = pb_get_uri($cmsurl);
    307     # For svk, scheme doesn't appear in svk info so remove it here in uri coming from conf file
    308     # which needs it to trigger correct behaviour
    309     $uri =~ s/^svk://;
    310     if (($scheme2 =~ /^git/) || ($scheme2 =~ /^hg/)) {
    311         # These VCS manage branches internally not with different tree structures
    312         # Assuming it's correct for now.
    313     } elsif ($cmsurl ne $uri) {
    314         # The local content doesn't correpond to the repository
    315         pb_log(0,"ERROR: Inconsistency detected:\n");
    316         pb_log(0,"       * $ENV{$envar} ($envar) refers to $cmsurl but\n");
    317         pb_log(0,"       * $ENV{'PBETC'} refers to $uri\n");
    318         die "Project $ENV{'PBPROJ'} is not Project-Builder compliant.";
    319     } else {
    320         pb_log(1,"Content correct - doing nothing - you may want to update your repository however\n");
    321         # they match - do nothing - there may be local changes
    322     }
    323 }
    324 pb_log(1,"pb_cms_compliant end\n");
    325 }
    326 
    327220=item B<pb_cms_create_authors>
    328221
Note: See TracChangeset for help on using the changeset viewer.