diff options
Diffstat (limited to 'meta/classes/externalsrc.bbclass')
-rw-r--r-- | meta/classes/externalsrc.bbclass | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass index dd09395788..3d6b80bee2 100644 --- a/meta/classes/externalsrc.bbclass +++ b/meta/classes/externalsrc.bbclass | |||
@@ -68,6 +68,7 @@ python () { | |||
68 | url_data = fetch.ud[url] | 68 | url_data = fetch.ud[url] |
69 | parm = url_data.parm | 69 | parm = url_data.parm |
70 | if (url_data.type == 'file' or | 70 | if (url_data.type == 'file' or |
71 | url_data.type == 'npmsw' or | ||
71 | 'type' in parm and parm['type'] == 'kmeta'): | 72 | 'type' in parm and parm['type'] == 'kmeta'): |
72 | local_srcuri.append(url) | 73 | local_srcuri.append(url) |
73 | 74 | ||
@@ -190,6 +191,7 @@ def srctree_hash_files(d, srcdir=None): | |||
190 | import shutil | 191 | import shutil |
191 | import subprocess | 192 | import subprocess |
192 | import tempfile | 193 | import tempfile |
194 | import hashlib | ||
193 | 195 | ||
194 | s_dir = srcdir or d.getVar('EXTERNALSRC') | 196 | s_dir = srcdir or d.getVar('EXTERNALSRC') |
195 | git_dir = None | 197 | git_dir = None |
@@ -197,6 +199,10 @@ def srctree_hash_files(d, srcdir=None): | |||
197 | try: | 199 | try: |
198 | git_dir = os.path.join(s_dir, | 200 | git_dir = os.path.join(s_dir, |
199 | subprocess.check_output(['git', '-C', s_dir, 'rev-parse', '--git-dir'], stderr=subprocess.DEVNULL).decode("utf-8").rstrip()) | 201 | subprocess.check_output(['git', '-C', s_dir, 'rev-parse', '--git-dir'], stderr=subprocess.DEVNULL).decode("utf-8").rstrip()) |
202 | top_git_dir = os.path.join(s_dir, subprocess.check_output(['git', '-C', d.getVar("TOPDIR"), 'rev-parse', '--git-dir'], | ||
203 | stderr=subprocess.DEVNULL).decode("utf-8").rstrip()) | ||
204 | if git_dir == top_git_dir: | ||
205 | git_dir = None | ||
200 | except subprocess.CalledProcessError: | 206 | except subprocess.CalledProcessError: |
201 | pass | 207 | pass |
202 | 208 | ||
@@ -210,7 +216,17 @@ def srctree_hash_files(d, srcdir=None): | |||
210 | env = os.environ.copy() | 216 | env = os.environ.copy() |
211 | env['GIT_INDEX_FILE'] = tmp_index.name | 217 | env['GIT_INDEX_FILE'] = tmp_index.name |
212 | subprocess.check_output(['git', 'add', '-A', '.'], cwd=s_dir, env=env) | 218 | subprocess.check_output(['git', 'add', '-A', '.'], cwd=s_dir, env=env) |
213 | sha1 = subprocess.check_output(['git', 'write-tree'], cwd=s_dir, env=env).decode("utf-8") | 219 | git_sha1 = subprocess.check_output(['git', 'write-tree'], cwd=s_dir, env=env).decode("utf-8") |
220 | submodule_helper = subprocess.check_output(['git', 'submodule--helper', 'list'], cwd=s_dir, env=env).decode("utf-8") | ||
221 | for line in submodule_helper.splitlines(): | ||
222 | module_dir = os.path.join(s_dir, line.rsplit(maxsplit=1)[1]) | ||
223 | if os.path.isdir(module_dir): | ||
224 | proc = subprocess.Popen(['git', 'add', '-A', '.'], cwd=module_dir, env=env, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) | ||
225 | proc.communicate() | ||
226 | proc = subprocess.Popen(['git', 'write-tree'], cwd=module_dir, env=env, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL) | ||
227 | stdout, _ = proc.communicate() | ||
228 | git_sha1 += stdout.decode("utf-8") | ||
229 | sha1 = hashlib.sha1(git_sha1.encode("utf-8")).hexdigest() | ||
214 | with open(oe_hash_file, 'w') as fobj: | 230 | with open(oe_hash_file, 'w') as fobj: |
215 | fobj.write(sha1) | 231 | fobj.write(sha1) |
216 | ret = oe_hash_file + ':True' | 232 | ret = oe_hash_file + ':True' |