mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-03 21:02:34 +00:00 
			
		
		
		
	Merge pull request #2004 from cxhong/kit
Support kitcomponent can be add to higher version of OS, I am ok.
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} ne $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} ne $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} ne $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}) && $kitrepo->{osminorversion} ne $osdistro->{minorversion}) {
 | 
			
		||||
            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