Commit 35e20b47 authored by Olivier Crête's avatar Olivier Crête 👻
Browse files

source: Take sources from local directory instead of downloading if possible

This will take the sources from the cerbero tarball instead of the Internet
if the recipes were put into the tarball.

https://bugzilla.gnome.org/show_bug.cgi?id=742830
parent 9f49bcd7
......@@ -99,10 +99,18 @@ class Tarball (Source):
self.download_path = os.path.join(self.repo_dir, self.tarball_name)
def fetch(self):
m.action(_('Fetching tarball %s to %s') %
(self.url, self.download_path))
if not os.path.exists(self.repo_dir):
os.makedirs(self.repo_dir)
cached_file = os.path.join(self.config.cached_sources,
self.package_name, self.tarball_name)
if os.path.isfile(cached_file):
m.action(_('Copying cached tarball from %s to %s instead of %s') %
(cached_file, self.download_path, self.url))
shutil.copy(cached_file, self.download_path)
return
m.action(_('Fetching tarball %s to %s') %
(self.url, self.download_path))
shell.download(self.url, self.download_path, check_cert=False)
def extract(self):
......@@ -143,14 +151,24 @@ class GitCache (Source):
def fetch(self, checkout=True):
if not os.path.exists(self.repo_dir):
git.init(self.repo_dir)
# add remotes from both upstream and config so user can easily
# cherry-pick patches between branches
for remote, url in self.remotes.iteritems():
git.add_remote(self.repo_dir, remote, url)
for remote, url in self.config.recipe_remotes(self.name).iteritems():
git.add_remote(self.repo_dir, remote, url)
# fetch remote branches
git.fetch(self.repo_dir, fail=False)
# First try to get the sources from the cached dir if there is one
cached_dir = os.path.join(self.config.cached_sources, self.name)
if os.path.isdir(os.path.join(cached_dir, ".git")):
for remote, url in self.remotes.iteritems():
git.add_remote(self.repo_dir, remote, "file://" + cached_dir)
for remote, url in self.config.recipe_remotes(self.name).iteritems():
git.add_remote(self.repo_dir, remote, "file://" + cached_dir)
git.fetch(self.repo_dir, fail=False)
else:
# add remotes from both upstream and config so user can easily
# cherry-pick patches between branches
for remote, url in self.remotes.iteritems():
git.add_remote(self.repo_dir, remote, url)
for remote, url in self.config.recipe_remotes(self.name).iteritems():
git.add_remote(self.repo_dir, remote, url)
# fetch remote branches
git.fetch(self.repo_dir, fail=False)
if checkout:
commit = self.config.recipe_commit(self.name) or self.commit
git.checkout(self.repo_dir, commit)
......@@ -307,6 +325,14 @@ class Svn(Source):
def fetch(self):
if os.path.exists(self.repo_dir):
shutil.rmtree(self.repo_dir)
cached_dir = os.path.join(self.config.cached_sources, self.package_name)
if os.path.isdir(os.path.join(cached_dir, ".svn")):
m.action(_('Copying cached repo from %s to %s instead of %s') %
(cached_dir, self.repo_dir, self.url))
shell.copy_dir(cached_dir, self.repo_dir)
return
os.makedirs(self.repo_dir)
svn.checkout(self.url, self.repo_dir)
svn.update(self.repo_dir, self.revision)
......
......@@ -92,7 +92,7 @@ class Config (object):
'recipes_remotes', 'ios_platform', 'extra_build_tools',
'distro_packages_install', 'interactive',
'target_arch_flags', 'sysroot', 'isysroot',
'extra_lib_path']
'extra_lib_path', 'cached_sources']
def __init__(self):
self._check_uninstalled()
......@@ -286,6 +286,7 @@ class Config (object):
self.set_property('prefix', None)
self.set_property('sources', None)
self.set_property('local_sources', None)
self.set_property('cached_sources', self._relative_path('sources'))
self.set_property('git_root', DEFAULT_GIT_ROOT)
self.set_property('allow_parallel_build', DEFAULT_ALLOW_PARALLEL_BUILD)
self.set_property('host', None)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment