summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/backend/zypppkgmgr.py23
-rwxr-xr-x[-rw-r--r--]plugins/imager/fs_plugin.py14
-rwxr-xr-x[-rw-r--r--]plugins/imager/loop_plugin.py14
-rwxr-xr-x[-rw-r--r--]plugins/imager/qcow_plugin.py13
-rwxr-xr-xplugins/imager/raw_plugin.py11
5 files changed, 71 insertions, 4 deletions
diff --git a/plugins/backend/zypppkgmgr.py b/plugins/backend/zypppkgmgr.py
index 9358cbe..77b942e 100644
--- a/plugins/backend/zypppkgmgr.py
+++ b/plugins/backend/zypppkgmgr.py
@@ -19,6 +19,7 @@ import os
import shutil
import urlparse
import rpm
+import glob
import zypp
if not hasattr(zypp, 'PoolQuery') or \
@@ -33,7 +34,7 @@ from mic.utils import misc, rpmmisc, runner, fs_related
from mic.utils.grabber import myurlgrab, TextProgress
from mic.utils.proxy import get_proxy_for
from mic.utils.errors import CreatorError, RepoError, RpmError
-from mic.imager.baseimager import BaseImageCreator
+from mic.conf import configmgr
class RepositoryStub:
def __init__(self):
@@ -463,10 +464,30 @@ class Zypp(BackendPlugin):
def checkPackage(self, pkg):
self.check_pkgs.append(pkg)
+ def _get_local_packages(self):
+ """Return a list of rpm path to be local installed.
+ This is the hook where subclasses may specify a set of rpms which
+ it requires to be installed locally.
+ This returns an empty list by default.
+ Note, subclasses should usually chain up to the base class
+ implementation of this hook.
+ """
+ cropts = configmgr.create
+ if cropts['local_pkgs_path']:
+ if os.path.isdir(cropts['local_pkgs_path']):
+ return glob.glob(
+ os.path.join(cropts['local_pkgs_path'], '*.rpm'))
+ elif os.path.splitext(cropts['local_pkgs_path'])[-1] == '.rpm':
+ return [cropts['local_pkgs_path']]
+ return []
+ def __localinst_packages(self):
+ for rpm_path in self._get_local_packages():
+ self.installLocal(rpm_path)
def runInstall(self, checksize = 0):
os.environ["HOME"] = "/"
os.environ["LD_PRELOAD"] = ""
self.buildTransaction()
+ self.__localinst_packages()
todo = zypp.GetResolvablesToInsDel(self.Z.pool())
installed_pkgs = todo._toInstall
diff --git a/plugins/imager/fs_plugin.py b/plugins/imager/fs_plugin.py
index d74530f..c639211 100644..100755
--- a/plugins/imager/fs_plugin.py
+++ b/plugins/imager/fs_plugin.py
@@ -15,8 +15,9 @@
# with this program; if not, write to the Free Software Foundation, Inc., 59
# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+import subprocess
from mic import chroot, msger, rt_util
-from mic.utils import misc, errors, fs_related
+from mic.utils import misc, errors, fs_related, runner
from mic.imager import fs
from mic.conf import configmgr
from mic.plugin import pluginmgr
@@ -92,10 +93,10 @@ class FsPlugin(ImagerPlugin):
creator.check_depend_tools()
creator.mount(None, creatoropts["cachedir"])
creator.install()
+ creator.tpkinstall()
#Download the source packages ###private options
if args.include_src:
installed_pkgs = creator.get_installed_packages()
- msger.info('--------------------------------------------------')
msger.info('Generating the image with source rpms included ...')
if not misc.SrcpkgsDownload(installed_pkgs, creatoropts["repomd"],
creator._instroot, creatoropts["cachedir"]):
@@ -115,6 +116,15 @@ class FsPlugin(ImagerPlugin):
finally:
creator.cleanup()
+ #Run script of --run_script after image created
+ if creatoropts['run_script']:
+ cmd = creatoropts['run_script']
+ try:
+ runner.show(cmd)
+ except OSError,err:
+ msger.warning(str(err))
+
+
msger.info("Finished.")
return 0
diff --git a/plugins/imager/loop_plugin.py b/plugins/imager/loop_plugin.py
index 1830230..0b94f0e 100644..100755
--- a/plugins/imager/loop_plugin.py
+++ b/plugins/imager/loop_plugin.py
@@ -16,11 +16,12 @@
# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
import os
+import subprocess
import shutil
import tempfile
from mic import chroot, msger, rt_util
-from mic.utils import misc, fs_related, errors
+from mic.utils import misc, fs_related, errors, runner
from mic.conf import configmgr
from mic.plugin import pluginmgr
from mic.imager.loop import LoopImageCreator, load_mountpoints
@@ -100,9 +101,12 @@ class LoopPlugin(ImagerPlugin):
creator.check_depend_tools()
creator.mount(None, creatoropts["cachedir"])
creator.install()
+ creator.tpkinstall()
creator.configure(creatoropts["repomd"])
creator.copy_kernel()
+ creator.create_cpio_image()
creator.unmount()
+ creator.copy_cpio_image()
creator.package(creatoropts["destdir"])
creator.create_manifest()
@@ -117,6 +121,14 @@ class LoopPlugin(ImagerPlugin):
finally:
creator.cleanup()
+ #Run script of --run_script after image created
+ if creatoropts['run_script']:
+ cmd = creatoropts['run_script']
+ try:
+ runner.show(cmd)
+ except OSError,err:
+ msger.warning(str(err))
+
msger.info("Finished.")
return 0
diff --git a/plugins/imager/qcow_plugin.py b/plugins/imager/qcow_plugin.py
index 8acf572..d6758c5 100644..100755
--- a/plugins/imager/qcow_plugin.py
+++ b/plugins/imager/qcow_plugin.py
@@ -15,6 +15,7 @@
# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
import os
+import subprocess
import shutil
from mic import msger, rt_util
@@ -131,9 +132,12 @@ class QcowPlugin(ImagerPlugin):
creator.check_depend_tools()
creator.mount(None, creatoropts["cachedir"])
creator.install()
+ creator.tpkinstall()
creator.configure(creatoropts["repomd"])
creator.copy_kernel()
+ creator.create_cpio_image()
creator.unmount()
+ creator.copy_cpio_image()
creator.package(creatoropts["destdir"])
creator.create_manifest()
@@ -148,6 +152,15 @@ class QcowPlugin(ImagerPlugin):
finally:
creator.cleanup()
+ #Run script of --run_script after image created
+ if creatoropts['run_script']:
+ cmd = creatoropts['run_script']
+ try:
+ runner.show(cmd)
+ except OSError,err:
+ msger.warning(str(err))
+
+
msger.info("Finished.")
return 0
diff --git a/plugins/imager/raw_plugin.py b/plugins/imager/raw_plugin.py
index 09a9714..e954b7b 100755
--- a/plugins/imager/raw_plugin.py
+++ b/plugins/imager/raw_plugin.py
@@ -16,6 +16,7 @@
# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
import os
+import subprocess
import shutil
import re
import tempfile
@@ -98,6 +99,7 @@ class RawPlugin(ImagerPlugin):
creator.check_depend_tools()
creator.mount(None, creatoropts["cachedir"])
creator.install()
+ creator.tpkinstall()
creator.configure(creatoropts["repomd"])
creator.copy_kernel()
creator.unmount()
@@ -113,6 +115,15 @@ class RawPlugin(ImagerPlugin):
finally:
creator.cleanup()
+ #Run script of --run_script after image created
+ if creatoropts['run_script']:
+ cmd = creatoropts['run_script']
+ try:
+ runner.show(cmd)
+ except OSError,err:
+ msger.warning(str(err))
+
+
msger.info("Finished.")
return 0