diff options
Diffstat (limited to 'scripts/lib')
-rw-r--r-- | scripts/lib/devtool/standard.py | 19 | ||||
-rw-r--r-- | scripts/lib/devtool/upgrade.py | 18 |
2 files changed, 19 insertions, 18 deletions
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index e3b74ab8f0..f46ce34ad1 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py | |||
@@ -765,6 +765,16 @@ def get_staging_kbranch(srcdir): | |||
765 | staging_kbranch = "".join(branch.split('\n')[0]) | 765 | staging_kbranch = "".join(branch.split('\n')[0]) |
766 | return staging_kbranch | 766 | return staging_kbranch |
767 | 767 | ||
768 | def get_real_srctree(srctree, s, workdir): | ||
769 | # Check that recipe isn't using a shared workdir | ||
770 | s = os.path.abspath(s) | ||
771 | workdir = os.path.abspath(workdir) | ||
772 | if s.startswith(workdir) and s != workdir and os.path.dirname(s) != workdir: | ||
773 | # Handle if S is set to a subdirectory of the source | ||
774 | srcsubdir = os.path.relpath(s, workdir).split(os.sep, 1)[1] | ||
775 | srctree = os.path.join(srctree, srcsubdir) | ||
776 | return srctree | ||
777 | |||
768 | def modify(args, config, basepath, workspace): | 778 | def modify(args, config, basepath, workspace): |
769 | """Entry point for the devtool 'modify' subcommand""" | 779 | """Entry point for the devtool 'modify' subcommand""" |
770 | import bb | 780 | import bb |
@@ -923,14 +933,7 @@ def modify(args, config, basepath, workspace): | |||
923 | 933 | ||
924 | # Need to grab this here in case the source is within a subdirectory | 934 | # Need to grab this here in case the source is within a subdirectory |
925 | srctreebase = srctree | 935 | srctreebase = srctree |
926 | 936 | srctree = get_real_srctree(srctree, rd.getVar('S'), rd.getVar('WORKDIR')) | |
927 | # Check that recipe isn't using a shared workdir | ||
928 | s = os.path.abspath(rd.getVar('S')) | ||
929 | workdir = os.path.abspath(rd.getVar('WORKDIR')) | ||
930 | if s.startswith(workdir) and s != workdir and os.path.dirname(s) != workdir: | ||
931 | # Handle if S is set to a subdirectory of the source | ||
932 | srcsubdir = os.path.relpath(s, workdir).split(os.sep, 1)[1] | ||
933 | srctree = os.path.join(srctree, srcsubdir) | ||
934 | 937 | ||
935 | bb.utils.mkdirhier(os.path.dirname(appendfile)) | 938 | bb.utils.mkdirhier(os.path.dirname(appendfile)) |
936 | with open(appendfile, 'w') as f: | 939 | with open(appendfile, 'w') as f: |
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py index 39a1910a49..967d157077 100644 --- a/scripts/lib/devtool/upgrade.py +++ b/scripts/lib/devtool/upgrade.py | |||
@@ -88,7 +88,7 @@ def _rename_recipe_files(oldrecipe, bpn, oldpv, newpv, path): | |||
88 | _rename_recipe_dirs(oldpv, newpv, path) | 88 | _rename_recipe_dirs(oldpv, newpv, path) |
89 | return _rename_recipe_file(oldrecipe, bpn, oldpv, newpv, path) | 89 | return _rename_recipe_file(oldrecipe, bpn, oldpv, newpv, path) |
90 | 90 | ||
91 | def _write_append(rc, srctree, same_dir, no_same_dir, rev, copied, workspace, d): | 91 | def _write_append(rc, srctreebase, srctree, same_dir, no_same_dir, rev, copied, workspace, d): |
92 | """Writes an append file""" | 92 | """Writes an append file""" |
93 | if not os.path.exists(rc): | 93 | if not os.path.exists(rc): |
94 | raise DevtoolError("bbappend not created because %s does not exist" % rc) | 94 | raise DevtoolError("bbappend not created because %s does not exist" % rc) |
@@ -104,6 +104,11 @@ def _write_append(rc, srctree, same_dir, no_same_dir, rev, copied, workspace, d) | |||
104 | af = os.path.join(appendpath, '%s.bbappend' % brf) | 104 | af = os.path.join(appendpath, '%s.bbappend' % brf) |
105 | with open(af, 'w') as f: | 105 | with open(af, 'w') as f: |
106 | f.write('FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n\n') | 106 | f.write('FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n\n') |
107 | # Local files can be modified/tracked in separate subdir under srctree | ||
108 | # Mostly useful for packages with S != WORKDIR | ||
109 | f.write('FILESPATH:prepend := "%s:"\n' % | ||
110 | os.path.join(srctreebase, 'oe-local-files')) | ||
111 | f.write('# srctreebase: %s\n' % srctreebase) | ||
107 | f.write('inherit externalsrc\n') | 112 | f.write('inherit externalsrc\n') |
108 | f.write(('# NOTE: We use pn- overrides here to avoid affecting' | 113 | f.write(('# NOTE: We use pn- overrides here to avoid affecting' |
109 | 'multiple variants in the case where the recipe uses BBCLASSEXTEND\n')) | 114 | 'multiple variants in the case where the recipe uses BBCLASSEXTEND\n')) |
@@ -524,14 +529,7 @@ def upgrade(args, config, basepath, workspace): | |||
524 | else: | 529 | else: |
525 | srctree = standard.get_default_srctree(config, pn) | 530 | srctree = standard.get_default_srctree(config, pn) |
526 | 531 | ||
527 | # Check that recipe isn't using a shared workdir | 532 | srctree_s = standard.get_real_srctree(srctree, rd.getVar('S'), rd.getVar('WORKDIR')) |
528 | s = os.path.abspath(rd.getVar('S')) | ||
529 | workdir = os.path.abspath(rd.getVar('WORKDIR')) | ||
530 | srctree_s = srctree | ||
531 | if s.startswith(workdir) and s != workdir and os.path.dirname(s) != workdir: | ||
532 | # Handle if S is set to a subdirectory of the source | ||
533 | srcsubdir = os.path.relpath(s, workdir).split(os.sep, 1)[1] | ||
534 | srctree_s = os.path.join(srctree, srcsubdir) | ||
535 | 533 | ||
536 | # try to automatically discover latest version and revision if not provided on command line | 534 | # try to automatically discover latest version and revision if not provided on command line |
537 | if not args.version and not args.srcrev: | 535 | if not args.version and not args.srcrev: |
@@ -575,7 +573,7 @@ def upgrade(args, config, basepath, workspace): | |||
575 | _upgrade_error(e, recipedir, srctree, args.keep_failure) | 573 | _upgrade_error(e, recipedir, srctree, args.keep_failure) |
576 | standard._add_md5(config, pn, os.path.dirname(rf)) | 574 | standard._add_md5(config, pn, os.path.dirname(rf)) |
577 | 575 | ||
578 | af = _write_append(rf, srctree_s, args.same_dir, args.no_same_dir, rev2, | 576 | af = _write_append(rf, srctree, srctree_s, args.same_dir, args.no_same_dir, rev2, |
579 | copied, config.workspace_path, rd) | 577 | copied, config.workspace_path, rd) |
580 | standard._add_md5(config, pn, af) | 578 | standard._add_md5(config, pn, af) |
581 | 579 | ||