From 82092da54b62024db4ec72e383b4c7a905b3db39 Mon Sep 17 00:00:00 2001 From: wanchao-xu Date: Mon, 20 Nov 2023 14:38:04 +0800 Subject: [PATCH] Add new option for gbs to import source package list. -Option '--source-package-list' can specify a source package list to be imported. -Option '--source-package-from-file' can specify a source package list file. Change-Id: Id431ad414855fdc61bda8e162cfb0040e83c9066 Signed-off-by: wanchao-xu --- gitbuildsys/cmd_import.py | 51 +++++++++++++++++++++++++++++++-------- tools/gbs | 9 ++++++- 2 files changed, 49 insertions(+), 11 deletions(-) diff --git a/gitbuildsys/cmd_import.py b/gitbuildsys/cmd_import.py index 6bfcb2d..9565059 100644 --- a/gitbuildsys/cmd_import.py +++ b/gitbuildsys/cmd_import.py @@ -30,16 +30,7 @@ from gitbuildsys.conf import configmgr from gbp.scripts.import_srpm import main as gbp_import_srpm from gbp.scripts.import_orig_rpm import main as gbp_import_orig -def main(args): - """gbs import entry point.""" - - if args.author_name: - os.environ["GIT_AUTHOR_NAME"] = args.author_name - if args.author_email: - os.environ["GIT_AUTHOR_EMAIL"] = args.author_email - - path = args.path - +def import_package(path, args): tmp = Temp(prefix='gbp_', dirn=configmgr.get('tmpdir', 'general'), directory=True) @@ -91,4 +82,44 @@ def main(args): if gbp_import_orig(params): raise GbsError('Failed to import %s' % path) +def import_package_list(package_list, args): + import_err = False + for path in package_list: + try: + import_package(path, args) + except GbsError as err: + log.error(err) + import_err = True + pass + + if import_err: + raise GbsError('Failed to import some packages') + +def main(args): + """gbs import entry point.""" + + if args.author_name: + os.environ["GIT_AUTHOR_NAME"] = args.author_name + if args.author_email: + os.environ["GIT_AUTHOR_EMAIL"] = args.author_email + + pkg_specified = False + if args.path: + import_package(args.path, args) + pkg_specified = True + if args.source_package_list: + import_package_list(args.source_package_list.split(','), args) + pkg_specified = True + if args.source_package_from_file: + if not os.path.exists(args.source_package_from_file): + raise GbsError('specified package list file %s not exists' % \ + args.source_package_from_file) + with open(args.source_package_from_file) as fobj: + package_list = [pkg.strip() for pkg in fobj.readlines() if pkg.strip()] + import_package_list(package_list, args) + pkg_specified = True + + if not pkg_specified: + raise GbsError('No package is imported, please specify package path.') + log.info('done.') diff --git a/tools/gbs b/tools/gbs index 5786672..5ef1f5f 100755 --- a/tools/gbs +++ b/tools/gbs @@ -42,7 +42,7 @@ def import_parser(parser): $ gbs import /path/to/tarball.tar.gz """ - parser.add_argument('path', type=os.path.abspath, + parser.add_argument('path', nargs='?', type=os.path.abspath, help='path to spec, srcrpm or tarball') parser.add_argument('--author-name', help='author name of git commit') @@ -79,6 +79,13 @@ def import_parser(parser): 'packages)') group.add_argument('--no-patch-import', action='store_true', help='don\'t import patches automatically') + group.add_argument('--source-package-list', + help='specify a source package list to be imported. ' + 'Multiple packages can be separated by comma(,).') + group.add_argument('--source-package-from-file', + help='specify a source package list file. Packages ' + 'listed in this file will be selected to be imported. ' + 'The format of file is one package dir for one line') group = parser.add_argument_group('only for importing upstream tar ball ' 'options') group.add_argument('--merge', action='store_true', -- 2.34.1