[prev in list] [next in list] [prev in thread] [next in thread]
List: openembedded-core
Subject: [OE-core] [PATCH 1/8] recipetool: appendsrcfile(s): add dry-run mode
From: "Julien Stephan" <jstephan () baylibre ! com>
Date: 2023-11-30 22:01:49
Message-ID: 20231130220156.726263-2-jstephan () baylibre ! com
[Download RAW message or body]
Content-Transfer-Encoding: 8bit
Add dry-run mode for recipetool appendsrcfile and appendsrcfiles, with
if necessary, a diff of changes
Signed-off-by: Julien Stephan <jstephan@baylibre.com>
---
scripts/lib/recipetool/append.py | 33 +++++++++++++++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/scripts/lib/recipetool/append.py b/scripts/lib/recipetool/append.py
index 9dbb1cc4b5a..314ff4e20fd 100644
--- a/scripts/lib/recipetool/append.py
+++ b/scripts/lib/recipetool/append.py
@@ -18,6 +18,7 @@ import shutil
import scriptutils
import errno
from collections import defaultdict
+import difflib
logger = logging.getLogger('recipetool')
@@ -355,7 +356,35 @@ def appendsrc(args, files, rd, extralines=None):
extralines.append('SRC_URI += {0}'.format(source_uri))
copyfiles[newfile] = srcfile
- oe.recipeutils.bbappend_recipe(rd, args.destlayer, copyfiles, None, \
wildcardver=args.wildcard_version, machine=args.machine, extralines=extralines) + \
dry_run_output = None + dry_run_outdir = None
+ if args.dry_run:
+ import tempfile
+ dry_run_output = tempfile.TemporaryDirectory(prefix='devtool')
+ dry_run_outdir = dry_run_output.name
+
+ appendfile, _ = oe.recipeutils.bbappend_recipe(rd, args.destlayer, copyfiles, \
None, wildcardver=args.wildcard_version, machine=args.machine, extralines=extralines, \
redirect_output=dry_run_outdir) + if args.dry_run:
+ output = ''
+ appendfilename = os.path.basename(appendfile)
+ newappendfile = appendfile
+ if appendfile and os.path.exists(appendfile):
+ with open(appendfile, 'r') as f:
+ oldlines = f.readlines()
+ else:
+ appendfile = '/dev/null'
+ oldlines = []
+
+ with open(os.path.join(dry_run_outdir, appendfilename), 'r') as f:
+ newlines = f.readlines()
+ diff = difflib.unified_diff(oldlines, newlines, appendfile, newappendfile)
+ difflines = list(diff)
+ if difflines:
+ output += ''.join(difflines)
+ if output:
+ logger.info('Diff of changed files:\n%s' % output)
+ else:
+ logger.info('No changed files')
tinfoil.modified_files()
def appendsrcfiles(parser, args):
@@ -436,6 +465,7 @@ def register_commands(subparsers):
help='Create/update a bbappend to add or replace \
source files', description='Creates a bbappend (or updates an existing one) to add \
or replace the specified file in the recipe sources, either those in WORKDIR or those \
in the source tree. This command lets you specify multiple files with a destination \
directory, so cannot specify the destination filename. See the `appendsrcfile` \
command for the other behavior.')
parser.add_argument('-D', '--destdir', help='Destination directory (relative to \
S or WORKDIR, defaults to ".")', default='', type=destination_path) + \
parser.add_argument('-n', '--dry-run', help='Dry run mode', \
action='store_true')
parser.add_argument('files', nargs='+', metavar='FILE', help='File(s) to be \
added to the recipe sources (WORKDIR or S)', type=existing_path)
parser.set_defaults(func=lambda a: appendsrcfiles(parser, a), parserecipes=True)
@@ -443,6 +473,7 @@ def register_commands(subparsers):
parents=[common_src],
help='Create/update a bbappend to add or replace \
a source file', description='Creates a bbappend (or updates an existing one) to add \
or replace the specified files in the recipe sources, either those in WORKDIR or \
those in the source tree. This command lets you specify the destination filename, not \
just destination directory, but only works for one file. See the `appendsrcfiles` \
command for the other behavior.') + parser.add_argument('-n', '--dry-run', \
help='Dry run mode', action='store_true')
parser.add_argument('file', metavar='FILE', help='File to be added to the recipe \
sources (WORKDIR or S)', type=existing_path)
parser.add_argument('destfile', metavar='DESTFILE', nargs='?', help='Destination \
path (relative to S or WORKDIR, optional)', type=destination_path)
parser.set_defaults(func=lambda a: appendsrcfile(parser, a), parserecipes=True)
--
2.42.0
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#191545): https://lists.openembedded.org/g/openembedded-core/message/191545
Mute This Topic: https://lists.openembedded.org/mt/102903931/4454766
Group Owner: openembedded-core+owner@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [openembedded-core@marc.info]
-=-=-=-=-=-=-=-=-=-=-=-
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic