Ignore:
Timestamp:
Oct 21, 2009, 11:48:11 AM (15 years ago)
Author:
Bruno Cornec
Message:
  • Transition static distribution into a configuration file typically /etc/pb/pb.conf
  • function pb_distro_init adapted to use the new conf file
  • function pb_distro_get_param adapted to support osfamily and ostype
  • Adapt the package building of pb to the need of the new configuration file
File:
1 edited

Legend:

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

    r768 r867  
    8484my $dsuf = "unknown";
    8585my $dupd = "unknown";
    86 my $arch = shift || undef;
     86my $darch = shift || undef;
     87my $dnover = "false";
     88my $drmdot = "false";
    8789
    8890# If we don't know which distribution we're on, then guess it
     
    9092
    9193# Initialize arch
    92 $arch=pb_get_arch() if (not defined $arch);
    93 
    94 # There should be unicity of names between ddir dfam and dtype
    95 # In case of duplicate, bad things can happen
    96 if (($ddir =~ /debian/) ||
    97     ($ddir =~ /ubuntu/)) {
    98     $dfam="du";
    99     $dtype="deb";
    100     $dsuf=".$ddir$dver";
    101     # Chaining the commands allow to only test for what is able o be installed,
    102     # not the update of the repo which may well be unaccessible if too old
    103     $dupd="sudo apt-get update ; sudo apt-get -y install ";
    104 } elsif ($ddir =~ /gentoo/) {
    105     $dfam="gen";
    106     $dtype="ebuild";
    107     $dver="nover";
    108     $dsuf=".$ddir";
    109     $dupd="sudo emerge ";
    110 } elsif ($ddir =~ /slackware/) {
    111     $dfam="slack";
    112     $dtype="tgz";
    113     $dsuf=".$dfam$dver";
    114 } elsif (($ddir =~ /suse/) ||
    115         ($ddir =~ /sles/)) {
    116     $dfam="novell";
    117     $dtype="rpm";
    118     $dsuf=".$ddir$dver";
    119     $dupd="export TERM=linux ; export PATH=\$PATH:/sbin:/usr/sbin ; sudo yast2 -i ";
    120 } elsif (($ddir =~ /redhat/) ||
    121         ($ddir =~ /rhel/) ||
    122         ($ddir =~ /fedora/) ||
    123         ($ddir =~ /vmware/) ||
    124         ($ddir =~ /asianux/) ||
    125         ($ddir =~ /centos/)) {
    126     $dfam="rh";
    127     $dtype="rpm";
    128     my $dver1 = $dver;
    129     $dver1 =~ s/\.//;
    130 
    131     # By defaut propose yum
    132     my $opt = "";
    133     if ($arch eq "x86_64") {
    134         $opt="--exclude=*.i?86";
    135     }
    136     $dupd="sudo yum clean all; sudo yum -y update ; sudo yum -y $opt install ";
    137     if ($ddir =~ /fedora/) {
    138         $dsuf=".fc$dver1";
    139     } elsif ($ddir =~ /redhat/) {
    140         $dsuf=".rh$dver1";
    141         $dupd="unknown";
    142     } elsif ($ddir =~ /asianux/) {
    143         $dsuf=".asianux$dver1";
    144     } elsif ($ddir =~ /vmware/) {
    145         $dsuf=".vwm$dver1";
    146         $dupd="unknown";
    147     } else {
    148         # older versions of rhel ran up2date
    149         if ((($dver eq "2.1") || ($dver eq "3") || ($dver eq "4")) && ($ddir eq "rhel")) {
    150             $dupd="sudo up2date -y ";
    151         }
    152         $dsuf=".$ddir$dver1";
    153     }
    154 } elsif (($ddir =~ /mandrake/) ||
    155         ($ddir =~ /mandrakelinux/) ||
    156         ($ddir =~ /mandriva/)) {
    157     $dfam="md";
    158     $dtype="rpm";
    159     if ($ddir =~ /mandrakelinux/) {
    160         $ddir = "mandrake";
    161     }
    162     if ($ddir =~ /mandrake/) {
    163         my $dver1 = $dver;
    164         $dver1 =~ s/\.//;
    165         $dsuf=".mdk$dver1";
    166     } else {
    167         $dsuf=".mdv$dver";
    168     }
    169     # Chaining the commands allow to only test for what is able o be installed,
    170     # not the update of the repo which may well be unaccessible if too old
    171     $dupd="sudo urpmi.update -a ; sudo urpmi --auto ";
    172 } elsif ($ddir =~ /freebsd/) {
    173     $dfam="bsd";
    174     $dtype="port";
    175     my $dver1 = $dver;
    176     $dver1 =~ s/\.//;
    177     $dsuf=".$dfam$dver1";
     94$darch=pb_get_arch() if (not defined $darch);
     95
     96# Adds conf file for distribution description
     97# the location of the conf file is finalyzed at install time
     98# depending whether we deal with package install or tar file install
     99pb_conf_add("CCCC/pb.conf");
     100my ($osfamily,$ostype,$osupd,$ossuffix,$osnover,$osremovedotinver) = pb_conf_get("osfamily","ostype","osupd","ossuffix","osnover","osremovedotinver");
     101
     102$dfam = pb_distro_get_param($ddir,$dver,$darch,$osfamily);
     103$dtype = $ostype->{$dfam} if (defined $ostype->{$dfam});
     104$dupd = pb_distro_get_param($ddir,$dver,$darch,$osupd,$dfam,$dtype);
     105$dsuf = pb_distro_get_param($ddir,$dver,$darch,$ossuffix,$dfam,$dtype);
     106$dnover = pb_distro_get_param($ddir,$dver,$darch,$osnover,$dfam,$dtype);
     107$drmdot = pb_distro_get_param($ddir,$dver,$darch,$osremovedotinver,$dfam,$dtype);
     108
     109# Some OS have no interesting version
     110$dver = "nover" if ($dnover eq "true");
     111
     112# For some OS remove the . in version name
     113$dver =~ s/\.// if ($drmdot eq "true");
     114
     115if ((not defined $dsuf) || ($dsuf eq "unknown")) {
     116    # By default suffix is a concatenation of .ddir and dver
     117    $dsuf = ".$ddir$dver"
    178118} else {
    179     $dfam="unknown";
    180 }
    181 
    182 return($ddir, $dver, $dfam, $dtype, $dsuf, $dupd, $arch);
     119    # concat just the version to what has been found
     120    $dsuf = ".$dsuf$dver";
     121}
     122
     123#   if ($arch eq "x86_64") {
     124#   $opt="--exclude=*.i?86";
     125#   }
     126
     127return($ddir, $dver, $dfam, $dtype, $dsuf, $dupd, $darch);
    183128}
    184129
     
    557502my $darch = shift;
    558503my $opt = shift;
     504my $dfam = shift || "unknown";
     505my $dtype = shift || "unknown";
    559506
    560507if (defined $opt->{"$ddir-$dver-$darch"}) {
     
    564511} elsif (defined $opt->{"$ddir"}) {
    565512    $param = $opt->{"$ddir"};
     513} elsif (defined $opt->{$dfam}) {
     514    $param = $opt->{$dfam};
     515} elsif (defined $opt->{$dtype}) {
     516    $param = $opt->{$dtype};
    566517} elsif (defined $opt->{"default"}) {
    567518    $param = $opt->{"default"};
    568519} else {
    569     $param = "";
     520    $param = "unknown";
    570521}
    571522return($param);
Note: See TracChangeset for help on using the changeset viewer.