* [PATCH 0/2] A couple of devtool/recipetool fixes
@ 2015-10-02 13:05 Paul Eggleton
2015-10-02 13:05 ` [PATCH 1/2] devtool: update-recipe: avoid updating patches that have not changed Paul Eggleton
2015-10-02 13:05 ` [PATCH 2/2] recipetool: create: fix change in path structure if --extract-to path exists Paul Eggleton
0 siblings, 2 replies; 3+ messages in thread
From: Paul Eggleton @ 2015-10-02 13:05 UTC (permalink / raw)
To: openembedded-core
The following changes since commit 6545e402d6411dbd16eae7049a76d47e9a8f996d:
build-appliance-image: Update to jethro head revision (2015-10-01 17:55:07 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib paule/devtool-fixes7
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=paule/devtool-fixes7
Paul Eggleton (2):
devtool: update-recipe: avoid updating patches that have not changed
recipetool: create: fix change in path structure if --extract-to path
exists
scripts/lib/devtool/standard.py | 29 ++++++++++++++++++++++++++---
scripts/lib/recipetool/create.py | 6 ++++++
2 files changed, 32 insertions(+), 3 deletions(-)
--
2.1.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/2] devtool: update-recipe: avoid updating patches that have not changed
2015-10-02 13:05 [PATCH 0/2] A couple of devtool/recipetool fixes Paul Eggleton
@ 2015-10-02 13:05 ` Paul Eggleton
2015-10-02 13:05 ` [PATCH 2/2] recipetool: create: fix change in path structure if --extract-to path exists Paul Eggleton
1 sibling, 0 replies; 3+ messages in thread
From: Paul Eggleton @ 2015-10-02 13:05 UTC (permalink / raw)
To: openembedded-core
Use "git cherry" against the original tag that we made when we extracted
the source in order to find the revisions that are definitely new. This
allows you to modify a commit in the middle of the series and then run
devtool update-recipe and not have the subsequent patches unnecessarily
modified.
Fixes [YOCTO #8388].
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
scripts/lib/devtool/standard.py | 29 ++++++++++++++++++++++++++---
1 file changed, 26 insertions(+), 3 deletions(-)
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index 8676e42..6ce3144 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -605,6 +605,7 @@ def _get_patchset_revs(args, srctree, recipe_path):
commits.append(line.split(':')[-1].strip())
update_rev = initial_rev
+ changed_revs = None
if initial_rev:
# Find first actually changed revision
stdout, _ = bb.process.run('git rev-list --reverse %s..HEAD' %
@@ -614,7 +615,21 @@ def _get_patchset_revs(args, srctree, recipe_path):
if newcommits[i] == commits[i]:
update_rev = commits[i]
- return initial_rev, update_rev
+ try:
+ stdout, _ = bb.process.run('git cherry devtool-patched',
+ cwd=srctree)
+ except bb.process.ExecutionError as err:
+ stdout = None
+
+ if stdout is not None:
+ changed_revs = []
+ for line in stdout.splitlines():
+ if line.startswith('+ '):
+ rev = line.split()[1]
+ if rev in newcommits:
+ changed_revs.append(rev)
+
+ return initial_rev, update_rev, changed_revs
def _remove_file_entries(srcuri, filelist):
"""Remove file:// entries from SRC_URI"""
@@ -835,7 +850,7 @@ def _update_recipe_patch(args, config, srctree, rd, config_data):
raise DevtoolError('unable to find workspace bbappend for recipe %s' %
args.recipename)
- initial_rev, update_rev = _get_patchset_revs(args, srctree, append)
+ initial_rev, update_rev, changed_revs = _get_patchset_revs(args, srctree, append)
if not initial_rev:
raise DevtoolError('Unable to find initial revision - please specify '
'it with --initial-rev')
@@ -888,8 +903,16 @@ def _update_recipe_patch(args, config, srctree, rd, config_data):
_move_file(os.path.join(local_files_dir, basepath), path)
updatefiles = True
for basepath, path in upd_p.iteritems():
+ patchfn = os.path.join(patches_dir, basepath)
+ if changed_revs is not None:
+ # Avoid updating patches that have not actually changed
+ with open(patchfn, 'r') as f:
+ firstlineitems = f.readline().split()
+ if len(firstlineitems) > 1 and len(firstlineitems[1]) == 40:
+ if not firstlineitems[1] in changed_revs:
+ continue
logger.info('Updating patch %s' % basepath)
- _move_file(os.path.join(patches_dir, basepath), path)
+ _move_file(patchfn, path)
updatefiles = True
# Add any new files
files_dir = os.path.join(os.path.dirname(recipefile),
--
2.1.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] recipetool: create: fix change in path structure if --extract-to path exists
2015-10-02 13:05 [PATCH 0/2] A couple of devtool/recipetool fixes Paul Eggleton
2015-10-02 13:05 ` [PATCH 1/2] devtool: update-recipe: avoid updating patches that have not changed Paul Eggleton
@ 2015-10-02 13:05 ` Paul Eggleton
1 sibling, 0 replies; 3+ messages in thread
From: Paul Eggleton @ 2015-10-02 13:05 UTC (permalink / raw)
To: openembedded-core
If the directory specified by --extract-to exists, because we were using
shutil.move() to move the temporary extracted directory to the specified
path, a subdirectory was being created under that directory instead of
moving the contents, which was a different result than if the directory
didn't previously exist. We could try to always move the contents but
that's complicated when any symlinks are involved; the simplest thing is
just to remove the directory (which should be empty anyway) before
moving the temporary directory across in its place.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
scripts/lib/recipetool/create.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py
index 844073b..15aa9bd 100644
--- a/scripts/lib/recipetool/create.py
+++ b/scripts/lib/recipetool/create.py
@@ -260,6 +260,12 @@ def create_recipe(args):
if args.extract_to:
scriptutils.git_convert_standalone_clone(srctree)
+ if os.path.isdir(args.extract_to):
+ # If the directory exists we'll move the temp dir into it instead of
+ # its contents - of course, we could try to always move its contents
+ # but that is a pain if there are symlinks; the simplest solution is
+ # to just remove it first
+ os.rmdir(args.extract_to)
shutil.move(srctree, args.extract_to)
logger.info('Source extracted to %s' % args.extract_to)
--
2.1.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-10-02 13:05 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-02 13:05 [PATCH 0/2] A couple of devtool/recipetool fixes Paul Eggleton
2015-10-02 13:05 ` [PATCH 1/2] devtool: update-recipe: avoid updating patches that have not changed Paul Eggleton
2015-10-02 13:05 ` [PATCH 2/2] recipetool: create: fix change in path structure if --extract-to path exists Paul Eggleton
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox