mirror of
https://git.yoctoproject.org/poky
synced 2026-07-15 15:37:03 +00:00
recipetool/devtool: calculate source paths relative to UNPACKDIR
Now that recipes default to S in UNPACKDIR, recipetool and devtool should do the same. There was some discussion about changing devtool to simply setting UNPACKDIR via bbappend to a workspace and running unpack task directly; currently it has a bunch of convoluted path calculations, substitutions, moving source trees around and and special casing (devtool-source.bbclass in particular is an unpleasant hack). This should definitely be done; but right now we can simply tweak existing code which at least doesn't make it worse. (From OE-Core rev: c326ca8aeb2bf0f7719e43921d10efd5dedc7b2a) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
efb0410d38
commit
4547232c71
@@ -625,7 +625,7 @@ def _extract_source(srctree, keep_temp, devbranch, sync, config, basepath, works
|
||||
srcsubdir = f.read()
|
||||
except FileNotFoundError as e:
|
||||
raise DevtoolError('Something went wrong with source extraction - the devtool-source class was not active or did not function correctly:\n%s' % str(e))
|
||||
srcsubdir_rel = os.path.relpath(srcsubdir, os.path.join(tempdir, 'workdir'))
|
||||
srcsubdir_rel = os.path.relpath(srcsubdir, os.path.join(tempdir, 'workdir', os.path.relpath(d.getVar('UNPACKDIR'), d.getVar('WORKDIR'))))
|
||||
|
||||
# Check if work-shared is empty, if yes
|
||||
# find source and copy to work-shared
|
||||
@@ -742,13 +742,13 @@ def get_staging_kbranch(srcdir):
|
||||
staging_kbranch = "".join(branch.split('\n')[0])
|
||||
return staging_kbranch
|
||||
|
||||
def get_real_srctree(srctree, s, workdir):
|
||||
def get_real_srctree(srctree, s, unpackdir):
|
||||
# Check that recipe isn't using a shared workdir
|
||||
s = os.path.abspath(s)
|
||||
workdir = os.path.abspath(workdir)
|
||||
if s.startswith(workdir) and s != workdir and os.path.dirname(s) != workdir:
|
||||
unpackdir = os.path.abspath(unpackdir)
|
||||
if s.startswith(unpackdir) and s != unpackdir and os.path.dirname(s) != unpackdir:
|
||||
# Handle if S is set to a subdirectory of the source
|
||||
srcsubdir = os.path.relpath(s, workdir).split(os.sep, 1)[1]
|
||||
srcsubdir = os.path.relpath(s, unpackdir).split(os.sep, 1)[1]
|
||||
srctree = os.path.join(srctree, srcsubdir)
|
||||
return srctree
|
||||
|
||||
@@ -907,7 +907,7 @@ def modify(args, config, basepath, workspace):
|
||||
|
||||
# Need to grab this here in case the source is within a subdirectory
|
||||
srctreebase = srctree
|
||||
srctree = get_real_srctree(srctree, rd.getVar('S'), rd.getVar('WORKDIR'))
|
||||
srctree = get_real_srctree(srctree, rd.getVar('S'), rd.getVar('UNPACKDIR'))
|
||||
|
||||
bb.utils.mkdirhier(os.path.dirname(appendfile))
|
||||
with open(appendfile, 'w') as f:
|
||||
|
||||
Reference in New Issue
Block a user