ALBS-1032: Generate i686 section for all variants in packages.json
- Remove old non-necessary methods - Some fixes to arch code
This commit is contained in:
parent
12433157dd
commit
d56227ab4a
@ -65,9 +65,20 @@ class RepoInfo:
|
|||||||
# Only layout of specific package (which don't exist
|
# Only layout of specific package (which don't exist
|
||||||
# in a reference repository) will be taken as example
|
# in a reference repository) will be taken as example
|
||||||
is_reference: bool = False
|
is_reference: bool = False
|
||||||
|
strict_arch: bool = False
|
||||||
|
|
||||||
|
|
||||||
class PackagesGenerator:
|
class PackagesGenerator:
|
||||||
|
|
||||||
|
repo_arches = defaultdict(lambda: list(('noarch',)))
|
||||||
|
addon_repos = {
|
||||||
|
'x86_64': ['i686'],
|
||||||
|
'ppc64le': [],
|
||||||
|
'aarch64': [],
|
||||||
|
's390x': [],
|
||||||
|
'i686': [],
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
repos: List[RepoInfo],
|
repos: List[RepoInfo],
|
||||||
@ -78,6 +89,9 @@ class PackagesGenerator:
|
|||||||
self.excluded_packages = excluded_packages
|
self.excluded_packages = excluded_packages
|
||||||
self.included_packages = included_packages
|
self.included_packages = included_packages
|
||||||
self.tmp_files = []
|
self.tmp_files = []
|
||||||
|
for arch, arch_list in self.addon_repos.items():
|
||||||
|
self.repo_arches[arch].extend(arch_list)
|
||||||
|
self.repo_arches[arch].append(arch)
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
for tmp_file in self.tmp_files:
|
for tmp_file in self.tmp_files:
|
||||||
@ -116,69 +130,6 @@ class PackagesGenerator:
|
|||||||
"""
|
"""
|
||||||
return cr.Repomd(repomd_file_path)
|
return cr.Repomd(repomd_file_path)
|
||||||
|
|
||||||
def _parse_primary_file(
|
|
||||||
self,
|
|
||||||
primary_file_path: AnyStr,
|
|
||||||
packages: Dict[AnyStr, cr.Package],
|
|
||||||
) -> None:
|
|
||||||
"""
|
|
||||||
Parse primary.xml.gz, take from it info about packages and put it to
|
|
||||||
dict packages
|
|
||||||
:param primary_file_path: path to local primary.xml.gz
|
|
||||||
:param packages: dictionary which will contain info about packages
|
|
||||||
from repository
|
|
||||||
"""
|
|
||||||
cr.xml_parse_primary(
|
|
||||||
path=primary_file_path,
|
|
||||||
pkgcb=lambda pkg: packages.update({
|
|
||||||
pkg.pkgId: pkg,
|
|
||||||
}),
|
|
||||||
do_files=False,
|
|
||||||
warningcb=self._warning_callback,
|
|
||||||
)
|
|
||||||
|
|
||||||
def _parse_filelists_file(
|
|
||||||
self,
|
|
||||||
filelists_file_path: AnyStr,
|
|
||||||
packages: Dict[AnyStr, cr.Package],
|
|
||||||
) -> None:
|
|
||||||
"""
|
|
||||||
Parse filelists.xml.gz, take from it info about packages and put it to
|
|
||||||
dict packages
|
|
||||||
:param filelists_file_path: path to local filelists.xml.gz
|
|
||||||
:param packages: dictionary which will contain info about packages
|
|
||||||
from repository
|
|
||||||
"""
|
|
||||||
cr.xml_parse_filelists(
|
|
||||||
path=filelists_file_path,
|
|
||||||
newpkgcb=lambda pkg_id, name, arch: packages.get(
|
|
||||||
pkg_id,
|
|
||||||
None,
|
|
||||||
),
|
|
||||||
warningcb=self._warning_callback,
|
|
||||||
)
|
|
||||||
|
|
||||||
def _parse_other_file(
|
|
||||||
self,
|
|
||||||
other_file_path: AnyStr,
|
|
||||||
packages: Dict[AnyStr, cr.Package],
|
|
||||||
) -> None:
|
|
||||||
"""
|
|
||||||
Parse other.xml.gz, take from it info about packages and put it to
|
|
||||||
dict packages
|
|
||||||
:param other_file_path: path to local other.xml.gz
|
|
||||||
:param packages: dictionary which will contain info about packages
|
|
||||||
from repository
|
|
||||||
"""
|
|
||||||
cr.xml_parse_other(
|
|
||||||
path=other_file_path,
|
|
||||||
newpkgcb=lambda pkg_id, name, arch: packages.get(
|
|
||||||
pkg_id,
|
|
||||||
None,
|
|
||||||
),
|
|
||||||
warningcb=self._warning_callback,
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _parse_modules_file(
|
def _parse_modules_file(
|
||||||
cls,
|
cls,
|
||||||
@ -312,15 +263,6 @@ class PackagesGenerator:
|
|||||||
)
|
)
|
||||||
all_packages = defaultdict(lambda: {'variants': list()})
|
all_packages = defaultdict(lambda: {'variants': list()})
|
||||||
for repo_info in self.repos:
|
for repo_info in self.repos:
|
||||||
repo_arches = [
|
|
||||||
repo_info.arch,
|
|
||||||
'noarch',
|
|
||||||
]
|
|
||||||
if repo_info.arch == 'x86_64':
|
|
||||||
repo_arches.extend([
|
|
||||||
'i686',
|
|
||||||
'i386',
|
|
||||||
])
|
|
||||||
repomd_records = self._get_repomd_records(
|
repomd_records = self._get_repomd_records(
|
||||||
repo_info=repo_info,
|
repo_info=repo_info,
|
||||||
)
|
)
|
||||||
@ -337,7 +279,7 @@ class PackagesGenerator:
|
|||||||
warningcb=self._warning_callback,
|
warningcb=self._warning_callback,
|
||||||
)
|
)
|
||||||
for package in packages_iterator:
|
for package in packages_iterator:
|
||||||
if package.arch not in repo_arches:
|
if package.arch not in self.repo_arches[repo_info.arch]:
|
||||||
package_arch = repo_info.arch
|
package_arch = repo_info.arch
|
||||||
else:
|
else:
|
||||||
package_arch = package.arch
|
package_arch = package.arch
|
||||||
@ -351,9 +293,9 @@ class PackagesGenerator:
|
|||||||
continue
|
continue
|
||||||
if package_key not in all_packages:
|
if package_key not in all_packages:
|
||||||
all_packages[package_key]['variants'].append(
|
all_packages[package_key]['variants'].append(
|
||||||
repo_info.name
|
(repo_info.name, repo_info.arch)
|
||||||
)
|
)
|
||||||
all_packages[package_key]['arch'] = repo_info.arch
|
all_packages[package_key]['arch'] = package_arch
|
||||||
all_packages[package_key]['package'] = package
|
all_packages[package_key]['package'] = package
|
||||||
all_packages[package_key]['type'] = repo_info.is_reference
|
all_packages[package_key]['type'] = repo_info.is_reference
|
||||||
# replace an older package if it's not reference or
|
# replace an older package if it's not reference or
|
||||||
@ -365,35 +307,24 @@ class PackagesGenerator:
|
|||||||
package,
|
package,
|
||||||
all_packages[package_key]['package']
|
all_packages[package_key]['package']
|
||||||
) > 0:
|
) > 0:
|
||||||
all_packages[package_key]['variants'] = [repo_info.name]
|
all_packages[package_key]['variants'] = [
|
||||||
all_packages[package_key]['arch'] = repo_info.arch
|
(repo_info.name, repo_info.arch)
|
||||||
|
]
|
||||||
|
all_packages[package_key]['arch'] = package_arch
|
||||||
all_packages[package_key]['package'] = package
|
all_packages[package_key]['package'] = package
|
||||||
elif self.compare_pkgs_version(
|
elif self.compare_pkgs_version(
|
||||||
package,
|
package,
|
||||||
all_packages[package_key]['package']
|
all_packages[package_key]['package']
|
||||||
) == 0:
|
) == 0:
|
||||||
all_packages[package_key]['variants'].append(
|
all_packages[package_key]['variants'].append(
|
||||||
repo_info.name
|
(repo_info.name, repo_info.arch)
|
||||||
)
|
)
|
||||||
|
|
||||||
for package_dict in all_packages.values():
|
for package_dict in all_packages.values():
|
||||||
repo_arches = [
|
for variant_name, variant_arch in package_dict['variants']:
|
||||||
package_dict['arch'],
|
package_arch = package_dict['arch']
|
||||||
'noarch',
|
|
||||||
]
|
|
||||||
if package_dict['arch'] == 'x86_64':
|
|
||||||
repo_arches.extend([
|
|
||||||
'i686',
|
|
||||||
'i386',
|
|
||||||
])
|
|
||||||
for variant in package_dict['variants']:
|
|
||||||
repo_arch = package_dict['arch']
|
|
||||||
package = package_dict['package']
|
package = package_dict['package']
|
||||||
package_name = package.name
|
package_name = package.name
|
||||||
if package.arch not in repo_arches:
|
|
||||||
package_arch = package_dict['arch']
|
|
||||||
else:
|
|
||||||
package_arch = package.arch
|
|
||||||
if any(re.search(excluded_package, package_name)
|
if any(re.search(excluded_package, package_name)
|
||||||
for excluded_package in self.excluded_packages):
|
for excluded_package in self.excluded_packages):
|
||||||
continue
|
continue
|
||||||
@ -410,11 +341,11 @@ class PackagesGenerator:
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
src_package_name = src_package_name[0].name
|
src_package_name = src_package_name[0].name
|
||||||
pkgs_list = packages_json[variant][
|
pkgs_list = packages_json[variant_name][
|
||||||
repo_arch][src_package_name]
|
variant_arch][src_package_name]
|
||||||
added_pkg = f'{package_name}.{package_arch}'
|
added_pkg = f'{package_name}.{package_arch}'
|
||||||
if added_pkg not in pkgs_list:
|
if added_pkg not in pkgs_list:
|
||||||
pkgs_list.append(added_pkg)
|
pkgs_list.append(added_pkg)
|
||||||
return packages_json
|
return packages_json
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user