mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-31 03:12:30 +00:00 
			
		
		
		
	support different minor version for kits
This commit is contained in:
		| @@ -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: | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user