Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(525)

Unified Diff: make_relative_solution

Issue 6287010: crosutils:Remove dead scripts (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/crosutils.git@master
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « list_installed_packages.sh ('k') | mk_arm_sd_image.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: make_relative_solution
diff --git a/make_relative_solution b/make_relative_solution
deleted file mode 100755
index d12159e1b247cd2dfc46ae05959b526aae8d6c7b..0000000000000000000000000000000000000000
--- a/make_relative_solution
+++ /dev/null
@@ -1,207 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Generates a pinned solutions file with relative git repository URLs.
-
-make_relative_solution reads a pinned solution file generated by
-'gclient revinfo --snapshot' and writes to stdout a pinned solution file
-with relative git repository URLs.
-
-
-The resulting solution file can be used to check out a fixed version of
-a gclient set of repositories. The base URL to fetch from can be changed
-by editing one line in the generated solution file.
-"""
-
-import optparse
-import sys
-
-
-def ReadSnapshot(filename):
- """Reads a gclient revinfo snapshot file.
-
- Minimal verification of the structure of the file is performed.
-
- Args:
- filename: The name of a snapshot file to read.
-
- Returns:
- The solutions array parsed from the snapshot file.
- """
-
- env = {}
- execfile(filename, env)
-
- assert 'solutions' in env
- assert env['solutions']
-
- return env['solutions']
-
-
-def BaseRepository(url):
- """Finds the base repository path.
-
- This only works if the top level repository is not in a subdirectory relative
- to the other repositories on the server.
-
- Args:
- url: git repository url
-
- Returns:
- The prefix of the URL that does not contain the repository name and SHA.
- """
-
- base, versioned_repository = url.rsplit('/', 1)
-
- assert base and versioned_repository
- return base
-
-
-def WriteBaseURL(base, solution):
- print ' "%s": "%s",' % (solution['name'], base)
-
-
-def IsRelativeRepository(base, url):
- return url.startswith(base)
-
-
-def RelativeRepository(base, url):
- if IsRelativeRepository(base, url):
- return url[len(base):]
- else:
- return url
-
-
-def RelativeDep(base, dep):
- path, repository = dep
-
- return (path,
- RelativeRepository(base, repository),
- IsRelativeRepository(base, repository))
-
-
-def RelativeDeps(base, solution):
- return [RelativeDep(base, dep) for dep in solution['custom_deps'].items()]
-
-
-def WritePinnedDep(name, dep, indent):
- """Writes a pinned dep.
-
- The output is indented so that the URLs all line up for ease of reading. If
- the dep is for a relative git repository then we emit the base_url lookup as
- well.
-
- Args:
- name: The name of the solution that is being written out.
- dep: The relative dep that is to be written out.
- indent: The total number of characters to use for the path component.
-
- Returns:
- Nothing
- """
-
- path, repository, relative = dep
- remainder = path.partition('/')[2]
- spaces = indent - len(path)
-
- if remainder == 'deps':
- return
-
- if relative:
- print ' "%s": %*sbase_url["%s"] + "%s",' % (path,
- spaces, '',
- name,
- repository)
- else:
- print ' "%s": %*s"%s",' % (path,
- spaces, '',
- repository)
-
-
-def WritePinnedSolution(solution):
- """Writes out a pinned and solution file with relative repository paths.
-
- The relative repository paths make it easier for a user to modify where
- they are pulling source from.
-
- Args:
- solution: gclient solution object.
-
- Returns:
- Nothing
- """
-
- base = BaseRepository(solution['url'])
- url = RelativeRepository(base, solution['url'])
- deps = RelativeDeps(base, solution)
- indent = max(len(dep[0]) for dep in deps)
-
- deps.sort(key=lambda dep: dep[1])
-
- print (' { "name" : "%s",\n'
- ' "url" : base_url["%s"] + "%s",\n'
- ' "custom_deps" : {') % (solution['name'],
- solution['name'],
- url)
-
- for dep in deps:
- WritePinnedDep(solution['name'], dep, indent)
-
- print (' },\n'
- ' },')
-
-
-def main(argv):
- usage = 'Usage: %prog [options] filename'
- option_parser = optparse.OptionParser(usage=usage)
- option_parser.disable_interspersed_args()
- option_parser.add_option('-s', '--substitute',
- action='store_true',
- dest='substitute',
- default=False,
- help='substitute a new base git URL')
- option_parser.add_option('-b', '--base',
- dest='base',
- default='http://src.chromium.org/git',
- metavar='URL',
- help='base git URL to substitute [%default]')
-
- options, args = option_parser.parse_args(argv[1:])
-
- if len(args) != 1:
- option_parser.print_help()
- return 1
-
- filename = args.pop(0)
- solutions = ReadSnapshot(filename)
-
- print ('#\n'
- '# Autogenerated pinned gclient solution file. This file was\n'
- '# created by running make_relative_solution.\n'
- '#\n'
- '\n'
- 'base_url = {')
-
- for solution in solutions:
- if options.substitute:
- base = options.base
- else:
- base = BaseRepository(solution['url'])
-
- WriteBaseURL(base, solution)
-
- print ('}\n'
- '\n'
- 'solutions = [')
-
- for solution in solutions:
- WritePinnedSolution(solution)
-
- print ']\n'
-
-
-if __name__ == '__main__':
- main(sys.argv)
« no previous file with comments | « list_installed_packages.sh ('k') | mk_arm_sd_image.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698