diff options
-rw-r--r-- | meta-oe/classes/socorro-syms.bbclass | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/meta-oe/classes/socorro-syms.bbclass b/meta-oe/classes/socorro-syms.bbclass index 7a7b20859..3f6ae6319 100644 --- a/meta-oe/classes/socorro-syms.bbclass +++ b/meta-oe/classes/socorro-syms.bbclass | |||
@@ -42,7 +42,7 @@ python symbol_file_preprocess() { | |||
42 | breakpad_sym_file_path = os.path.join(breakpad_syms_dir, sym_file_name) | 42 | breakpad_sym_file_path = os.path.join(breakpad_syms_dir, sym_file_name) |
43 | socorro_sym_file_path = os.path.join(socorro_syms_dir, sym_file_name) | 43 | socorro_sym_file_path = os.path.join(socorro_syms_dir, sym_file_name) |
44 | 44 | ||
45 | create_socorro_sym_file(breakpad_sym_file_path, socorro_sym_file_path) | 45 | create_socorro_sym_file(d, breakpad_sym_file_path, socorro_sym_file_path) |
46 | 46 | ||
47 | arrange_socorro_sym_file(socorro_sym_file_path, socorro_syms_dir) | 47 | arrange_socorro_sym_file(socorro_sym_file_path, socorro_syms_dir) |
48 | 48 | ||
@@ -50,7 +50,16 @@ python symbol_file_preprocess() { | |||
50 | } | 50 | } |
51 | 51 | ||
52 | 52 | ||
53 | def create_socorro_sym_file(breakpad_sym_file_path, socorro_sym_file_path): | 53 | def run_command(command, directory): |
54 | |||
55 | (output, error) = bb.process.run(command, cwd=directory) | ||
56 | if error: | ||
57 | raise bb.process.ExecutionError(command, error) | ||
58 | |||
59 | return output.rstrip() | ||
60 | |||
61 | |||
62 | def create_socorro_sym_file(d, breakpad_sym_file_path, socorro_sym_file_path): | ||
54 | 63 | ||
55 | # In the symbol file, all source files are referenced like the following. | 64 | # In the symbol file, all source files are referenced like the following. |
56 | # FILE 123 /path/to/some/File.cpp | 65 | # FILE 123 /path/to/some/File.cpp |
@@ -61,18 +70,19 @@ def create_socorro_sym_file(breakpad_sym_file_path, socorro_sym_file_path): | |||
61 | 70 | ||
62 | for line in breakpad_sym_file: | 71 | for line in breakpad_sym_file: |
63 | if line.startswith("FILE "): | 72 | if line.startswith("FILE "): |
64 | socorro_sym_file.write(socorro_file_reference(line)) | 73 | socorro_sym_file.write(socorro_file_reference(d, line)) |
65 | else: | 74 | else: |
66 | socorro_sym_file.write(line) | 75 | socorro_sym_file.write(line) |
67 | 76 | ||
68 | return | 77 | return |
69 | 78 | ||
70 | 79 | ||
71 | def socorro_file_reference(line): | 80 | def socorro_file_reference(d, line): |
72 | 81 | ||
73 | # The 3rd position is the file path. See example above. | 82 | # The 3rd position is the file path. See example above. |
74 | source_file_path = line.split()[2] | 83 | source_file_path = line.split()[2] |
75 | source_file_repo_path = repository_path(os.path.normpath(source_file_path)) | 84 | source_file_repo_path = repository_path( |
85 | d, os.path.normpath(source_file_path)) | ||
76 | 86 | ||
77 | # If the file could be found in any repository then replace it with the | 87 | # If the file could be found in any repository then replace it with the |
78 | # repository's path. | 88 | # repository's path. |
@@ -82,7 +92,7 @@ def socorro_file_reference(line): | |||
82 | return line | 92 | return line |
83 | 93 | ||
84 | 94 | ||
85 | def repository_path(source_file_path): | 95 | def repository_path(d, source_file_path): |
86 | 96 | ||
87 | if not os.path.isfile(source_file_path): | 97 | if not os.path.isfile(source_file_path): |
88 | return None | 98 | return None |
@@ -91,6 +101,14 @@ def repository_path(source_file_path): | |||
91 | (output, error) = bb.process.run("git status", | 101 | (output, error) = bb.process.run("git status", |
92 | cwd=os.path.dirname(source_file_path)) | 102 | cwd=os.path.dirname(source_file_path)) |
93 | if not error: | 103 | if not error: |
104 | # Make sure the git repository we just found wasn't the yocto repository | ||
105 | # itself, i.e. the root of the repository we're looking for must be a | ||
106 | # child of the build directory TOPDIR. | ||
107 | git_root_dir = run_command( | ||
108 | "git rev-parse --show-toplevel", os.path.dirname(source_file_path)) | ||
109 | if not git_root_dir.startswith(d.getVar("TOPDIR", True)): | ||
110 | return None | ||
111 | |||
94 | return git_repository_path(source_file_path) | 112 | return git_repository_path(source_file_path) |
95 | 113 | ||
96 | # Here we can add support for other VCSs like hg, svn, cvs, etc. | 114 | # Here we can add support for other VCSs like hg, svn, cvs, etc. |
@@ -99,15 +117,6 @@ def repository_path(source_file_path): | |||
99 | return None | 117 | return None |
100 | 118 | ||
101 | 119 | ||
102 | def run_command(command, directory): | ||
103 | |||
104 | (output, error) = bb.process.run(command, cwd=directory) | ||
105 | if error: | ||
106 | raise bb.process.ExecutionError(command, error) | ||
107 | |||
108 | return output.rstrip() | ||
109 | |||
110 | |||
111 | def is_local_url(url): | 120 | def is_local_url(url): |
112 | 121 | ||
113 | return \ | 122 | return \ |