Ignore:
Timestamp:
Nov 30, 2008, 12:32:47 PM (15 years ago)
Author:
Bruno Cornec
Message:
  • pb now uses pb_distro_installdeps in VM/VE setup
  • pb_get_distro => pb_distro_get for homogeneity
  • before installing packages, call the update of the pkg db before (may create issues, but is generally better)
  • Adds pb_distro_only_deps_needed to compute the packages in a list whose installation is really needed
File:
1 edited

Legend:

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

    r621 r622  
    2020 
    2121our @ISA = qw(Exporter);
    22 our @EXPORT = qw(pb_distro_init pb_get_distro pb_distro_installdeps);
     22our @EXPORT = qw(pb_distro_init pb_distro_get pb_distro_installdeps pb_distro_getdeps pb_distro_only_deps_needed);
    2323
    2424=pod
     
    4949  # Return information on the running distro
    5050  #
    51   my ($ddir,$dver) = pb_get_distro();
     51  my ($ddir,$dver) = pb_distro_get();
    5252  my ($ddir, $dver, $dfam, $dtype, $pbsuf, $pbupd) = pb_distro_init($ddir,$dver);
    5353  print "distro tuple: ".Dumper($ddir, $dver, $dfam, $dtype, $pbsuf, $pbupd)."\n";
     
    5858
    5959
    60 =item B<pb_get_distro>
     60=item B<pb_distro_get>
    6161
    6262This function returns a list of 2 parameters indicating the distribution name and version of the underlying Linux distribution. The value of those 2 fields may be "unknown" in case the function was unable to recognize on which distribution it is running.
     
    7676
    7777# If we don't know which distribution we're on, then guess it
    78 ($ddir,$dver) = pb_get_distro() if ((not defined $ddir) || (not defined $dver));
     78($ddir,$dver) = pb_distro_get() if ((not defined $ddir) || (not defined $dver));
    7979
    8080# There should be unicity of names between ddir dfam and dtype
     
    8585    $dtype="deb";
    8686    $dsuf=".$ddir$dver";
    87     $dupd="apt-get -y install ";
     87    # Chaining the commands allow to only test for what is able o be installed,
     88    # not the update of the repo which may well be unaccessible if too old
     89    $dupd="sudo apt-get update ; sudo apt-get -y install ";
    8890} elsif ($ddir =~ /gentoo/) {
    8991    $dfam="gen";
     
    9193    $dver="nover";
    9294    $dsuf=".$ddir";
    93     $dupd="emerge ";
     95    $dupd="sudo emerge ";
    9496} elsif ($ddir =~ /slackware/) {
    9597    $dfam="slack";
     
    104106    $dtype="rpm";
    105107    $dsuf=".$ddir$dver";
    106     $dupd="yast2 -y ";
     108    $dupd="export TERM=linux ; sudo yast2 -y ";
    107109} elsif (($ddir =~ /redhat/) ||
    108110        ($ddir =~ /rhel/) ||
     
    122124        $opt="--exclude=*.i?86";
    123125    }
    124     $dupd="yum -y $opt install ";
     126    $dupd="sudo yum clean all; sudo yum update ; sudo yum -y $opt install ";
    125127    if ($ddir =~ /fedora/) {
    126128        $dsuf=".fc$dver1";
     
    134136        # older versions of rhel and centos ran up2date
    135137        if (($dver eq "2.1") || ($dver eq "3") || ($dver eq "4")) {
    136             $dupd="up2date -y ";
     138            $dupd="sudo up2date -y ";
    137139        }
    138140        $dsuf=".$ddir$dver1";
     
    153155        $dsuf=".mdv$dver";
    154156    }
    155     $dupd="urpmi --auto ";
     157    # Chaining the commands allow to only test for what is able o be installed,
     158    # not the update of the repo which may well be unaccessible if too old
     159    $dupd="sudo urpmi.update -a ; sudo urpmi --auto ";
    156160} elsif ($ddir =~ /freebsd/) {
    157161    $dfam="bsd";
     
    164168}
    165169
    166 # Update command needs to be run by root
    167 $dupd = "sudo ".$dupd;
    168 
    169170return($ddir, $dver, $dfam, $dtype, $dsuf, $dupd);
    170171}
     
    185186=cut
    186187
    187 sub pb_get_distro {
     188sub pb_distro_get {
    188189
    189190my $base="/etc";
     
    381382pb_log(3,"entering pb_distro_getdeps: $dtype - $f\n");
    382383# Protection
    383 return if (not defined $dtype);
     384return("") if (not defined $dtype);
    384385if ($dtype eq  "rpm") {
    385386    # In RPM this could include files, but we do not handle them atm.
     
    392393} else {
    393394    # No idea
    394     return;
     395    return("");
    395396}
    396397pb_log(2,"regexp: $regexp\n");
     
    398399
    399400# Protection
    400 return if (not defined $f);
     401return("") if (not defined $f);
    401402
    402403# Preserve separator before using the one we need
     
    423424$/ = $oldsep;
    424425pb_log(2,"now deps: $deps\n");
     426my $deps2 = pb_distro_only_deps_needed($dtype,$deps);
     427return($deps2);
     428}
     429
     430
     431=over 4
     432
     433=item B<pb_distro_only_deps_needed>
     434
     435This function returns only the dependencies not yet installed
     436
     437=cut
     438
     439sub pb_distro_only_deps_needed {
     440
     441my $deps = shift || undef;
     442my $dtype = shift || undef;
     443
    425444my $deps2 = "";
    426 
    427445# Avoid to install what is already there
    428446foreach my $p (split(/ /,$deps)) {
Note: See TracChangeset for help on using the changeset viewer.