From: "Fredrik Gustafsson" <fredrik.gustafsson@axis.com>
To: <openembedded-core@lists.openembedded.org>
Cc: <tools-cfpbuild-internal@axis.com>, <hugo.cedervall@axis.com>,
Fredrik Gustafsson <fredrigu@axis.com>
Subject: [PATCH v2 06/26] manifest.py: Dynamic load of manifest
Date: Thu, 25 Jun 2020 12:21:25 +0200 [thread overview]
Message-ID: <20200625102145.7139-7-fredrigu@axis.com> (raw)
In-Reply-To: <20200625102145.7139-1-fredrigu@axis.com>
Decide which manifest we should load in run time without any hard coded
values but look at which package type that is used.
Signed-off-by: Fredrik Gustafsson <fredrigu@axis.com>
---
meta/lib/oe/manifest.py | 10 ++------
meta/lib/oe/package_managers/deb/manifest.py | 2 +-
meta/lib/oe/package_managers/ipk/manifest.py | 2 +-
meta/lib/oe/package_managers/rpm/manifest.py | 2 +-
meta/lib/oe/rootfs.py | 13 +++++-----
meta/lib/oe/sdk.py | 27 +++++++-------------
6 files changed, 20 insertions(+), 36 deletions(-)
diff --git a/meta/lib/oe/manifest.py b/meta/lib/oe/manifest.py
index d93edfcac5..a8d14244c0 100644
--- a/meta/lib/oe/manifest.py
+++ b/meta/lib/oe/manifest.py
@@ -190,14 +190,8 @@ class Manifest(object, metaclass=ABCMeta):
def create_manifest(d, final_manifest=False, manifest_dir=None,
manifest_type=Manifest.MANIFEST_TYPE_IMAGE):
- from oe.package_managers.rpm.manifest import RpmManifest
- from oe.package_managers.ipk.manifest import OpkgManifest
- from oe.package_managers.deb.manifest import DpkgManifest
- manifest_map = {'rpm': RpmManifest,
- 'ipk': OpkgManifest,
- 'deb': DpkgManifest}
-
- manifest = manifest_map[d.getVar('IMAGE_PKGTYPE')](d, manifest_dir, manifest_type)
+ import importlib
+ manifest = importlib.import_module('oe.package_managers.' + d.getVar('IMAGE_PKGTYPE') + '.manifest').PkgManifest(d, manifest_dir, manifest_type)
if final_manifest:
manifest.create_final()
diff --git a/meta/lib/oe/package_managers/deb/manifest.py b/meta/lib/oe/package_managers/deb/manifest.py
index 9b186555dc..5daf709e6c 100644
--- a/meta/lib/oe/package_managers/deb/manifest.py
+++ b/meta/lib/oe/package_managers/deb/manifest.py
@@ -4,7 +4,7 @@
from oe.manifest import *
-class DpkgManifest(Manifest):
+class PkgManifest(Manifest):
def create_initial(self):
with open(self.initial_manifest, "w+") as manifest:
manifest.write(self.initial_manifest_file_header)
diff --git a/meta/lib/oe/package_managers/ipk/manifest.py b/meta/lib/oe/package_managers/ipk/manifest.py
index be87f3d1b7..cf3097224f 100644
--- a/meta/lib/oe/package_managers/ipk/manifest.py
+++ b/meta/lib/oe/package_managers/ipk/manifest.py
@@ -4,7 +4,7 @@
from oe.manifest import *
-class OpkgManifest(Manifest):
+class PkgManifest(Manifest):
"""
Returns a dictionary object with mip and mlp packages.
"""
diff --git a/meta/lib/oe/package_managers/rpm/manifest.py b/meta/lib/oe/package_managers/rpm/manifest.py
index a225ee7a23..801e50e8b6 100644
--- a/meta/lib/oe/package_managers/rpm/manifest.py
+++ b/meta/lib/oe/package_managers/rpm/manifest.py
@@ -4,7 +4,7 @@
from oe.manifest import *
-class RpmManifest(Manifest):
+class PkgManifest(Manifest):
"""
Returns a dictionary object with mip and mlp packages.
"""
diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py
index ab10edfec0..c3cfb58493 100644
--- a/meta/lib/oe/rootfs.py
+++ b/meta/lib/oe/rootfs.py
@@ -12,7 +12,6 @@ import os
import subprocess
import re
-
class Rootfs(object, metaclass=ABCMeta):
"""
This is an abstract class. Do not instantiate this directly.
@@ -359,8 +358,8 @@ class RpmRootfs(Rootfs):
self.log_check_regex = r'(unpacking of archive failed|Cannot find package'\
r'|exit 1|ERROR: |Error: |Error |ERROR '\
r'|Failed |Failed: |Failed$|Failed\(\d+\):)'
- from oe.package_managers.rpm.manifest import RpmManifest
- self.manifest = RpmManifest(d, manifest_dir)
+ import importlib
+ self.manifest = importlib.import_module('oe.package_managers.rpm.manifest').PkgManifest(d, manifest_dir)
self.pm = RpmPM(d,
d.getVar('IMAGE_ROOTFS'),
@@ -614,8 +613,8 @@ class DpkgRootfs(DpkgOpkgRootfs):
bb.utils.remove(self.image_rootfs, True)
bb.utils.remove(self.d.getVar('MULTILIB_TEMP_ROOTFS'), True)
- from oe.package_managers.deb.manifest import DpkgManifest
- self.manifest = DpkgManifest(d, manifest_dir)
+ import importlib
+ self.manifest = importlib.import_module('oe.package_managers.deb.manifest').PkgManifest(d, manifest_dir)
self.pm = DpkgPM(d, d.getVar('IMAGE_ROOTFS'),
d.getVar('PACKAGE_ARCHS'),
d.getVar('DPKG_ARCH'))
@@ -699,8 +698,8 @@ class OpkgRootfs(DpkgOpkgRootfs):
super(OpkgRootfs, self).__init__(d, progress_reporter, logcatcher)
self.log_check_regex = '(exit 1|Collected errors)'
- from oe.package_managers.ipk.manifest import OpkgManifest
- self.manifest = OpkgManifest(d, manifest_dir)
+ import importlib
+ self.manifest = importlib.import_module('oe.package_managers.ipk.manifest').PkgManifest(d, manifest_dir)
self.opkg_conf = self.d.getVar("IPKGCONF_TARGET")
self.pkg_archs = self.d.getVar("ALL_MULTILIB_PACKAGE_ARCHS")
diff --git a/meta/lib/oe/sdk.py b/meta/lib/oe/sdk.py
index 70451a0b3a..18f6c16bd2 100644
--- a/meta/lib/oe/sdk.py
+++ b/meta/lib/oe/sdk.py
@@ -114,11 +114,9 @@ class RpmSdk(Sdk):
def __init__(self, d, manifest_dir=None, rpm_workdir="oe-sdk-repo"):
super(RpmSdk, self).__init__(d, manifest_dir)
- from oe.package_managers.rpm.manifest import RpmManifest
- self.target_manifest = RpmManifest(d, self.manifest_dir,
- Manifest.MANIFEST_TYPE_SDK_TARGET)
- self.host_manifest = RpmManifest(d, self.manifest_dir,
- Manifest.MANIFEST_TYPE_SDK_HOST)
+ import importlib
+ self.target_manifest = importlib.import_module('oe.package_managers.rpm.manifest').PkgManifest(d, self.manifest_dir, Manifest.MANIFEST_TYPE_SDK_TARGET)
+ self.host_manifest = importlib.import_module('oe.package_managers.rpm.manifest').PkgManifest(d, self.manifest_dir, Manifest.MANIFEST_TYPE_SDK_HOST)
rpm_repo_workdir = "oe-sdk-repo"
if "sdk_ext" in d.getVar("BB_RUNTASK"):
@@ -232,14 +230,9 @@ class OpkgSdk(Sdk):
if "sdk_ext" in d.getVar("BB_RUNTASK"):
ipk_repo_workdir = "oe-sdk-ext-repo"
- from oe.package_managers.ipk.manifest import OpkgManifest
- self.target_pm = OpkgPM(d, self.sdk_target_sysroot, self.target_conf,
- self.d.getVar("ALL_MULTILIB_PACKAGE_ARCHS"),
- ipk_repo_workdir=ipk_repo_workdir)
-
- self.host_pm = OpkgPM(d, self.sdk_host_sysroot, self.host_conf,
- self.d.getVar("SDK_PACKAGE_ARCHS"),
- ipk_repo_workdir=ipk_repo_workdir)
+ import importlib
+ self.target_manifest = importlib.import_module('oe.package_managers.ipk.manifest').PkgManifest(d, self.sdk_target_sysroot, self.target_conf, self.d.getVar("ALL_MULTILIB_PACKAGE_ARCHS"), ipk_repo_workdir=ipk_repo_workdir)
+ self.host_manifest = importlib.import_module('oe.package_managers.ipk.manifest').PkgManifest(d, self.sdk_host_sysroot, self.host_conf, self.d.getVar("SDK_PACKAGE_ARCHS"), ipk_repo_workdir=ipk_repo_workdir)
def _populate_sysroot(self, pm, manifest):
pkgs_to_install = manifest.parse_initial_manifest()
@@ -310,11 +303,9 @@ class DpkgSdk(Sdk):
self.target_conf_dir = os.path.join(self.d.getVar("APTCONF_TARGET"), "apt")
self.host_conf_dir = os.path.join(self.d.getVar("APTCONF_TARGET"), "apt-sdk")
- from oe.package_managers.deb.manifest import DpkgManifest
- self.target_manifest = DpkgManifest(d, self.manifest_dir,
- Manifest.MANIFEST_TYPE_SDK_TARGET)
- self.host_manifest = DpkgManifest(d, self.manifest_dir,
- Manifest.MANIFEST_TYPE_SDK_HOST)
+ import importlib
+ self.target_manifest = importlib.import_module('oe.package_managers.deb.manifest').PkgManifest(d, self.manifest_dir, Manifest.MANIFEST_TYPE_SDK_TARGET)
+ self.host_manifest = importlib.import_module('oe.package_managers.deb.manifest').PkgManifest(d, self.manifest_dir, Manifest.MANIFEST_TYPE_SDK_HOST)
deb_repo_workdir = "oe-sdk-repo"
if "sdk_ext" in d.getVar("BB_RUNTASK"):
--
2.20.1
next prev parent reply other threads:[~2020-06-25 10:22 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-25 10:21 Add package managers as a plugin Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 01/26] nopackages.bbclass: Get tasks from variable Fredrik Gustafsson
2020-06-25 10:41 ` [OE-core] " Paul Barker
2020-06-25 10:21 ` [PATCH v2 02/26] package_managers: Add directory structure Fredrik Gustafsson
2020-06-25 10:41 ` [OE-core] " Paul Barker
2020-06-25 10:21 ` [PATCH v2 03/26] manifest: Move RpmManifest Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 04/26] manifest: Move DpkgManifest Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 05/26] manifest: Move OpkgManifest Fredrik Gustafsson
2020-06-25 10:21 ` Fredrik Gustafsson [this message]
2020-06-25 10:41 ` [OE-core] [PATCH v2 06/26] manifest.py: Dynamic load of manifest Paul Barker
2020-06-25 10:21 ` [PATCH v2 07/26] sdk.py: Move RpmSdk Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 08/26] sdk.py: Move DpkgSdk Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 09/26] sdk.py: Move OpkgSdk Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 10/26] sdk.py: Dynamic load of sdk Fredrik Gustafsson
2020-06-25 10:41 ` [OE-core] " Paul Barker
2020-06-25 10:21 ` [PATCH v2 11/26] rootfs.py: Move RpmRootfs Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 12/26] rootfs.py: Move DpkgRootfs Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 13/26] rootfs.py: Move OpkgRootfs Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 14/26] rootfs.py: Dynamic load of rootfs Fredrik Gustafsson
2020-06-25 10:42 ` [OE-core] " Paul Barker
2020-06-25 10:21 ` [PATCH v2 15/26] package_manager.py: Move RpmPM Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 16/26] package_manager.py: Move DpkgPM Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 17/26] package_manager.py: Move OpkgPM Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 18/26] package_manager: Rename RpmPM to PkgPM, etc Fredrik Gustafsson
2020-06-25 10:42 ` [OE-core] " Paul Barker
2020-06-25 10:21 ` [PATCH v2 19/26] package_manager.py: Move RpmIndexer Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 20/26] package_manager.py: Move OpkgIndexer Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 21/26] package_manager.py: Move DpkgIndexer Fredrik Gustafsson
2020-06-25 10:42 ` [OE-core] " Paul Barker
2020-06-25 10:21 ` [PATCH v2 22/26] package_manager: Rename Indexer classes Fredrik Gustafsson
2020-06-25 10:42 ` [OE-core] " Paul Barker
2020-06-25 10:21 ` [PATCH v2 23/26] package_manager.py: Move RpmPkgsList Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 24/26] package_manager.py: Move OpkgPkgsList Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 25/26] package_manager.py: Move DpkgPkgsList Fredrik Gustafsson
2020-06-25 10:21 ` [PATCH v2 26/26] package_manager: Rename PkgsList classes Fredrik Gustafsson
2020-06-25 10:43 ` [OE-core] " Paul Barker
2020-06-25 10:40 ` [OE-core] Add package managers as a plugin Paul Barker
2020-06-30 18:39 ` Fredrik Gustafsson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200625102145.7139-7-fredrigu@axis.com \
--to=fredrik.gustafsson@axis.com \
--cc=fredrigu@axis.com \
--cc=hugo.cedervall@axis.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=tools-cfpbuild-internal@axis.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox