ostbuild: Make separate .lastfetch files for e.g. gtk2 and gtk3

This ensures we don't need to check out any git repository which is
built twice under different names.
This commit is contained in:
Colin Walters 2012-01-29 17:24:20 -05:00
parent 6d51f85667
commit 102f6a7f43
1 changed files with 7 additions and 6 deletions

View File

@ -41,7 +41,7 @@ class OstbuildResolve(builtins.Builtin):
parsed = urlparse.urlsplit(uri) parsed = urlparse.urlsplit(uri)
return os.path.join(self.mirrordir, prefix, keytype, parsed.scheme, parsed.netloc, parsed.path[1:]) return os.path.join(self.mirrordir, prefix, keytype, parsed.scheme, parsed.netloc, parsed.path[1:])
def _ensure_vcs_mirror(self, keytype, uri, branch): def _ensure_vcs_mirror(self, name, keytype, uri, branch):
mirror = self._get_mirrordir(keytype, uri) mirror = self._get_mirrordir(keytype, uri)
tmp_mirror = mirror + '.tmp' tmp_mirror = mirror + '.tmp'
if os.path.isdir(tmp_mirror): if os.path.isdir(tmp_mirror):
@ -50,7 +50,7 @@ class OstbuildResolve(builtins.Builtin):
run_sync(['git', 'clone', '--mirror', uri, tmp_mirror]) run_sync(['git', 'clone', '--mirror', uri, tmp_mirror])
run_sync(['git', 'config', 'gc.auto', '0'], cwd=tmp_mirror) run_sync(['git', 'config', 'gc.auto', '0'], cwd=tmp_mirror)
os.rename(tmp_mirror, mirror) os.rename(tmp_mirror, mirror)
last_fetch_path = mirror + '.lastfetch' last_fetch_path = mirror + '.%s-lastfetch' % (name, )
if os.path.exists(last_fetch_path): if os.path.exists(last_fetch_path):
f = open(last_fetch_path) f = open(last_fetch_path)
last_fetch_contents = f.read() last_fetch_contents = f.read()
@ -79,7 +79,7 @@ class OstbuildResolve(builtins.Builtin):
(sub_checksum, sub_name) = line.split(' ', 1) (sub_checksum, sub_name) = line.split(' ', 1)
sub_url = run_sync_get_output(['git', 'config', '-f', '.gitmodules', sub_url = run_sync_get_output(['git', 'config', '-f', '.gitmodules',
'submodule.%s.url' % (sub_name, )], cwd=tmp_checkout) 'submodule.%s.url' % (sub_name, )], cwd=tmp_checkout)
self._ensure_vcs_mirror(keytype, sub_url, sub_checksum) self._ensure_vcs_mirror(name + '-' + sub_name, keytype, sub_url, sub_checksum)
shutil.rmtree(tmp_checkout) shutil.rmtree(tmp_checkout)
f = open(last_fetch_path, 'w') f = open(last_fetch_path, 'w')
f.write(current_vcs_version + '\n') f.write(current_vcs_version + '\n')
@ -157,7 +157,7 @@ class OstbuildResolve(builtins.Builtin):
if not found: if not found:
fatal("Unknown component %r" % (component_name, )) fatal("Unknown component %r" % (component_name, ))
(keytype, uri) = self._parse_src_key(component['src']) (keytype, uri) = self._parse_src_key(component['src'])
mirrordir = self._ensure_vcs_mirror(keytype, uri, component['branch']) mirrordir = self._ensure_vcs_mirror(component_name, keytype, uri, component['branch'])
log("Running git fetch for %s" % (component['name'], )) log("Running git fetch for %s" % (component['name'], ))
run_sync(['git', 'fetch'], cwd=mirrordir, log_initiation=False) run_sync(['git', 'fetch'], cwd=mirrordir, log_initiation=False)
else: else:
@ -165,11 +165,12 @@ class OstbuildResolve(builtins.Builtin):
for component in self.resolved_components: for component in self.resolved_components:
(keytype, uri) = self._parse_src_key(component['src']) (keytype, uri) = self._parse_src_key(component['src'])
name = component['name']
try: try:
fetch_components.index(component['name']) fetch_components.index(name)
mirrordir = self._get_mirrordir(keytype, uri) mirrordir = self._get_mirrordir(keytype, uri)
except ValueError, e: except ValueError, e:
mirrordir = self._ensure_vcs_mirror(keytype, uri, component['branch']) mirrordir = self._ensure_vcs_mirror(name, keytype, uri, component['branch'])
revision = buildutil.get_git_version_describe(mirrordir, revision = buildutil.get_git_version_describe(mirrordir,
component['branch']) component['branch'])
component['revision'] = revision component['revision'] = revision