Add new option for gbs to import source package list. 76/301576/4
authorwanchao-xu <wanchao.xu@samsung.com>
Mon, 20 Nov 2023 06:38:04 +0000 (14:38 +0800)
committerwanchao-xu <wanchao.xu@samsung.com>
Thu, 23 Nov 2023 03:11:25 +0000 (11:11 +0800)
-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 <wanchao.xu@samsung.com>
gitbuildsys/cmd_import.py
tools/gbs

index 6bfcb2d00cc1d59291b72928653b8a6dc3fee2a8..9565059fe55c25e5c59d4cbf0da711f90f4c48f8 100644 (file)
@@ -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.')
index 578667230dcfb15307b021d6b1da7b35676b35f6..5ef1f5fcd7da19654a15be8b21a9de8185732fff 100755 (executable)
--- 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',