From d1084c78e7fbe3910b36043c8b9c2b9274db90ca Mon Sep 17 00:00:00 2001 From: Daniel Markus Date: Thu, 26 Mar 2015 09:20:06 +0100 Subject: socorro-syms: Add support for local repositories This socorro-syms functionality tries to extract the host name out of the source code repository origin. This causes problems when the origin is a local repository. The solution is to look for the origin in two steps. If the origin in the first step is a local directory we assume it is a temporary download repository. In the second step we look for the origin to that download repository and if that also redirects to a local repository, we provide the absolute path instead of a Socorro repository link. Signed-off-by: Daniel Markus Signed-off-by: Martin Jansa --- meta-oe/classes/socorro-syms.bbclass | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/meta-oe/classes/socorro-syms.bbclass b/meta-oe/classes/socorro-syms.bbclass index c2729527d6..0312031d0d 100644 --- a/meta-oe/classes/socorro-syms.bbclass +++ b/meta-oe/classes/socorro-syms.bbclass @@ -108,6 +108,12 @@ def run_command(command, directory): return output.rstrip() +def is_local_url(url): + + return \ + url.startswith("file:") or url.startswith("/") or url.startswith("./") + + def git_repository_path(source_file_path): import re @@ -125,12 +131,18 @@ def git_repository_path(source_file_path): # The URL could be a local download directory. If so, get the URL again # using the local directory's config file. - if os.path.isdir(source_long_url): + if is_local_url(source_long_url): git_config_file = os.path.join(source_long_url, "config") source_long_url = run_command( "git config --file %s --get remote.origin.url" % git_config_file, source_file_dir) + # If also the download directory redirects to a local git directory, + # then we're probably using source code from a local debug branch which + # won't be accessible by Socorro. + if is_local_url(source_long_url): + return None + # The URL can have several formats. A full list can be found using # git help clone. Extract the server part with a regex. url_match = re.search(".*(://|@)([^:/]*).*", source_long_url) -- cgit 1.2.3-korg