+++ /dev/null
-#!/usr/bin/python
-
-import os, os.path, sys, urllib, subprocess, shutil
-
-def retrieve_file(url):
- '''Download file (by URL) to the current directory.
-
- If the file is already present, this function does nothing.'''
-
- fname = os.path.basename(url)
- if not os.path.exists(fname):
- print 'downloading', url
- urllib.urlretrieve(url, fname)
-
-def cur_version(sourcepkg, release):
- madison = subprocess.Popen(['apt-cache', 'madison', sourcepkg], stdout=subprocess.PIPE)
- out = madison.communicate()[0]
- assert (madison.returncode == 0)
-
- for l in out.splitlines():
- (pkg, version, aptsrc) = l.split('|')
- if aptsrc.endswith('Sources') and aptsrc.find(release) > 0:
- return version.strip()
-
- raise Exception('apt-cache madison does not contain %s/%s' % (sourcepkg, release))
-
-def dsc_getfiles(dsc):
- '''Return list of files in a .dsc file (excluding the .dsc file itself).'''
-
- f = open(dsc)
- files = []
-
- # skip until 'Files:'
- for l in f:
- if l.strip() == 'Files:':
- break
-
- for l in f:
- if l.strip() == '':
- break
- if not l.startswith(' '):
- break
- fname = l.split()[2]
- if not fname.endswith('.dsc'):
- files.append(fname)
-
- f.close()
- return files
-
-#
-# entry point
-#
-
-if len(sys.argv) != 3:
- print 'Usage: syncpackage <.dsc URL or path> <target release>'
- sys.exit (1)
-
-(dscurl, release) = sys.argv[1:]
-dscname = os.path.basename(dscurl)
-basepath = os.path.dirname(dscurl)
-(srcpkg, new_ver) = dscname.split('_')
-new_ver = new_ver[:-4] # strip off '.dsc'
-
-cur_ver = cur_version(srcpkg, release)
-
-retrieve_file(dscurl)
-files = dsc_getfiles(dscname)
-
-# do we need the orig.tar.gz?
-need_orig = True
-if cur_ver.find('-') > 0 and new_ver.find('-') > 0 and \
- cur_ver.split('-')[0] == new_ver.split('-')[0]:
- need_orig = False
- #files = [f for f in files if not f.endswith('orig.tar.gz')]
-
-print 'Source %s: current version %s, new version %s' % (srcpkg, cur_ver, new_ver)
-print 'needs orig.tar.gz', need_orig
-print 'Files:', files
-for f in files:
- retrieve_file(os.path.join(basepath, f))
-
-uidx = cur_ver.find('ubuntu')
-if uidx > 0:
- cur_ver = cur_ver[:uidx]
- print 'WARNING! Overwriting modified Ubuntu version, setting current version to', cur_ver
-
-uidx = cur_ver.find('build')
-if uidx > 0:
- cur_ver = cur_ver[:uidx]
-
-orig_arg = ''
-if need_orig:
- orig_arg = '-sa'
-
-# extract package, build Source
-assert subprocess.call(['dpkg-source', '-x', dscname]) == 0
-os.chdir(srcpkg + '-' + new_ver.rsplit('-', 1)[0])
-assert subprocess.call("dpkg-genchanges -q -S %s -v%s -e\"$(getent passwd $(id -u)|cut -f5 -d:|cut -f1 -d,) <$DEBEMAIL>\" | \
- sed 's/^Distribution:.*$/Distribution: %s/; 1 i\Origin: debian/unstable' > ../%s_%s_source.changes" %
- (orig_arg, cur_ver, release, srcpkg, new_ver), shell=True) == 0
-os.chdir('..')
-shutil.rmtree(srcpkg + '-' + new_ver.split('-')[0], True)
-assert subprocess.call("debsign %s_%s_source.changes" % (srcpkg, new_ver), shell=True) == 0