Ignore:
Timestamp:
Sep 1, 2007, 1:56:48 AM (12 years ago)
Author:
bruno
Message:

Big renaming to be more perlish
Single module Base contains all routines except when detaching makes sense

File:
1 moved

Legend:

Unmodified
Added
Removed
  • devel/pb/lib/ProjectBuilder/Base.pm

    r73 r74  
    11#!/usr/bin/perl -w
    22#
    3 # Creates common environment
     3# Base subroutines for the Project-Builder project
    44#
    55# $Id$
     
    88use strict;
    99use lib qw (lib);
    10 use ProjectBuilder::pb qw (pb_init);
    1110use File::Basename;
    1211use File::Path;
    1312use File::Temp qw /tempdir/;
     13use AppConfig qw(ARGCOUNT_HASH);
    1414use Data::Dumper;
    15 use vars qw (%pbrc);
    1615
    1716$ENV{'PBETC'} = "$ENV{'HOME'}/.pbrc";
    1817
    19 sub env_init {
     18sub pb_env_init {
    2019
    2120my $proj=shift;
     
    3837# and use its content
    3938#
    40 my $pbrc = pb_init("$ENV{'PBETC'}","pbrc");
     39my $pbrc = pb_conf_read("$ENV{'PBETC'}","pbrc");
     40print "DEBUG pbrc: ".Dumper($pbrc)."\n" if ($debug >= 1);
    4141
    4242%pbrc = %$pbrc;
     
    6060if (not defined $ENV{'PBROOT'}) {
    6161    if (-f $pbrc{$proj}) {
    62         my $pbroot = pb_init($pbrc{$proj},"pbroot");
     62        my $pbroot = pb_conf_read($pbrc{$proj},"pbroot");
    6363        my %pbroot = %$pbroot;
    6464        # There is normaly only one line in it
     
    7575die "Project $proj not Project-Builder compliant. Please populate $ENV{'PBCONF'}" if ( not -d "$ENV{'PBCONF'}");
    7676
     77my %version = ();
     78my %confparam = ();
     79
    7780if (-f "$ENV{'PBCONF'}/$proj.pb") {
    78     pb_conf_init("$ENV{'PBCONF'}/$proj.pb");
     81    # main parameter confparam (mandatory)
     82    # List of pkg to build by default (mandatory)
     83    # List of additional pkg to build when all is called (optional)
     84    # Valid version names (optional)
     85    # List of files to filter (optional)
     86    my $ptr = pb_conf_read("$ENV{'PBCONF'}/$proj.pb","confparam","defpkgdir","extpkgdir","version","filteredfiles");
     87    my ($confparam, $defpkgdir, $extpkgdir, $version, $filteredfiles) = @$ptr;
     88    print "DEBUG: confparam: ".Dumper($confparam)."\n" if ($debug >= 1);
     89    print "DEBUG: defpkgdir: ".Dumper($defpkgdir)."\n" if ($debug >= 1);
     90    print "DEBUG: extpkgdir: ".Dumper($extpkgdir)."\n" if ($debug >= 1);
     91    print "DEBUG: version: ".Dumper($version)."\n" if ($debug >= 1);
     92    print "DEBUG: filteredfiles: ".Dumper($filteredfiles)."\n" if ($debug >= 1);
     93    die "Unable to find confparam in $ENV{'PBCONF'}/$proj.pb" if (not defined $confparam);
     94    die "Unable to find defpkgdir in $ENV{'PBCONF'}/$proj.pb" if (not defined $defpkgdir);
     95    %confparam = %$confparam;
     96    # Global
     97    %defpkgdir = %$defpkgdir;
     98    # Global
     99    %extpkgdir = ();
     100    %extpkgdir = %$defpkgdir if (defined $defpkgdir);
     101    %version = ();
     102    %version = %$version if (defined $version);
     103    # Global
     104    %filteredfiles = ();
     105    %filteredfiles = %$filteredfiles if (defined $filteredfiles);
    79106} else {
    80107    die "Unable to open $ENV{'PBCONF'}/$proj.pb";
     
    82109
    83110#
    84 # Check content
     111# Export content if needed
    85112#
    86113if (defined $confparam{"cvsroot"}) {
    87114    $ENV{'CVSROOT'} = $confparam{"cvsroot"};
    88115}
    89 
    90 die "defpkgdir doesn't exist in $ENV{'PBETC'}/$proj.pb" if (not (defined %defpkgdir));
    91116
    92117#
     
    110135
    111136#
    112 #Get global TAG
     137# Get global TAG
    113138#
    114139open(TAG, "$ENV{'PBCONF'}/TAG") || die "Unable to open $ENV{'PBCONF'}/TAG: $?";
     
    129154        next if ($d =~ /^\./);
    130155        next if (-f "$ENV{'PBDESTDIR'}/$d");
    131         pbrm_rf("$ENV{'PBDESTDIR'}/$d") if (-d "$ENV{'PBDESTDIR'}/$d");
     156        pb_rm_rf("$ENV{'PBDESTDIR'}/$d") if (-d "$ENV{'PBDESTDIR'}/$d");
    132157    }
    133158    closedir(DIR);
    134159}
    135160if (! -d "$ENV{'PBDESTDIR'}") {
    136     pbmkdir_p($ENV{'PBDESTDIR'}) || die "Unable to recursively create $ENV{'PBDESTDIR'}";
     161    pb_mkdir_p($ENV{'PBDESTDIR'}) || die "Unable to recursively create $ENV{'PBDESTDIR'}";
    137162}
    138163
     
    141166#
    142167$ENV{'PBBUILDDIR'}=$topdir."/build";
    143 pbrm_rf($ENV{'PBBUILDDIR'}) if (-d "$ENV{'PBBUILDDIR'}");
    144 pbmkdir_p($ENV{'PBBUILDDIR'}) || die "Unable to recursively create $ENV{'PBBUILDDIR'}";
     168pb_rm_rf($ENV{'PBBUILDDIR'}) if (-d "$ENV{'PBBUILDDIR'}");
     169pb_mkdir_p($ENV{'PBBUILDDIR'}) || die "Unable to recursively create $ENV{'PBBUILDDIR'}";
    145170
    146171umask 0022;
     
    148173}
    149174
    150 sub pbmkdir_p {
     175# Internal mkdir -p function
     176sub pb_mkdir_p {
    151177my @dir = @_;
    152178my $ret = mkpath(@dir, 0, 0755);
     
    154180}
    155181
    156 sub pbrm_rf {
     182# Internal rm -rf function
     183sub pb_rm_rf {
    157184my @dir = @_;
    158185my $ret = rmtree(@dir, 0, 0);
     
    160187}
    161188
    162 sub pbsystem {
     189# Internal system function
     190sub pb_system {
    163191
    164192my $cmd=shift;
     
    175203}
    176204}
     205
     206# Function which returns a pointer on a hash
     207# corresponding to a declaration (arg2) in a conf file (arg1)
     208sub pb_conf_read {
     209
     210my $conffile = shift;
     211my @param = @_;
     212my $trace;
     213my @ptr;
     214
     215if ($debug > 0) {
     216    $trace = 1;
     217} else {
     218    $trace = 0;
     219}
     220
     221
     222my $config = AppConfig->new({
     223                            # Auto Create variables mentioned in Conf file
     224                            CREATE => 1,
     225                            DEBUG => $trace,
     226                            GLOBAL => {
     227                                # Each conf item is a hash
     228                                ARGCOUNT => ARGCOUNT_HASH,
     229                            },
     230                        });
     231$config->file($conffile);
     232for my $param (@param) {
     233    push @ptr,$config->get($param);
     234}
     235if ($#param == 0) {
     236    print "DEBUG: param: ".Dumper($ptr[0])."\n" if ($debug >= 1);
     237    return($ptr[0]);
     238} else {
     239    my $ptr = \@ptr;
     240    print "DEBUG: params: ".Dumper($ptr)."\n" if ($debug >= 1);
     241    return($ptr);
     242}
     243}
     244
     245sub pb_conf_init {
     246
     247my $conffile = shift;
     248my $ptr;
     249my $trace;
     250
     251if ($debug > 0) {
     252    $trace = 1;
     253} else {
     254    $trace = 0;
     255}
     256
     257my $config = AppConfig->new({
     258                            # Auto Create variables mentioned in Conf file
     259                            DEBUG => $trace,
     260                            CREATE => '1',
     261                            GLOBAL => {
     262                                # Each conf item is a hash
     263                                ARGCOUNT => ARGCOUNT_HASH,
     264                            },
     265                        });
     266$config->file($conffile);
     267
     268# Root of the project to build
     269# needs at least 2 levels of dir as in the upper
     270# other dirs will be created and used
     271
     272}
     273
     274# Setup environment for CMS system
     275sub pb_cms_init {
     276
     277my $proj = shift || undef;
     278my $ret;
     279
     280my $cms = pb_conf_read("$ENV{'PBETC'}","cms");
     281die "No CMS defined for $proj" if (not defined $cms);
     282my %cms = %$cms;
     283die "No CMS defined for $proj" if (not defined $cms{$proj});
     284
     285if ($cms{$proj} eq "svn") {
     286    $ENV{'PBREVISION'}=`(cd "$ENV{'PBROOT'}" ; svnversion .)`;
     287    chomp($ENV{'PBREVISION'});
     288    $ENV{'PBCMSLOG'}="svn log";
     289    $ENV{'PBCMSLOGFILE'}="svn.log";
     290    $ENV{'PBCMSEXP'}="svn export";
     291} elsif ($cms{$proj} eq "cvs") {
     292    $ENV{'PBREVISION'}=`(cd "$ENV{'PBROOT'}" ; cvs rannotate  -f . 2>&1 | awk '{print \$1}' | grep -E '^[0-9]' | cut -d. -f2 |sort -nu | tail -1)`;
     293    chomp($ENV{'PBREVISION'});
     294    $ENV{'PBCMSLOG'}="cvs log";
     295    $ENV{'PBCMSLOGFILE'}="cvs.log";
     296    $ENV{'PBCMSEXP'}="cvs export"
     297} else {
     298    die "CMS $cms{$proj} unknown";
     299}
     300}
     301
    1773021;
Note: See TracChangeset for help on using the changeset viewer.