11
11
from debian_xen.debian import VersionXen
12
12
from debian_linux.debian import Changelog
16
def __init__(self, repo, options):
18
self.tag = options.tag or 'tip'
20
def do_archive(self, info):
21
orig_dir = os.path.join(info.temp_dir, info.orig_dir)
22
args = ('hg', 'archive', '-r', self.tag, os.path.realpath(orig_dir))
23
subprocess.check_call(args, cwd=self.repo)
26
class RepoGit(object):
27
def __init__(self, repo, options):
29
self.tag = options.tag or 'HEAD'
31
def do_archive(self, info):
32
temp_tar = os.path.join(info.temp_dir, 'orig.tar')
33
args = ('git', 'archive', '--prefix', '%s/' % info.orig_dir, '-o', os.path.realpath(temp_tar), self.tag)
34
subprocess.check_call(args, cwd=self.repo)
35
subprocess.check_call(('tar', '-C', info.temp_dir, '-xf', temp_tar))
14
38
class Main(object):
15
39
log = sys.stdout.write
17
41
def __init__(self, options, repo):
18
self.options, self.repo = options, repo
42
self.options = options
20
44
self.changelog_entry = Changelog(version=VersionXen)[0]
21
45
self.source = self.changelog_entry.source
48
self.version = options.version
50
raise NotImplementedError
52
if os.path.exists(os.path.join(repo, '.hg')):
53
self.repo = RepoHg(repo, options)
54
elif os.path.exists(os.path.join(repo, '.git')):
55
self.repo = RepoGit(repo, options)
57
raise NotImplementedError
60
self.orig_dir = options.component
61
self.orig_tar = '%s_%s.orig-%s.tar.gz' % (self.source, self.version, options.component)
63
self.orig_dir = '%s-%s' % (self.source, self.version)
64
self.orig_tar = '%s_%s.orig.tar.gz' % (self.source, self.version)
23
66
def __call__(self):
25
self.dir = tempfile.mkdtemp(prefix = 'genorig', dir = 'debian')
68
self.temp_dir = tempfile.mkdtemp(prefix='genorig', dir='debian')
29
self.orig_dir = "%s-%s" % (self.source, self.version)
30
self.orig_tar = "%s_%s.orig.tar.gz" % (self.source, self.version)
36
shutil.rmtree(self.dir)
39
if self.options.version:
40
self.version = self.options.version
42
raise NotImplementedError
73
shutil.rmtree(self.temp_dir)
44
75
def do_archive(self):
45
76
self.log("Create archive.\n")
47
arg_dir = os.path.join(os.path.realpath(self.dir), self.orig_dir)
48
args = ('hg', 'archive', '-r', self.options.tag, arg_dir)
49
p = subprocess.Popen(args, cwd=self.repo)
53
def do_changelog(self):
54
self.log("Exporting changelog.\n")
56
log = open("%s/%s/Changelog" % (self.dir, self.orig_dir), 'w')
57
args = ('hg', 'log', '-r', '%s:0' % self.options.tag)
58
p = subprocess.Popen(args, cwd=self.repo, stdout=log)
77
self.repo.do_archive(self)
65
80
out = "../orig/%s" % self.orig_tar
66
81
self.log("Generate tarball %s\n" % out)
68
p = subprocess.Popen(('tar', '-C', self.dir, '-czf', out, self.orig_dir))
83
subprocess.check_call(('tar', '-C', self.temp_dir, '-czf', out, self.orig_dir))
72
86
if __name__ == '__main__':
73
87
from optparse import OptionParser
74
88
p = OptionParser(prog=sys.argv[0], usage='%prog [OPTION]... DIR')
75
p.add_option("-t", "--tag", dest="tag", default='tip')
76
p.add_option("-v", "--version", dest="version")
89
p.add_option('-c', '--component', dest='component')
90
p.add_option('-t', '--tag', dest='tag')
91
p.add_option('-v', '--version', dest='version')
77
92
options, args = p.parse_args()