2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-05-22 11:42:05 +00:00

support different minor version for kits

This commit is contained in:
Casandra Qiu 2016-11-16 15:11:40 -05:00
parent 761a8f8373
commit f231fd24f1
3 changed files with 67 additions and 25 deletions

View File

@ -56,7 +56,7 @@ The ``buildkit.conf`` file is a sample file that contains a description of all t
kitlicense=ILAN <== the default kit license string is "EPL"
kitdeployparams=pe.env <== pe.env has to define in the other_files dir.
**kitrepo** --- This stanza defines a Kit Package Repository. There must be at least one kitrepo stanza in a kit build file. If this kit need to support multiple OSes, user should create a separate repository for each OS. Also, no two repositories can be defined with the same OS name, major/minor version, and arch. ::
**kitrepo** --- This stanza defines a Kit Package Repository. There must be at least one kitrepo stanza in a kit build file. If this kit need to support multiple OSes, user should create a separate repository for each OS. Also, no two repositories can be defined with the same OS name, major version, and arch. ::
kitrepo:
kitrepoid=rhels6_x86_64
@ -70,6 +70,14 @@ The ``buildkit.conf`` file is a sample file that contains a description of all t
osmajorversion=11
osarch=x86_64
minor version can be support following format: ::
osminorversion=2 <<-- minor version has to be exactly matched to 2
osminorversion=>=2 <<-- minor version can be 2 or greater than 2
osminorversion=<=2 <<-- minor version can be 2 or less than 2
osminorversion=>2 <<-- minor version has to be greater than 2
osminorversion=<2 <<-- minor version has to be less than 2
**kitcomponent** --- This stanza defines one Kit Component. A kitcomponent definition is a way of specifying a subset of the product Kit that may be installed into an xCAT osimage. A kitcomponent may or may not be dependent on other kitcomponents.If user want to build a component which supports multiple OSes, need to create one kitcomponent stanza for each OS. ::
kitcomponent:

View File

@ -1390,12 +1390,13 @@ sub validate_bldkitconf
$full_kitname .= '-' . $::bldkit_config->{kit}{entries}[0]->{osmajorversion};
}
if (defined($::bldkit_config->{kit}{entries}[0]->{osminorversion})) {
my $kitminor = split /<=|>=|==|<|>/, $::bldkit_config->{kit}{entries}[0]->{osminorversion};
if ((!defined($::bldkit_config->{kit}{entries}[0]->{osbasename})) ||
(!defined($::bldkit_config->{kit}{entries}[0]->{osmajorversion}))) {
print "Error: Kit osminorversion attribute was specified but either Kit osbasename or Kit osmajorversion were not set. \n";
return 1;
}
$full_kitname .= '-' . $::bldkit_config->{kit}{entries}[0]->{osminorversion};
$full_kitname .= '-' . $kitminor;
}
if (defined($::bldkit_config->{kit}{entries}[0]->{osarch})) {
$full_kitname .= '-' . $::bldkit_config->{kit}{entries}[0]->{osarch};
@ -1500,12 +1501,14 @@ sub validate_bldkitconf
}
$reponame .= '-' . $kr->{osmajorversion};
if (defined($kr->{osminorversion})) {
my $krminor = split /<=|>=|==|<|>/, $kr->{osminorversion};
if ((defined($::bldkit_config->{kit}{entries}[0]->{osminorversion})) &&
($::bldkit_config->{kit}{entries}[0]->{osminorversion} ne
$kr->{osminorversion})) {
print "Warning: Kit osminorversion is set to \"$::bldkit_config->{kit}{entries}[0]->{osminorversion}\", but this does not match kitrepo $kr->{kitrepoid} osminorversion \"$kr->{osminorversion}\". Processing will continue, but verify that you do not have an error in your buildkit configuration file. \n";
}
$reponame .= '.' . $kr->{osminorversion};
$reponame .= '.' . $krminor;
$::bldkit_config->{kit}{entries}[0]->{osminorversion} = $krminor;
}
if ((defined($::bldkit_config->{kit}{entries}[0]->{osarch})) &&
($::bldkit_config->{kit}{entries}[0]->{osarch} ne
@ -1549,7 +1552,8 @@ sub validate_bldkitconf
$compname .= '-' . $repo{osbasename};
$compname .= '-' . $repo{osmajorversion};
if (defined($repo{osminorversion})) {
$compname .= '.' . $repo{osminorversion};
my $minorversion = split /<=|>=|==|<|>/, $repo{osminorversion};
$compname .= '.' . $minorversion;
}
$compname .= '-' . $repo{osarch};
$kc->{kitcompname} = $compname;
@ -1931,8 +1935,10 @@ sub validate_os
}
$osinfo =~ s/\,//;
my $repo_osinfo = "$repo->{osbasename}$repo->{osmajorversion}";
my $minorversion;
if (defined($repo->{osminorversion})) {
$repo_osinfo .= ".$repo->{osminorversion}";
$minorversion = split /<=|>=|==|<|>/, $repo->{osminorversion};
$repo_osinfo .= ".$minorversion";
}
$repo_osinfo .= "-$repo->{osarch} ";
my $mismatch_msg = "The local host is running $osinfo-$osarch. This does not match the Kit Repository \"$repo->{kitrepoid}\" data: $repo_osinfo";
@ -1968,7 +1974,7 @@ sub validate_os
return 1;
}
if (defined($repo->{osminorversion})) {
if (($repo->{osminorversion} ne $osminorversion) &&
if (($minorversion ne $osminorversion) &&
(!$compat_match)) {
print "$mismatch_msg \n";
if ($::VERBOSE) {
@ -3411,6 +3417,7 @@ sub kit_addpkgs
# - could be list of pkgdir s
my @pkgdirlist = split(",", $::PKGDIR);
print "$tmpdir_base\n";
# Cleanup - should have been removed when last command ran
# - but just in case
system("rm -Rf $tmpdir_base");
@ -3425,6 +3432,7 @@ sub kit_addpkgs
$kittarfile = abs_path($kittarfile);
foreach my $rpmdir (@pkgdirlist) {
print "rpmdir = $rmpdir\n";
if (!(-d $rpmdir)) {
print "The package directory $rpmdir could not be read. \n";
return 1;

View File

@ -1108,7 +1108,7 @@ sub read_kit_config
$key =~ s/\s+//g;
$value =~ s/\s+//g;
} else {
($key, $value) = split /=/, $line;
($key, $value) = split(/=/, $line,2);
}
}
@ -1803,6 +1803,24 @@ sub rmkit
}
sub check_minorversion
{
my $kitminor = shift;
my $osminor = shift;
if ($kitminor eq $osminor) {
return 0;
}
if (($kitminor =~ />/) || ($kitminor =~ /</) || ($kitminor =~ /==/)) {
if (eval ($osminor. $kitminor)) {
return 0;
}
}
return 1;
}
#-------------------------------------------------------
=head3 validate_os
@ -1844,12 +1862,11 @@ sub validate_os {
return 1;
}
if ($kitcomp->{osminorversion} and ($osimage->{minorversion} lt $kitcomp->{osminorversion})) {
# my %rsp;
# push@{ $rsp{data} }, "osimage $os is not compatible with kit component $kitcomp->{kitcompname} with attribute minorversion";
# xCAT::MsgUtils->message( "E", \%rsp, $::CALLBACK );
return 1;
if ($kitcomp->{osminorversion}) {
if (check_minorversion($kitcomp->{osminorversion}, $osimage->{minorversion}))
{
return 1;
}
}
if ($osimage->{arch} ne $kitcomp->{osarch} && $kitcomp->{osarch} ne 'noarch') {
@ -2149,11 +2166,14 @@ sub addkitcomp
return 1;
}
if ($kitcomps{$kitcomp}{osminorversion} and ($os{$osimage}{minorversion} lt $kitcomps{$kitcomp}{osminorversion})) {
my %rsp;
push @{ $rsp{data} }, "osimage $osimage is not compatible with kit component $kitcomp with attribute minorversion";
xCAT::MsgUtils->message("E", \%rsp, $callback);
return 1;
if ($kitcomps{$kitcomp}{osminorversion}) {
if (check_minorversion($kitcomps{$kitcomp}{osminorversion}, $os{$osimage}{minorversion}))
{
my %rsp;
push @{ $rsp{data} }, "osimage $osimage is not compatible with kit component $kitcomp with attribute minorversion";
xCAT::MsgUtils->message("E", \%rsp, $callback);
return 1;
}
}
if ($os{$osimage}{arch} ne $kitcomps{$kitcomp}{osarch} && $kitcomps{$kitcomp}{osarch} ne 'noarch') {
@ -3606,11 +3626,14 @@ sub chkkitcomp
return 1;
}
if ($kitcomps{$kitcomp}{osminorversion} and ($os{$osimage}{minorversion} lt $kitcomps{$kitcomp}{osminorversion})) {
my %rsp;
push @{ $rsp{data} }, "kit component $kitcomp is not compatible with osimage $osimage with attribute minorversion";
xCAT::MsgUtils->message("E", \%rsp, $callback);
return 1;
if ($kitcomps{$kitcomp}{osminorversion} ) {
if (check_minorversion($kitcomps{$kitcomp}{osminorversion}, $os{$osimage}{minorversion}))
{
my %rsp;
push @{ $rsp{data} }, "kit component $kitcomp is not compatible with osimage $osimage with attribute minorversion";
xCAT::MsgUtils->message("E", \%rsp, $callback);
return 1;
}
}
if ($os{$osimage}{arch} ne $kitcomps{$kitcomp}{osarch} && $kitcomps{$kitcomp}{osarch} ne 'noarch') {
@ -5080,8 +5103,11 @@ sub get_compat_kitreponames {
if (defined($kitrepo->{osmajorversion}) && $kitrepo->{osmajorversion} ne $osdistro->{majorversion}) {
next;
}
if (defined($kitrepo->{osminorversion}) && $osdistro->{minorversion} lt $kitrepo->{osminorversion} ) {
next;
if (defined($kitrepo->{osminorversion})) {
if (check_minorversion($kitrepo->{osminorversion},$osdistro->{minorversion}))
{
next;
}
}
if (defined($kitrepo->{osarch}) && $kitrepo->{osarch} ne $osdistro->{arch} && $kitrepo->{osarch} ne 'noarch') {
next;