AL-5220: Investigate why CL9 can't built on the new nebula
- Exclude the packages for using in a build
This commit is contained in:
		
							parent
							
								
									114a73f100
								
							
						
					
					
						commit
						8b11bb81af
					
				| @ -1,3 +1,4 @@ | |||||||
|  | import re | ||||||
| from argparse import ArgumentParser | from argparse import ArgumentParser | ||||||
| 
 | 
 | ||||||
| import os | import os | ||||||
| @ -11,7 +12,7 @@ from productmd.common import parse_nvra | |||||||
| 
 | 
 | ||||||
| @dataclass | @dataclass | ||||||
| class Package: | class Package: | ||||||
|     nvra: str |     nvra: dict | ||||||
|     path: Path |     path: Path | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -23,12 +24,30 @@ def search_rpms(top_dir: Path) -> List[Package]: | |||||||
|         list: list of paths |         list: list of paths | ||||||
|     """ |     """ | ||||||
|     return [Package( |     return [Package( | ||||||
|         nvra=Path(path).stem, |         nvra=parse_nvra(Path(path).stem), | ||||||
|         path=Path(path), |         path=Path(path), | ||||||
|     ) for path in iglob(str(top_dir.joinpath('**/*.rpm')), recursive=True)] |     ) for path in iglob(str(top_dir.joinpath('**/*.rpm')), recursive=True)] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def copy_rpms(packages: List[Package], target_top_dir: Path): | def is_excluded_package( | ||||||
|  |         package: Package, | ||||||
|  |         excluded_packages: List[str], | ||||||
|  | ) -> bool: | ||||||
|  |     package_key = f'{package.nvra["name"]}.{package.nvra["arch"]}' | ||||||
|  |     return any( | ||||||
|  |         re.search( | ||||||
|  |             f'^{excluded_pkg}$', | ||||||
|  |             package_key, | ||||||
|  |         ) or excluded_pkg in (package.nvra['name'], package_key) | ||||||
|  |         for excluded_pkg in excluded_packages | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def copy_rpms( | ||||||
|  |         packages: List[Package], | ||||||
|  |         target_top_dir: Path, | ||||||
|  |         excluded_packages: List[str], | ||||||
|  | ): | ||||||
|     """ |     """ | ||||||
|     Search synced repos for rpms and prepare |     Search synced repos for rpms and prepare | ||||||
|     koji-like structure for pungi |     koji-like structure for pungi | ||||||
| @ -40,8 +59,9 @@ def copy_rpms(packages: List[Package], target_top_dir: Path): | |||||||
|         Nothing: |         Nothing: | ||||||
|     """ |     """ | ||||||
|     for package in packages: |     for package in packages: | ||||||
|         info = parse_nvra(package.nvra) |         if is_excluded_package(package, excluded_packages): | ||||||
|         target_arch_dir = target_top_dir.joinpath(info['arch']) |             continue | ||||||
|  |         target_arch_dir = target_top_dir.joinpath(package.nvra['arch']) | ||||||
|         target_file = target_arch_dir.joinpath(package.path.name) |         target_file = target_arch_dir.joinpath(package.path.name) | ||||||
|         os.makedirs(target_arch_dir, exist_ok=True) |         os.makedirs(target_arch_dir, exist_ok=True) | ||||||
| 
 | 
 | ||||||
| @ -57,11 +77,19 @@ def cli_main(): | |||||||
|     parser = ArgumentParser() |     parser = ArgumentParser() | ||||||
|     parser.add_argument('-p', '--path', required=True, type=Path) |     parser.add_argument('-p', '--path', required=True, type=Path) | ||||||
|     parser.add_argument('-t', '--target', required=True, type=Path) |     parser.add_argument('-t', '--target', required=True, type=Path) | ||||||
|  |     parser.add_argument( | ||||||
|  |         '-e', | ||||||
|  |         '--excluded-packages', | ||||||
|  |         required=False, | ||||||
|  |         nargs='+', | ||||||
|  |         type=str, | ||||||
|  |         default=[], | ||||||
|  |     ) | ||||||
| 
 | 
 | ||||||
|     namespace = parser.parse_args() |     namespace = parser.parse_args() | ||||||
| 
 | 
 | ||||||
|     rpms = search_rpms(namespace.path) |     rpms = search_rpms(namespace.path) | ||||||
|     copy_rpms(rpms, namespace.target) |     copy_rpms(rpms, namespace.target, namespace.excluded_packages) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|  | |||||||
| @ -6,6 +6,7 @@ from pathlib import Path | |||||||
| from pyfakefs.fake_filesystem_unittest import TestCase | from pyfakefs.fake_filesystem_unittest import TestCase | ||||||
| 
 | 
 | ||||||
| from pungi.scripts.gather_rpms import search_rpms, copy_rpms, Package | from pungi.scripts.gather_rpms import search_rpms, copy_rpms, Package | ||||||
|  | from productmd.common import parse_nvra | ||||||
| 
 | 
 | ||||||
| PATH_TO_REPOS = '/path/to/repos' | PATH_TO_REPOS = '/path/to/repos' | ||||||
| MODULES_YAML_GZ = 'modules.yaml.gz' | MODULES_YAML_GZ = 'modules.yaml.gz' | ||||||
| @ -41,37 +42,39 @@ class TestGatherRpms(TestCase): | |||||||
| 
 | 
 | ||||||
|     def test_gather_rpms(self): |     def test_gather_rpms(self): | ||||||
|         self.assertEqual( |         self.assertEqual( | ||||||
|             [Package(nvra='libvirt-6.0.0-28.module_el8.3.0+555+a55c8938.i686', |             [Package(nvra=parse_nvra('libvirt-6.0.0-28.module_' | ||||||
|  |                                      'el8.3.0+555+a55c8938.i686'), | ||||||
|                      path=Path( |                      path=Path( | ||||||
|                          f'{PATH_TO_REPOS}/powertools/Packages/' |                          f'{PATH_TO_REPOS}/powertools/Packages/' | ||||||
|                          f'libvirt-6.0.0-28.module_el' |                          f'libvirt-6.0.0-28.module_el' | ||||||
|                          f'8.3.0+555+a55c8938.i686.rpm' |                          f'8.3.0+555+a55c8938.i686.rpm' | ||||||
|                      )), |                      )), | ||||||
|              Package(nvra='libgit2-devel-0.26.8-2.el8.x86_64', |              Package(nvra=parse_nvra('libgit2-devel-0.26.8-2.el8.x86_64'), | ||||||
|                      path=Path( |                      path=Path( | ||||||
|                          f'{PATH_TO_REPOS}/powertools/Packages/' |                          f'{PATH_TO_REPOS}/powertools/Packages/' | ||||||
|                          f'libgit2-devel-0.26.8-2.el8.x86_64.rpm' |                          f'libgit2-devel-0.26.8-2.el8.x86_64.rpm' | ||||||
|                      )), |                      )), | ||||||
|              Package(nvra='xalan-j2-2.7.1-38.module_el' |              Package(nvra=parse_nvra('xalan-j2-2.7.1-38.module_el' | ||||||
|                           '8.0.0+30+832da3a1.noarch', |                           '8.0.0+30+832da3a1.noarch'), | ||||||
|                      path=Path( |                      path=Path( | ||||||
|                          f'{PATH_TO_REPOS}/powertools/Packages/' |                          f'{PATH_TO_REPOS}/powertools/Packages/' | ||||||
|                          f'xalan-j2-2.7.1-38.module_el' |                          f'xalan-j2-2.7.1-38.module_el' | ||||||
|                          f'8.0.0+30+832da3a1.noarch.rpm' |                          f'8.0.0+30+832da3a1.noarch.rpm' | ||||||
|                      )), |                      )), | ||||||
|              Package(nvra='bnd-maven-plugin-3.5.0-4.module_el' |              Package(nvra=parse_nvra('bnd-maven-plugin-3.5.0-4.module_el' | ||||||
|                           '8.0.0+30+832da3a1.noarch', |                           '8.0.0+30+832da3a1.noarch'), | ||||||
|                      path=Path( |                      path=Path( | ||||||
|                          '/path/to/repos/appstream/Packages/' |                          '/path/to/repos/appstream/Packages/' | ||||||
|                          'bnd-maven-plugin-3.5.0-4.module_el' |                          'bnd-maven-plugin-3.5.0-4.module_el' | ||||||
|                          '8.0.0+30+832da3a1.noarch.rpm' |                          '8.0.0+30+832da3a1.noarch.rpm' | ||||||
|                      )), |                      )), | ||||||
|              Package(nvra='OpenEXR-devel-2.2.0-11.el8.i686', |              Package(nvra=parse_nvra('OpenEXR-devel-2.2.0-11.el8.i686'), | ||||||
|                      path=Path( |                      path=Path( | ||||||
|                          f'{PATH_TO_REPOS}/appstream/Packages/' |                          f'{PATH_TO_REPOS}/appstream/Packages/' | ||||||
|                          f'OpenEXR-devel-2.2.0-11.el8.i686.rpm' |                          f'OpenEXR-devel-2.2.0-11.el8.i686.rpm' | ||||||
|                      )), |                      )), | ||||||
|              Package(nvra='mingw-binutils-generic-2.30-1.el8.x86_64', |              Package(nvra=parse_nvra('mingw-binutils-generic-' | ||||||
|  |                                      '2.30-1.el8.x86_64'), | ||||||
|                      path=Path( |                      path=Path( | ||||||
|                          f'{PATH_TO_REPOS}/appstream/Packages/' |                          f'{PATH_TO_REPOS}/appstream/Packages/' | ||||||
|                          f'mingw-binutils-generic-2.30-1.el8.x86_64.rpm' |                          f'mingw-binutils-generic-2.30-1.el8.x86_64.rpm' | ||||||
| @ -84,42 +87,45 @@ class TestGatherRpms(TestCase): | |||||||
|         target_path = Path('/mnt/koji') |         target_path = Path('/mnt/koji') | ||||||
|         packages = [ |         packages = [ | ||||||
| 
 | 
 | ||||||
|             Package(nvra='libvirt-6.0.0-28.module_el8.3.0+555+a55c8938.i686', |             Package(nvra=parse_nvra('libvirt-6.0.0-28.module_' | ||||||
|  |                                     'el8.3.0+555+a55c8938.i686'), | ||||||
|                     path=Path( |                     path=Path( | ||||||
|                         f'{PATH_TO_REPOS}/powertools/Packages/' |                         f'{PATH_TO_REPOS}/powertools/Packages/' | ||||||
|                         f'libvirt-6.0.0-28.module_el' |                         f'libvirt-6.0.0-28.module_el' | ||||||
|                         f'8.3.0+555+a55c8938.i686.rpm' |                         f'8.3.0+555+a55c8938.i686.rpm' | ||||||
|                     )), |                     )), | ||||||
|             Package(nvra='libgit2-devel-0.26.8-2.el8.x86_64', |             Package(nvra=parse_nvra('libgit2-devel-0.26.8-2.el8.x86_64'), | ||||||
|                     path=Path( |                     path=Path( | ||||||
|                         f'{PATH_TO_REPOS}/powertools/Packages/' |                         f'{PATH_TO_REPOS}/powertools/Packages/' | ||||||
|                         f'libgit2-devel-0.26.8-2.el8.x86_64.rpm' |                         f'libgit2-devel-0.26.8-2.el8.x86_64.rpm' | ||||||
|                     )), |                     )), | ||||||
|             Package(nvra='xalan-j2-2.7.1-38.module_el8.0.0+30+832da3a1.noarch', |             Package(nvra=parse_nvra('xalan-j2-2.7.1-38.module_' | ||||||
|  |                                     'el8.0.0+30+832da3a1.noarch'), | ||||||
|                     path=Path( |                     path=Path( | ||||||
|                         f'{PATH_TO_REPOS}/powertools/Packages/' |                         f'{PATH_TO_REPOS}/powertools/Packages/' | ||||||
|                         f'xalan-j2-2.7.1-38.module_el' |                         f'xalan-j2-2.7.1-38.module_el' | ||||||
|                         f'8.0.0+30+832da3a1.noarch.rpm' |                         f'8.0.0+30+832da3a1.noarch.rpm' | ||||||
|                     )), |                     )), | ||||||
|             Package(nvra='bnd-maven-plugin-3.5.0-4.module_el' |             Package(nvra=parse_nvra('bnd-maven-plugin-3.5.0-4.module_el' | ||||||
|                          '8.0.0+30+832da3a1.noarch', |                          '8.0.0+30+832da3a1.noarch'), | ||||||
|                     path=Path( |                     path=Path( | ||||||
|                         '/path/to/repos/appstream/Packages/' |                         '/path/to/repos/appstream/Packages/' | ||||||
|                          'bnd-maven-plugin-3.5.0-4.module_el' |                          'bnd-maven-plugin-3.5.0-4.module_el' | ||||||
|                         '8.0.0+30+832da3a1.noarch.rpm' |                         '8.0.0+30+832da3a1.noarch.rpm' | ||||||
|                     )), |                     )), | ||||||
|             Package(nvra='OpenEXR-devel-2.2.0-11.el8.i686', |             Package(nvra=parse_nvra('OpenEXR-devel-2.2.0-11.el8.i686'), | ||||||
|                     path=Path( |                     path=Path( | ||||||
|                         f'{PATH_TO_REPOS}/appstream/Packages/' |                         f'{PATH_TO_REPOS}/appstream/Packages/' | ||||||
|                         f'OpenEXR-devel-2.2.0-11.el8.i686.rpm' |                         f'OpenEXR-devel-2.2.0-11.el8.i686.rpm' | ||||||
|                     )), |                     )), | ||||||
|             Package(nvra='mingw-binutils-generic-2.30-1.el8.x86_64', |             Package(nvra=parse_nvra('mingw-binutils-generic-' | ||||||
|  |                                     '2.30-1.el8.x86_64'), | ||||||
|                     path=Path( |                     path=Path( | ||||||
|                         f'{PATH_TO_REPOS}/appstream/Packages/' |                         f'{PATH_TO_REPOS}/appstream/Packages/' | ||||||
|                         f'mingw-binutils-generic-2.30-1.el8.x86_64.rpm' |                         f'mingw-binutils-generic-2.30-1.el8.x86_64.rpm' | ||||||
|                     )) |                     )) | ||||||
|         ] |         ] | ||||||
|         copy_rpms(packages, target_path) |         copy_rpms(packages, target_path, []) | ||||||
| 
 | 
 | ||||||
|         self.assertCountEqual([ |         self.assertCountEqual([ | ||||||
|             'xalan-j2-2.7.1-38.module_el8.0.0+30+832da3a1.noarch.rpm', |             'xalan-j2-2.7.1-38.module_el8.0.0+30+832da3a1.noarch.rpm', | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user