summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYaakov M. Nemoy <loupgaroublond@gmail.com>2009-01-07 11:17:39 -0500
committerYaakov M. Nemoy <loupgaroublond@gmail.com>2009-01-07 11:17:39 -0500
commita7bcebe96bd00388fea1c2cf01e0691534f61744 (patch)
tree570d9309f5e3913d0bbcb2d671284b119e848750
parent79577f7d35ba8cff9ba7a1f97d8bae8bab1b001f (diff)
downloadfedora-devshell-a7bcebe96bd00388fea1c2cf01e0691534f61744.tar.gz
fedora-devshell-a7bcebe96bd00388fea1c2cf01e0691534f61744.tar.xz
fedora-devshell-a7bcebe96bd00388fea1c2cf01e0691534f61744.zip
Fixed some bugs in the builder
-rw-r--r--base/profiles.py6
-rw-r--r--base/util.py14
-rw-r--r--modules/build.py20
-rw-r--r--modules/darcs.py15
4 files changed, 39 insertions, 16 deletions
diff --git a/base/profiles.py b/base/profiles.py
index 83bfe25..667dcf6 100644
--- a/base/profiles.py
+++ b/base/profiles.py
@@ -19,7 +19,9 @@
from os.path import join
from subprocess import Popen, PIPE
+from base import log
from vars import FEDORA_DIR
+from util import flatten
TARGET = 0
DIST = 1
@@ -30,10 +32,10 @@ def distdef(dist):
return dist.replace('.', '')
def define(key, value):
- return '--define "%s %s"' % (key, value)
+ return ['-D', '%s %s' % (key, value)]
def join_defines(*defines):
- return " ".join(defines)
+ return flatten(defines)
def dist_defines(dist, distvar, distval):
dist = define('dist', dist)
diff --git a/base/util.py b/base/util.py
index 5b68c3b..0d4723c 100644
--- a/base/util.py
+++ b/base/util.py
@@ -82,5 +82,19 @@ def one(l, f):
if f(x):
return x
+def isiter(i):
+ return hasattr(i, '__iter__')
+
+def flatten(l):
+ acc = []
+ def _flatten(acc, i):
+ if isiter(i):
+ for x in i:
+ _flatten(acc, x)
+ else:
+ acc.append(i)
+ _flatten(acc, l)
+ return acc
+
__all__ = ['pwd', 'copy', 'with_sudo', 'with_su', 'symlink', 'move',
'log_file', 'one']
diff --git a/modules/build.py b/modules/build.py
index 60f5104..9955512 100644
--- a/modules/build.py
+++ b/modules/build.py
@@ -40,18 +40,18 @@ class Build(Directory):
pkg = DirFactory(package)
with pwd(pkg.dir):
symlink(pkg.spec_file,
- join(self.dir, 'SPECS', pkg.spec_file()))
+ join(self.dir, 'SPECS', pkg.spec_file))
sball = pkg.sourceball
symlink(sball, join(self.dir, 'SOURCES', sball))
patches = [f for f in listdir(getcwd()) if f.endswith('.patch')]
for patch in patches:
symlink(patch, join(self.dir, 'SOURCES', patch))
- def build_quick_rpm(self):
- self.rpmbuild('-ba')
+ def build_quick_rpm(self, package):
+ self.rpmbuild('-ba', package)
- def build_source_rpm(self):
- self.rpmbuild('-bs')
+ def build_source_rpm(self, package):
+ self.rpmbuild('-bs', package)
def rpmbuild(self, param, package, profile=None):
pkg = DirFactory(package)
@@ -60,16 +60,18 @@ class Build(Directory):
dir_defines(self.dir))
else:
defines = dir_defines(self.dir)
+ log.debug('defines are ' + str(defines))
+ log.debug('spec file is ' + pkg.spec_file)
+ cmd = ['rpmbuild'] + defines + ['-v', param, pkg.spec_file]
+ log.debug('cmd is ' + str(cmd))
with pwd(pkg.dir):
with log_file('rpmbuild.log') as rpm_out:
with pwd(join(self.dir, 'SPECS')):
- p = Popen(['rpmbuild',
- defines, param,
- pkg.spec_file],
- stdout=rpm_out, stderr=rpm_out)
+ p = Popen(cmd, stdout=rpm_out, stderr=rpm_out)
log.info('building %s... please wait'
% pkg.spec_file)
p.wait()
+ log.debug(p.returncode)
def fetch_rpms(self):
with pwd(self.dir):
diff --git a/modules/darcs.py b/modules/darcs.py
index 552e9b5..7735e45 100644
--- a/modules/darcs.py
+++ b/modules/darcs.py
@@ -35,11 +35,15 @@ class Darcs(RevisionControl):
_type = 'darcs'
def load_dir(self, dir):
super(RevisionControl, self).load_dir(dir)
-
+
@property
def vc_url(self):
return self.cfg['vc_url']
+ @property
+ def hackage_name(self):
+ return self.cfg['hackage_name']
+
def source_dir(self, *args):
return self.cfg['source']
@@ -73,6 +77,7 @@ class Darcs(RevisionControl):
def checkout(self, tgt, url, *args):
self.cfg['vc_url'] = url
+ self.cfg['hackage_name'] = split(tgt)[1]
self.get(url, tgt, *args)
def set_current_head(self):
@@ -120,12 +125,12 @@ class Darcs(RevisionControl):
with self.src('--tag', tag):
yield
-
+
def setup_sourceball(self):
log.debug('someone set us up the bomb')
with pwd(self.dir):
with pwd(self.source_dir()):
- name = self.pkg_name
+ name = self.hackage_name
ver = self.ver()
date = self.date
full_name = '%s-%s.%sdarcs' % (name, ver, date)
@@ -134,11 +139,11 @@ class Darcs(RevisionControl):
log.debug('we get signal')
p = Popen(['darcs', 'dist', '-d', full_name],
stdout=darcs_out, stderr=darcs_out)
- log.info('generating tarball %s.tar.gz, please wait...'
+ log.info('generating tarball %s.tar.gz, please wait...'
% full_name)
p.wait()
sourceball = full_name + '.tar.gz'
move(join(self.source_dir(), sourceball), sourceball)
self.cfg['sourceball'] = sourceball
-
+
__all__ = ['Darcs']