diff options
-rw-r--r-- | modules/build.py | 2 | ||||
-rw-r--r-- | modules/darcs.py | 27 | ||||
-rw-r--r-- | modules/package.py | 9 |
3 files changed, 32 insertions, 6 deletions
diff --git a/modules/build.py b/modules/build.py index f5f7e66..60f5104 100644 --- a/modules/build.py +++ b/modules/build.py @@ -41,7 +41,7 @@ class Build(Directory): with pwd(pkg.dir): symlink(pkg.spec_file, join(self.dir, 'SPECS', pkg.spec_file())) - sball = pkg.cfg['sourceball'] + 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: diff --git a/modules/darcs.py b/modules/darcs.py index f15ef6b..add869f 100644 --- a/modules/darcs.py +++ b/modules/darcs.py @@ -22,9 +22,10 @@ import re from contextlib import contextmanager from os import getcwd +from os.path import join from subprocess import Popen, PIPE -from base.util import pwd, log, rm, log_file +from base.util import pwd, log, rm, log_file, copy, move from modules.revisioncontrol import RevisionControl hash_re = re.compile(r'hash=\'(\w|-|.*?)\'', re.MULTILINE) @@ -34,7 +35,10 @@ class Darcs(RevisionControl): _type = 'darcs' def load_dir(self, dir): super(RevisionControl, self).load_dir(dir) - self.vc_url = self.cfg['vc_url'] + + @property + def vc_url(self): + return self.cfg['vc_url'] def source_dir(self, *args): return self.cfg['source'] @@ -65,7 +69,7 @@ class Darcs(RevisionControl): stdout = darcs_out, stderr = darcs_out) log.info('darcs get %s %s, please wait....' % (src, tgt)) p.wait() - self.set_current_head() + self.set_current_head() def checkout(self, tgt, url, *args): self.cfg['vc_url'] = url @@ -116,4 +120,21 @@ class Darcs(RevisionControl): with self.src('--tag', tag): yield + @property + def sourceball(self): + with pwd(self.source_dir()): + name = self.pkg_name + ver = self.ver() + date = self.date + full_name = '%s-%s.%sdarcs' % (name, ver, date) + with log_file('darcs.log') as darcs_out: + p = Popen(['darcs', 'dist', '-d', full_name, + '--repodir', self.source_dir()], + stdout=darcs_out, stderr=darcs_out) + log.info('generating tarball %s.tar.gz, please wait...' % full_name) + p.wait() + sourceball = full_name + 'tar.gz' + mv(join(self.source_dir(), sourceball), sourceball) + return sourceball + __all__ = ['Darcs'] diff --git a/modules/package.py b/modules/package.py index f7b875c..47f9803 100644 --- a/modules/package.py +++ b/modules/package.py @@ -18,11 +18,11 @@ from __future__ import with_statement -from os.patch import split +from os.path import split from base.base import log from base.exceptions import ExecutionException -from base.util import pwd, copy, mv +from base.util import pwd, copy, move from base.profiles import ver_rel, name from modules.directory import Directory @@ -72,6 +72,11 @@ class Package(Directory): ver, rel = ver_rel(self.spec_file, profile.dist_defines()) return '%s-%s-%s.src.rpm' % (self.pkg_name, ver, rel) + def ver(self, profile): + with pwd(self.dir): + ver, rel = ver_rel(self.spec_file, profile.dist_defines() if profile else '') + return ver + def source_dir(self, *args): raise NotImplementedError |