diff options
Diffstat (limited to 'tools/scripts')
-rw-r--r-- | tools/scripts/git_submodule.py | 49 | ||||
-rwxr-xr-x | tools/scripts/init-repository.py | 2 | ||||
-rw-r--r-- | tools/scripts/version_resolver.py | 19 |
3 files changed, 23 insertions, 47 deletions
diff --git a/tools/scripts/git_submodule.py b/tools/scripts/git_submodule.py index f3508eac9..bc311f97b 100644 --- a/tools/scripts/git_submodule.py +++ b/tools/scripts/git_submodule.py @@ -90,12 +90,9 @@ class DEPSParser: continue if len(rev) == 40: # Length of a git shasum - submodule.shasum = rev + submodule.ref = rev else: - # Try to find out the git branch. - branchMatch = re.search('/branches/((chromium/)?[^/]+)', repo) - if branchMatch: - submodule.ref = 'refs/branch-heads/' + branchMatch.group(1) + sys.exit("Invalid shasum: " + str(rev)) submodules.append(submodule) return submodules @@ -109,12 +106,11 @@ class DEPSParser: return submodules class Submodule: - def __init__(self, path='', url='', shasum='', os=[], ref=''): + def __init__(self, path='', url='', ref='', os=[]): self.path = path self.url = url - self.shasum = shasum + self.ref = ref self.os = os - self.ref = '' def matchesOS(self): if not self.os: @@ -139,35 +135,34 @@ class Submodule: def findShaAndCheckout(self): oldCwd = os.getcwd() os.chdir(self.path) - error = 0 - if self.ref: - # Fetch the ref we parsed from the DEPS file. - error = subprocessCall(['git', 'fetch', 'origin', self.ref]) - if error != 0: - print('ERROR: Could not fetch from upstream branch ' + self.ref) - return error - error = subprocessCall(['git', 'checkout', 'FETCH_HEAD']); + # Fetch the shasum we parsed from the DEPS file. + error = subprocessCall(['git', 'fetch', 'origin', self.ref]) + if error != 0: + print('ERROR: Could not fetch ' + self.ref + ' from upstream origin.') + return error + + error = subprocessCall(['git', 'checkout', 'FETCH_HEAD']); current_shasum = subprocessCheckOutput(['git', 'rev-parse', 'HEAD']).strip() current_tag = subprocessCheckOutput(['git', 'name-rev', '--tags', '--name-only', current_shasum]).strip() if current_tag == resolver.currentVersion(): # We checked out a tagged version of chromium. - self.shasum = current_shasum + self.ref = current_shasum - if not self.shasum: + if not self.ref: # No shasum could be deduced, use the submodule shasum. os.chdir(oldCwd) line = subprocessCheckOutput(['git', 'submodule', 'status', self.path]) os.chdir(self.path) line = line.lstrip(' -') - self.shasum = line.split(' ')[0] + self.ref = line.split(' ')[0] - if not self.shasum.startswith(current_shasum): + if not self.ref.startswith(current_shasum): # In case HEAD differs check out the actual shasum we require. subprocessCall(['git', 'fetch']) - error = subprocessCall(['git', 'checkout', self.shasum]) + error = subprocessCall(['git', 'checkout', self.ref]) os.chdir(oldCwd) return error @@ -207,10 +202,10 @@ class Submodule: subprocessCall(['git', 'submodule', 'init', self.path]) subprocessCall(['git', 'submodule', 'update', self.path]) - if self.findShaAndCheckout() != 0: - sys.exit("!!! initialization failed !!!") - if '3rdparty_upstream' in os.path.abspath(self.path): + if self.findShaAndCheckout() != 0: + sys.exit("!!! initialization failed !!!") + # Add baseline commit for upstream repository to be able to reset. os.chdir(self.path) commit = subprocessCheckOutput(['git', 'rev-list', '--max-count=1', 'HEAD']) @@ -238,8 +233,7 @@ class Submodule: submodules = resolver.readSubmodules() print 'DEPS file provides the following submodules:' for submodule in submodules: - submodule_ref = submodule.shasum - print '{:<80}'.format(submodule.path) + '{:<120}'.format(submodule.url) + submodule_ref + print '{:<80}'.format(submodule.path) + '{:<120}'.format(submodule.url) + submodule.ref else: # Try .gitmodules since no ref has been specified if not os.path.isfile('.gitmodules'): return [] @@ -274,6 +268,5 @@ class Submodule: submodules = self.readSubmodules() for submodule in submodules: submodule.initialize() - if self.ref: - subprocessCall(['git', 'commit', '-a', '--amend', '--no-edit']) + subprocessCall(['git', 'commit', '-a', '--amend', '--no-edit']) os.chdir(oldCwd) diff --git a/tools/scripts/init-repository.py b/tools/scripts/init-repository.py index 1141ee983..3425649ff 100755 --- a/tools/scripts/init-repository.py +++ b/tools/scripts/init-repository.py @@ -110,7 +110,7 @@ def initUpstreamSubmodules(): ninjaSubmodule = GitSubmodule.Submodule() ninjaSubmodule.path = 'src/3rdparty_upstream/ninja' - ninjaSubmodule.shasum = ninja_shasum + ninjaSubmodule.ref = ninja_shasum ninjaSubmodule.url = ninja_url ninjaSubmodule.os = 'all' ninjaSubmodule.initialize() diff --git a/tools/scripts/version_resolver.py b/tools/scripts/version_resolver.py index d3d82094a..2430555d9 100644 --- a/tools/scripts/version_resolver.py +++ b/tools/scripts/version_resolver.py @@ -86,23 +86,6 @@ def readReleaseChannels(): channels[os].append({ 'channel': ver['channel'], 'version': ver['version'], 'branch': ver['true_branch'] }) return channels -def sanityCheckModules(submodules): - submodule_dict = {} - sys.stdout.write('\nverifying submodule refs.') - for submodule in submodules: - sys.stdout.flush() - if submodule.ref: - sys.stdout.write('.') - result = subprocess.check_output(['git', 'ls-remote', submodule.url, submodule.ref]) - if submodule.ref not in result: - # We could fall back to the git shasum if the parsed remote ref does not exist in - # the git repository but that would most certainly be outdated, so bail out here. - sys.exit('\nERROR: No valid remote found!') - sys.stdout.flush() - submodule_dict[submodule.path] = submodule - print('done.\n') - return list(submodule_dict.values()) - def readSubmodules(): git_deps = subprocess.check_output(['git', 'show', chromium_version +':.DEPS.git']) @@ -119,7 +102,7 @@ def readSubmodules(): if path in submodule_dict: del submodule_dict[path] - return sanityCheckModules(submodule_dict.values()) + return submodule_dict.values() def findSnapshotBaselineSha1(): if not os.path.isdir(snapshot_src_dir): |