Message ID | 20250516103324.963974-1-ross.burton@arm.com |
---|---|
State | New |
Headers | show |
Series | buildstats-diff: find last two buildstats files if none are specified | expand |
On Fri, 2025-05-16 at 11:33 +0100, Ross Burton via lists.openembedded.org wrote: > If no buildstats directories are specified, then find the last two runs > under BUILDDIR. > > Signed-off-by: Ross Burton <ross.burton@arm.com> > --- > scripts/buildstats-diff | 25 +++++++++++++++++++++++-- > 1 file changed, 23 insertions(+), 2 deletions(-) > > diff --git a/scripts/buildstats-diff b/scripts/buildstats-diff > index c9aa76a8faf..0e975ddcfc9 100755 > --- a/scripts/buildstats-diff > +++ b/scripts/buildstats-diff > @@ -12,6 +12,7 @@ import glob > import logging > import math > import os > +import pathlib > import sys > from operator import attrgetter > > @@ -251,11 +252,31 @@ Script for comparing buildstats of two separate builds.""" > "average over them") > parser.add_argument('--only-task', dest='only_tasks', metavar='TASK', action='append', default=[], > help="Only include TASK in report. May be specified multiple times") > - parser.add_argument('buildstats1', metavar='BUILDSTATS1', help="'Left' buildstat") > - parser.add_argument('buildstats2', metavar='BUILDSTATS2', help="'Right' buildstat") > + parser.add_argument('buildstats1', metavar='BUILDSTATS1', nargs="?", help="'Left' buildstat") > + parser.add_argument('buildstats2', metavar='BUILDSTATS2', nargs="?", help="'Right' buildstat") > > args = parser.parse_args(argv) > > + if args.buildstats1 and args.buildstats2: > + # Both paths specified > + pass > + elif args.buildstats1 or args.buildstats2: > + # Just one path specified, this is an error > + parser.print_usage(sys.stderr) > + print("Either specify two buildstats paths, or none to use the last two paths.", file=sys.stderr) > + sys.exit(1) > + else: > + # No paths specified, try to find the last two buildstats > + try: > + buildstats_dir = pathlib.Path(os.environ["BUILDDIR"]) / "tmp" / "buildstats" > + paths = sorted(buildstats_dir.iterdir()) > + args.buildstats2 = paths.pop() > + args.buildstats1 = paths.pop() > + except KeyError: > + parser.print_usage(sys.stderr) > + print("Build environment has not been configured, cannot find buildstats", file=sys.stderr) > + sys.exit(1) > + > # We do not nedd/want to read all buildstats if we just want to look at the > # package versions > if args.ver_diff: Should this print something so the user knows which ones it picked? Cheers, Richard
> On 16 May 2025, at 11:37, Richard Purdie <richard.purdie@linuxfoundation.org> wrote: > > Should this print something so the user knows which ones it picked? Good point, v2 sent. Ross
diff --git a/scripts/buildstats-diff b/scripts/buildstats-diff index c9aa76a8faf..0e975ddcfc9 100755 --- a/scripts/buildstats-diff +++ b/scripts/buildstats-diff @@ -12,6 +12,7 @@ import glob import logging import math import os +import pathlib import sys from operator import attrgetter @@ -251,11 +252,31 @@ Script for comparing buildstats of two separate builds.""" "average over them") parser.add_argument('--only-task', dest='only_tasks', metavar='TASK', action='append', default=[], help="Only include TASK in report. May be specified multiple times") - parser.add_argument('buildstats1', metavar='BUILDSTATS1', help="'Left' buildstat") - parser.add_argument('buildstats2', metavar='BUILDSTATS2', help="'Right' buildstat") + parser.add_argument('buildstats1', metavar='BUILDSTATS1', nargs="?", help="'Left' buildstat") + parser.add_argument('buildstats2', metavar='BUILDSTATS2', nargs="?", help="'Right' buildstat") args = parser.parse_args(argv) + if args.buildstats1 and args.buildstats2: + # Both paths specified + pass + elif args.buildstats1 or args.buildstats2: + # Just one path specified, this is an error + parser.print_usage(sys.stderr) + print("Either specify two buildstats paths, or none to use the last two paths.", file=sys.stderr) + sys.exit(1) + else: + # No paths specified, try to find the last two buildstats + try: + buildstats_dir = pathlib.Path(os.environ["BUILDDIR"]) / "tmp" / "buildstats" + paths = sorted(buildstats_dir.iterdir()) + args.buildstats2 = paths.pop() + args.buildstats1 = paths.pop() + except KeyError: + parser.print_usage(sys.stderr) + print("Build environment has not been configured, cannot find buildstats", file=sys.stderr) + sys.exit(1) + # We do not nedd/want to read all buildstats if we just want to look at the # package versions if args.ver_diff:
If no buildstats directories are specified, then find the last two runs under BUILDDIR. Signed-off-by: Ross Burton <ross.burton@arm.com> --- scripts/buildstats-diff | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-)