summaryrefslogtreecommitdiffstats
path: root/src/build/tools/sbeGitTool.pl
diff options
context:
space:
mode:
Diffstat (limited to 'src/build/tools/sbeGitTool.pl')
-rwxr-xr-xsrc/build/tools/sbeGitTool.pl332
1 files changed, 0 insertions, 332 deletions
diff --git a/src/build/tools/sbeGitTool.pl b/src/build/tools/sbeGitTool.pl
deleted file mode 100755
index 4bb70348..00000000
--- a/src/build/tools/sbeGitTool.pl
+++ /dev/null
@@ -1,332 +0,0 @@
-#! /usr/bin/perl
-# IBM_PROLOG_BEGIN_TAG
-# This is an automatically generated prolog.
-#
-# $Source: src/build/tools/sbeGitTool.pl $
-#
-# OpenPOWER sbe Project
-#
-# Contributors Listed Below - COPYRIGHT 2016
-#
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-#
-# IBM_PROLOG_END_TAG
-
-use strict;
-#use lib "$ENV{'PERLMODULES'}";
-use lib "sbe/build/tools/perl.modules";
-use Getopt::Long qw(:config pass_through);
-use Data::Dumper;
-use Cwd;
-use gitUtil;
-
-# Global variables & constants
-my $debug = 0;
-my $help = 0;
-my %globals = ();
-my @references = ();
-my @patchList = ();
-my @commits = ();
-my $patches = "";
-my $sbbase = "";
-my $sbname = "";
-my $sbrc = "";
-my $release = "";
-
-my %commands = ( "extract" => \&execute_extract,
- "get-commits" => \&execute_get_commits);
-
-# Handle input command
-GetOptions("debug!" => \$debug,
- "help" => \$help);
-
-if ($help)
-{
- execute_help();
-}
-else
-{
- my $command = shift @ARGV;
- if ($commands{$command})
- {
- &{$commands{$command}}();
- }
- else
- {
- execute_help();
- }
-}
-
-foreach my $arg (@ARGV)
-{
- print "Unprocessed arg: $arg\n" if $debug;
-}
-
-############################## Begin Actions ##################################
-
-sub execute_help
-{
- my $command = shift @ARGV;
-
- if ($command eq "")
- {
- print "sbeGitTool\n";
- print " Run FSP-CI from a set of git commits\n";
- print "\n";
- print " Syntax:\n";
- print " sbeGitTool <tool> [options]\n";
- print "\n";
- print " Available subtools:\n";
- foreach my $key (sort keys %commands)
- {
- print " $key\n";
- }
- print "\n";
- print " Global options:\n";
- print " --debug Enable debug mode.\n";
- print " --help Display help on a specific tool.\n";
- print "\n";
- print " Note: Generally a <commit> can be any git or gerrit\n";
- print " reference. A git commit number, tag, branch, or\n";
- print " a gerrit change-id are all valid.\n";
- }
- elsif (not defined $commands{$command})
- {
- die "Unknown subcommand: $command.\n";
- }
- else
- {
- my %help = (
- "extract" =>
-q(
- Create the SBE binaries with the patch and its CMVC/GIT dependencies.
-
- Options:
- --patches=<changeId:patch-set> CSV of changeId:patch-set's [required].
- --sbbase=<full-path-to-sb-base> Sandbox base for FSP-CI [required].
- --sbname=<name> Sandbox name [required].
- --rc=<rc file name> RC file for the sandbox with absolute path [optional].
-),
- "get-commits" =>
-q(
- Given a patch, find the corresponding commit id.
-
- Options:
- --patches=<changeId:patch-set> CSV of changeId:patch-set's [required].
- --sbbase=<full-path-to-sb-base> Sandbox base for FSP-CI [required].
- --sbname=<name> Sandbox name [required].
-)
- );
-
- print "sbeGitTool $command:";
- print $help{$command};
- }
-}
-
-sub execute_get_commits
-{
-
- # Set GIT environment
- git_environ_init();
-
- # Obtain the list of patches
- retrivePatchList();
-
- # Fetch the commits for the patches
- fetchCommits();
-
- # Prepare commit string
- my $commitStr = prepareCommitStr();
-
- print "The set of commits: $commitStr" if $debug;
- print $commitStr;
- return $commitStr;
-}
-
-sub execute_extract
-{
- # Set GIT environment
- git_environ_init();
-
- # Obtain the list of patches
- retrivePatchList();
-
- # Fetch the references for the patches
- fetchRefs();
-
- # Apply the patches on the GIT repo
- applyRefs();
-
- # Compile the SBE and copy binaries to sandbox
- compileAndCopy();
-}
-
-sub git_environ_init
-{
- # Handle the i/p to the function
- GetOptions("patches:s" => \$patches,
- "sbbase:s" => \$sbbase,
- "sbname:s" => \$sbname,
- "rc:s" => \$sbrc);
-
- die "Missing patch list" if ($patches eq "");
- die "Missing sandbox base path" if ($sbbase eq "");
- die "Missing sandbox name" if ($sbname eq "");
-
- # Set global variables
- $globals{sandbox} = $sbbase."/".$sbname;
- $globals{sbe_git_root} = $globals{sandbox}."/git-ci";
-
- print "Sandbox: $globals{sandbox}\n" if $debug;
- print "GIT repository path: $globals{sbe_git_root}\n" if $debug;
-
- chdir($globals{sbe_git_root});
- die "ERROR $?: Invalid GIT repository path in the sandbox" if $? ;
-}
-
-sub retrivePatchList
-{
- # Parse out the CSV patch list
- @patchList = split(/,+/, $patches);
-
- print ">>>Patches\n" if $debug;
- print Dumper @patchList if $debug;
- print "<<<End of Patches\n" if $debug;
-}
-
-sub fetchRefs
-{
- my $currentRef = "";
- my $validPatchCount = 0;
-
- foreach my $patch (@patchList)
- {
- my ($changeId,$patchSet) = split(":",$patch);
- if (gitUtil::gerritIsPatch($changeId))
- {
- $validPatchCount = $validPatchCount + 1;
- print "Fetching reference for the patch : $patch \n" if $debug;
- if (gitUtil::patchMergeStatus($changeId) == 0)
- {
- my $currentRef = gitUtil::gerritQueryReference($changeId, $patchSet);
- push @references, $currentRef;
- print "(patchset -> reference) = $patch -> $currentRef\n" if $debug;
- }
- }
- else
- {
- print "\n Warning : Patchset $patch is invalid.. Continuing to check if there is any other valid patch \n";
- }
- }
- die "ERROR: No valid patches given..\n" if ($validPatchCount == 0);
-}
-
-sub applyRefs
-{
- my $statusFile = $globals{sbe_git_root}."/patchApply.status";
-
- foreach my $ref (@references)
- {
- print "Cherrypicking reference $ref \n" if $debug;
- open SBWORKON, " | ./sb workon";
- print SBWORKON "git fetch gerrit $ref && echo \"Fetch Done \" > $statusFile \n";
- #print SBWORKON "git cherry-pick FETCH_HEAD && echo \"Cherry-pick Done \" >> $statusFile \n"; // will be reused once appropriate support is there
- print SBWORKON "git checkout FETCH_HEAD && echo \"Checkout Done \" >> $statusFile \n";
- print SBWORKON "exit \n";
- close SBWORKON;
-
- print "\nChecking cherrypick status for $ref...\n" if $debug;
- my $ch_status = `cat $statusFile`;
- if( ($ch_status =~ m/Fetch/) && ($ch_status =~ m/Checkout/))
- {
- print "Checkout successful\n";
- }
- else
- {
- die "ERROR: Checkout of $ref failed\n";
- }
- }
-}
-
-sub compileAndCopy
-{
- my $statusFile = $globals{sbe_git_root}."/compile.status";
- my $compile_path = $globals{sbe_git_root};
-
- print "Compiling and copying the generated binaries to sandbox\n" if $debug;
- open SBWORKON, " | ./sb workon";
- print SBWORKON "cd $compile_path \n";
- print SBWORKON "make install && echo \"Compile Passed\" > $statusFile \n";
- print SBWORKON "export SANDBOXBASE=$globals{sandbox} \n";
- print SBWORKON "cd $globals{sbe_git_root} \n";
- print SBWORKON "./sb prime --sb $sbname --no_build && echo \"Prime Passed\" >> $statusFile \n";
- print SBWORKON "exit \n";
- close SBWORKON;
-
- print "\nChecking compile status...\n" if $debug;
- my $compile_status = `cat $statusFile | grep "Compile"`;
- if ($compile_status =~ m/Compile/)
- {
- print "SBE compile successful\n";
- }
- else
- {
- die "ERROR: SBE compile failed\n";
- }
-
- print "\nChecking sandbox status...\n" if $debug;
- my $sb_status = `cat $statusFile | grep "Prime"`;
- if ($sb_status =~ m/Prime/)
- {
- print "SBE prime successful\n";
- }
- else
- {
- die "ERROR: SBE prime failed\n";
- }
-}
-
-sub fetchCommits
-{
- my $currentCommit = "";
-
- foreach my $patch (@patchList)
- {
- my ($changeId,$patchSet) = split(":",$patch);
- if (gitUtil::gerritIsPatch($changeId))
- {
- print "Fetching commit for the patch : $patch \n" if $debug;
- my $currentCommit = gitUtil::gerritQueryCommit($changeId, $patchSet);
- push @commits, $currentCommit;
- print "(patchset -> commit) = $patch -> $currentCommit\n" if $debug;
- }
- else
- {
- print "\n Warning : Patchset $patch is invalid.. Continuing to check if there is any other valid patch \n";
- }
- }
- die "ERROR: No valid patches given..\n" if (scalar @commits == 0);
-}
-
-sub prepareCommitStr
-{
- my $commitStr = "";
-
- foreach my $commit (@commits)
- {
- $commitStr = $commitStr.",".$commit;
- }
- $commitStr =~ s/^,//g;
- return $commitStr;
-}
OpenPOWER on IntegriCloud