~ressu/+junk/xen-debian

« back to all changes in this revision

Viewing changes to debian/bin/genorig.py

  • Committer: sami at haahtinen
  • Author(s): Bastian Blank
  • Date: 2011-04-15 09:38:25 UTC
  • Revision ID: sami@haahtinen.name-20110415093825-lsvv2cnyh835ly2g
Tags: 4.1.0-2
* Re-enable hvmloader:
  - Use packaged ipxe.
* Workaround incompatibility with xenstored of Xen 4.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
11
11
from debian_xen.debian import VersionXen
12
12
from debian_linux.debian import Changelog
13
13
 
 
14
 
 
15
class RepoHg(object):
 
16
    def __init__(self, repo, options):
 
17
        self.repo = repo
 
18
        self.tag = options.tag or 'tip'
 
19
 
 
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)
 
24
 
 
25
 
 
26
class RepoGit(object):
 
27
    def __init__(self, repo, options):
 
28
        self.repo = repo
 
29
        self.tag = options.tag or 'HEAD'
 
30
 
 
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))
 
36
 
 
37
 
14
38
class Main(object):
15
39
    log = sys.stdout.write
16
40
 
17
41
    def __init__(self, options, repo):
18
 
        self.options, self.repo = options, repo
 
42
        self.options = options
19
43
 
20
44
        self.changelog_entry = Changelog(version=VersionXen)[0]
21
45
        self.source = self.changelog_entry.source
22
46
 
 
47
        if options.version:
 
48
            self.version = options.version
 
49
        else:
 
50
            raise NotImplementedError
 
51
 
 
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)
 
56
        else:
 
57
            raise NotImplementedError
 
58
 
 
59
        if options.component:
 
60
            self.orig_dir = options.component
 
61
            self.orig_tar = '%s_%s.orig-%s.tar.gz' % (self.source, self.version, options.component)
 
62
        else:
 
63
            self.orig_dir = '%s-%s' % (self.source, self.version)
 
64
            self.orig_tar = '%s_%s.orig.tar.gz' % (self.source, self.version)
 
65
 
23
66
    def __call__(self):
24
67
        import tempfile
25
 
        self.dir = tempfile.mkdtemp(prefix = 'genorig', dir = 'debian')
 
68
        self.temp_dir = tempfile.mkdtemp(prefix='genorig', dir='debian')
26
69
        try:
27
 
            self.do_version()
28
 
 
29
 
            self.orig_dir = "%s-%s" % (self.source, self.version)
30
 
            self.orig_tar = "%s_%s.orig.tar.gz" % (self.source, self.version)
31
 
 
32
70
            self.do_archive()
33
 
            self.do_changelog()
34
71
            self.do_tar()
35
72
        finally:
36
 
            shutil.rmtree(self.dir)
37
 
 
38
 
    def do_version(self):
39
 
        if self.options.version:
40
 
            self.version = self.options.version
41
 
            return
42
 
        raise NotImplementedError
 
73
            shutil.rmtree(self.temp_dir)
43
74
 
44
75
    def do_archive(self):
45
76
        self.log("Create archive.\n")
46
 
 
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)
50
 
        if p.wait():
51
 
            raise RuntimeError
52
 
 
53
 
    def do_changelog(self):
54
 
        self.log("Exporting changelog.\n")
55
 
 
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)
59
 
        if p.wait():
60
 
            raise RuntimeError
61
 
 
62
 
        log.close()
 
77
        self.repo.do_archive(self)
63
78
 
64
79
    def do_tar(self):
65
80
        out = "../orig/%s" % self.orig_tar
66
81
        self.log("Generate tarball %s\n" % out)
67
82
 
68
 
        p = subprocess.Popen(('tar', '-C', self.dir, '-czf', out, self.orig_dir))
69
 
        if p.wait():
70
 
            raise RuntimeError
 
83
        subprocess.check_call(('tar', '-C', self.temp_dir, '-czf', out, self.orig_dir))
 
84
 
71
85
 
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()
78
93
    if len(args) != 1:
79
94
        raise RuntimeError