The default is /usr/share/pungi/multilib/, pass --multilibconf to
override this.
This also adds multilib.init() so that an import of multilib doesn't
immediately setup the classes.
(cherry picked from commit 234524296fd53871aed64690cf6a7d5849ca154a)
---
src/bin/pungi.py | 3 +++
src/pypungi/__init__.py | 1 +
src/pypungi/config.py | 1 +
src/pypungi/multilib.py | 52 ++++++++++++++++++++++++++++++++++---------------
4 files changed, 41 insertions(+), 16 deletions(-)
diff --git a/src/bin/pungi.py b/src/bin/pungi.py
index ca7ced8..70e6efd 100755
--- a/src/bin/pungi.py
+++ b/src/bin/pungi.py
@@ -272,6 +272,9 @@ if __name__ == '__main__':
parser.add_option("-i", "--installpkgs", default=[],
action="append", metavar="STRING",
help="Package glob for lorax to install before runtime-install.tmpl
runs. (may be listed multiple times)")
+ parser.add_option("--multilibconf", default=None,
type="string",
+ action="callback", callback=set_config,
callback_args=(config, ),
+ help="Path to multilib conf files. Default is
/usr/share/pungi/multilib/")
parser.add_option("-c", "--config", dest="config",
help='Path to kickstart config file')
diff --git a/src/pypungi/__init__.py b/src/pypungi/__init__.py
index 0e4b316..3240f59 100644
--- a/src/pypungi/__init__.py
+++ b/src/pypungi/__init__.py
@@ -106,6 +106,7 @@ class PungiBase(object):
def __init__(self, config):
self.config = config
+ multilib.init(self.config.get('pungi', 'multilibconf'))
# ARCH setup
self.tree_arch = self.config.get('pungi', 'arch')
diff --git a/src/pypungi/config.py b/src/pypungi/config.py
index 617ae18..46b9ed8 100644
--- a/src/pypungi/config.py
+++ b/src/pypungi/config.py
@@ -29,6 +29,7 @@ class Config(SafeConfigParser):
self.set('pungi', 'sourcedir', 'source')
self.set('pungi', 'debugdir', 'debug')
self.set('pungi', 'isodir', 'iso')
+ self.set('pungi', 'multilibconf',
'/usr/share/pungi/multilib/')
self.set('pungi', 'relnotefilere', 'GPL
README-BURNING-ISOS-en_US.txt ^RPM-GPG')
self.set('pungi', 'relnotedirre', '')
self.set('pungi', 'relnotepkgs', 'fedora-release
fedora-release-notes')
diff --git a/src/pypungi/multilib.py b/src/pypungi/multilib.py
index 6719573..153d32a 100755
--- a/src/pypungi/multilib.py
+++ b/src/pypungi/multilib.py
@@ -92,6 +92,9 @@ class MultilibMethodBase(object):
"""a base class for multilib methods"""
name = "base"
+ def __init__(self, config_path):
+ self.config_path = config_path
+
def select(self, po):
raise NotImplementedError
@@ -141,10 +144,11 @@ class RuntimeMultilibMethod(MultilibMethodBase):
"""pre-defined paths to libs"""
name = "runtime"
- def __init__(self, **kwargs):
- self.blacklist =
read_lines_from_file("/usr/share/pungi/multilib/runtime-blacklist.conf")
- self.whitelist =
read_lines_from_file("/usr/share/pungi/multilib/runtime-whitelist.conf")
- self.patterns =
expand_runtime_patterns(read_runtime_patterns_from_file("/usr/share/pungi/multilib/runtime-patterns.conf"))
+ def __init__(self, *args, **kwargs):
+ super(RuntimeMultilibMethod, self).__init__(*args, **kwargs)
+ self.blacklist =
read_lines_from_file(self.config_path+"runtime-blacklist.conf")
+ self.whitelist =
read_lines_from_file(self.config_path+"runtime-whitelist.conf")
+ self.patterns =
expand_runtime_patterns(read_runtime_patterns_from_file(self.config_path+"runtime-patterns.conf"))
def select(self, po):
if self.skip(po):
@@ -186,8 +190,10 @@ class RuntimeMultilibMethod(MultilibMethodBase):
class FileMultilibMethod(MultilibMethodBase):
"""explicitely defined whitelist and blacklist"""
- def __init__(self, **kwargs):
- self.name = "file"
+ name = "file"
+
+ def __init__(self, *args, **kwargs):
+ super(FileMultilibMethod, self).__init__(*args, **kwargs)
whitelist = kwargs.pop("whitelist", None)
blacklist = kwargs.pop("blacklist", None)
self.whitelist = self.read_file(whitelist)
@@ -212,8 +218,10 @@ class FileMultilibMethod(MultilibMethodBase):
class KernelMultilibMethod(MultilibMethodBase):
"""kernel and kernel-devel"""
- def __init__(self, **kwargs):
- self.name = "kernel"
+ name = "kernel"
+
+ def __init__(self, *args, **kwargs):
+ super(KernelMultilibMethod, self).__init__(*args, **kwargs)
def select(self, po):
if self.is_kernel_or_kernel_devel(po):
@@ -223,8 +231,10 @@ class KernelMultilibMethod(MultilibMethodBase):
class YabootMultilibMethod(MultilibMethodBase):
"""yaboot on ppc"""
- def __init__(self, **kwargs):
- self.name = "yaboot"
+ name = "yaboot"
+
+ def __init__(self, *args, **kwargs):
+ super(YabootMultilibMethod, self).__init__(*args, **kwargs)
def select(self, po):
if po.arch in ["ppc"]:
@@ -237,9 +247,10 @@ class DevelMultilibMethod(MultilibMethodBase):
"""all -devel and -static packages"""
name = "devel"
- def __init__(self, **kwargs):
- self.blacklist =
read_lines_from_file("/usr/share/pungi/multilib/devel-blacklist.conf")
- self.whitelist =
read_lines_from_file("/usr/share/pungi/multilib/devel-whitelist.conf")
+ def __init__(self, *args, **kwargs):
+ super(DevelMultilibMethod, self).__init__(*args, **kwargs)
+ self.blacklist =
read_lines_from_file(self.config_path+"devel-blacklist.conf")
+ self.whitelist =
read_lines_from_file(self.config_path+"devel-whitelist.conf")
def select(self, po):
if self.skip(po):
@@ -267,9 +278,17 @@ class DevelMultilibMethod(MultilibMethodBase):
DEFAULT_METHODS = ["devel", "runtime"]
METHOD_MAP = {}
-for cls in (AllMultilibMethod, DevelMultilibMethod, FileMultilibMethod,
KernelMultilibMethod, NoneMultilibMethod, RuntimeMultilibMethod, YabootMultilibMethod):
- method = cls()
- METHOD_MAP[method.name] = method
+
+def init(config_path="/usr/share/pungi/multilib/"):
+ global METHOD_MAP
+
+ if not config_path.endswith("/"):
+ config_path += "/"
+
+ for cls in (AllMultilibMethod, DevelMultilibMethod, FileMultilibMethod,
KernelMultilibMethod,
+ NoneMultilibMethod, RuntimeMultilibMethod, YabootMultilibMethod):
+ method = cls(config_path)
+ METHOD_MAP[method.name] = method
def po_is_multilib(po, methods):
@@ -384,6 +403,7 @@ def main():
if not opts.tmpdir:
tmpdir = tempfile.mkdtemp(prefix="multilib_")
+ init()
nvra_list = do_multilib(opts.arch, opts.method, opts.repos, tmpdir, opts.logfile)
for nvra, method in nvra_list:
print "MULTILIB(%s): %s" % (method, nvra)
--
2.1.0