xref: /OK3568_Linux_fs/yocto/poky/meta/lib/oe/package_manager/rpm/manifest.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1#
2# SPDX-License-Identifier: GPL-2.0-only
3#
4
5from oe.manifest import Manifest
6
7class PkgManifest(Manifest):
8    """
9    Returns a dictionary object with mip and mlp packages.
10    """
11    def _split_multilib(self, pkg_list):
12        pkgs = dict()
13
14        for pkg in pkg_list.split():
15            pkg_type = self.PKG_TYPE_MUST_INSTALL
16
17            ml_variants = self.d.getVar('MULTILIB_VARIANTS').split()
18
19            for ml_variant in ml_variants:
20                if pkg.startswith(ml_variant + '-'):
21                    pkg_type = self.PKG_TYPE_MULTILIB
22
23            if not pkg_type in pkgs:
24                pkgs[pkg_type] = pkg
25            else:
26                pkgs[pkg_type] += " " + pkg
27
28        return pkgs
29
30    def create_initial(self):
31        pkgs = dict()
32
33        with open(self.initial_manifest, "w+") as manifest:
34            manifest.write(self.initial_manifest_file_header)
35
36            for var in self.var_maps[self.manifest_type]:
37                if var in self.vars_to_split:
38                    split_pkgs = self._split_multilib(self.d.getVar(var))
39                    if split_pkgs is not None:
40                        pkgs = dict(list(pkgs.items()) + list(split_pkgs.items()))
41                else:
42                    pkg_list = self.d.getVar(var)
43                    if pkg_list is not None:
44                        pkgs[self.var_maps[self.manifest_type][var]] = self.d.getVar(var)
45
46            for pkg_type in pkgs:
47                for pkg in pkgs[pkg_type].split():
48                    manifest.write("%s,%s\n" % (pkg_type, pkg))
49
50    def create_final(self):
51        pass
52
53    def create_full(self, pm):
54        pass
55