summaryrefslogtreecommitdiffstats
path: root/modules/mock.py
diff options
context:
space:
mode:
Diffstat (limited to 'modules/mock.py')
-rw-r--r--modules/mock.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/modules/mock.py b/modules/mock.py
new file mode 100644
index 0000000..3655c37
--- /dev/null
+++ b/modules/mock.py
@@ -0,0 +1,46 @@
+from __future__ import with_statement
+
+from base.module import Module
+from base.vars import FEDORA_DIR
+from base.profiles import ver_rel, Profile
+from modules.build import Build
+from modules.package import Package
+
+class Mock(Module):
+ def __init__(self, target_dir, name, profile):
+ self.target_dir = target_dir
+ self.name = name
+ self.pkg = Package(name)
+ self.build = Build(name, target_dir)
+ # for now we're using the old profile form, namely a branch
+ # TODO: fix real profiles
+ self.profile = Profile(profile)
+
+ def build_rpm(self, target_dir=None):
+ if not target_dir:
+ if self.target_dir:
+ target_dir = self.target_dir
+ else:
+ raise ExecutionException(None, 'no Target Dir specified')
+
+ self.build.build_source_rpm(target_dir, self.profile)
+ self.build.fetch_rpms(target_dir)
+
+ srpm_name = self.pkg.get_srpm_name(self.profile)
+ mock_cfg = self.profile.mock_cfg
+ result_dir = self.profile.result_dir
+ config_dir = self.profile.config_dir
+ with pwd(self.pkg.code_dir):
+ with file('mock.log', 'w') as mock_out:
+ with pwd(FEDORA_DIR):
+ p = Popen(['/usr/bin/mock',
+ '-r %s' % mock_cfg,
+ '--configdir=%s' % config_dir,
+ '--resultdir=%s' % result_dir,
+ srpm_name],
+ stdout=mock_out, stderr=mock_out)
+ log.info('quick compiling %s... please wait' % srpm_name)
+ p.wait()
+
+
+__all__ = ['Mock'] \ No newline at end of file