[kernel] r12035 - people/waldi/scripts/snapshot
Bastian Blank
waldi at alioth.debian.org
Mon Aug 11 06:51:49 UTC 2008
Author: waldi
Date: Mon Aug 11 06:51:47 2008
New Revision: 12035
Log:
snapshot/package.py: Update to current reality.
Modified:
people/waldi/scripts/snapshot/package.py
Modified: people/waldi/scripts/snapshot/package.py
==============================================================================
--- people/waldi/scripts/snapshot/package.py (original)
+++ people/waldi/scripts/snapshot/package.py Mon Aug 11 06:51:47 2008
@@ -33,7 +33,8 @@
}
def __init__(self, config):
- parser = debian_linux.config.ConfigParser(self.schema, [config])
+ parser = debian_linux.config.ConfigParser(self.schema)
+ parser.read([config])
for section in iter(parser):
# TODO: don't split sections in parser
self[section[0]] = parser[section]
@@ -154,24 +155,32 @@
class Package(object):
def __init__(self, path, entry):
- base = entry['base']
- native = entry.get('native', False)
+ self.base = os.path.expanduser(entry['base'])
+ self.path, self.entry = path, entry
- checkout_dir = os.path.join(base, "checkout-" + path.replace('/', '_'))
- gen_dir = os.path.join(base, 'gen')
- out_dir = os.path.join(base, 'out')
- last_file = os.path.join(base, "last-" + path.replace('/', '_'))
+ def __call__(self):
+ import tempfile
+ self.dir = tempfile.mkdtemp(dir = self.base)
+ try:
+ self.do()
+ finally:
+ shutil.rmtree(self.dir)
+
+ def do(self):
+ checkout_dir = os.path.join(self.base, "checkout-" + path.replace('/', '_'))
+ last_file = os.path.join(self.base, "last-" + path.replace('/', '_'))
+ native = self.entry.get('native', False)
- checkout_storage = repository_svn(checkout_dir, "%s/%s" % (entry['repository'], path))
+ checkout_storage = repository_svn(checkout_dir, "%s/%s" % (self.entry['repository'], path))
self.changelog = debian_linux.debian.Changelog(checkout_dir)[0]
package_name = self.changelog.source
package_version = self.changelog.version.upstream
package = "%s-%s" % (package_name, package_version)
- package_dir = os.path.join(gen_dir, package)
+ package_dir = os.path.join(self.dir, package)
package_orig = "%s_%s.orig.tar.gz" % (package_name, package_version)
- package_orig_source = "%s/%s" % (entry['orig'], package_orig)
+ package_orig_source = "%s/%s" % (os.path.expanduser(self.entry['orig']), package_orig)
for line in os.popen("svn info %s" % checkout_dir, 'r').read().split('\n'):
if line.startswith('Last Changed Rev: '):
@@ -182,22 +191,21 @@
if revision <= last.revision:
return
- if not os.path.exists(out_dir):
- os.makedirs(out_dir , 0755)
+ c = self.changelog
+ version = c.version
+ if c.distribution in ('stable', 'testing', 'unstable', 'experimental'):
+ delemiter = ''
+ elif c.distribution in ('UNRELEASED',):
+ delemiter = '~'
+ else:
+ raise "Unknown distribution"
- self.version(revision)
+ version = version.__class__(str(version) + "%ssnapshot.%d" % (delemiter, revision))
package_storage = checkout_storage.copy(package_dir, storage)
if not native:
- try:
- os.unlink(os.path.join(gen_dir, package_orig))
- except OSError: pass
- try:
- os.unlink(os.path.join(out_dir, package_orig))
- except OSError: pass
- os.symlink(package_orig_source, os.path.join(gen_dir, package_orig))
- os.symlink(package_orig_source, os.path.join(out_dir, package_orig))
+ os.symlink(package_orig_source, os.path.join(self.dir, package_orig))
changelog = "%s/debian/changelog" % package_dir
changelog_text = file(changelog).read()
@@ -211,8 +219,8 @@
-- %s %s
""" % (
- package_name, self.version, entry['dist'],
- entry['changelog_text'], entry['changelog_maintainer'],
+ package_name, version, self.entry['dist'],
+ self.entry['changelog_text'], self.entry['changelog_maintainer'],
time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()),
)
)
@@ -225,7 +233,7 @@
raise RuntimeError
list = ['dpkg-buildpackage', '-S']
- sign = entry.get('sign', None)
+ sign = self.entry.get('sign', None)
if sign:
list.append('-k%s' % sign)
if not native:
@@ -235,39 +243,12 @@
list.append('-sd')
spawnv_chdir(os.P_WAIT, "dpkg-buildpackage", list, package_dir)
- suffixes = ['.dsc', '_source.changes']
- if native:
- suffixes.append('.tar.gz')
- else:
- suffixes.append('.diff.gz')
-
- for suffix in suffixes:
- prefix = '%s_%s' % (package_name, version)
- gen = os.path.join(gen_dir, "%s%s" % (prefix, suffix))
- out = os.path.join(out_dir, "%s%s" % (prefix, suffix))
- os.link(gen, out)
- os.unlink(gen)
-
- spawnv_chdir(os.P_WAIT, 'dput', ['dput', entry['upload'], '%s_%s_source.changes' % (package_name, version)], out_dir)
+ spawnv_chdir(os.P_WAIT, 'dput', ['dput', self.entry['upload'], '%s_%s_source.changes' % (package_name, version)], self.dir)
last.revision = revision
last.upstream = version.upstream
last.write()
- package_storage.remove()
-
- def version(self, revision):
- c = self.changelog
- version = c.version
- if c.distribution in ('stable', 'testing', 'unstable', 'experimental'):
- delemiter = ''
- elif c.distribution in ('UNRELEASED',):
- delemiter = '~'
- else:
- raise "Unknown distribution"
-
- version.debian += "%ssnapshot.%d" % (delemiter, revision)
-
if __name__ == '__main__':
config = Config(sys.argv[1])
if len(sys.argv) > 2:
@@ -277,7 +258,7 @@
for path in paths:
try:
c = config[path]
- Package(path, c)
+ Package(path, c)()
except Exception, e:
import traceback
traceback.print_exc()
More information about the Kernel-svn-changes
mailing list