mirror of
https://git.launchpad.net/ubuntu-dev-tools
synced 2025-03-12 15:41:09 +00:00
Initial import of syncpackage
This commit is contained in:
parent
80f53f4ddc
commit
3f771e4ce8
5
debian/changelog
vendored
5
debian/changelog
vendored
@ -13,7 +13,10 @@ ubuntu-dev-tools (0.98) UNRELEASED; urgency=low
|
||||
* lp-shell: Use "udt-lp-shell" as LP API consumer instead of the non-unique
|
||||
"test" (lp: #558531).
|
||||
|
||||
-- Michael Bienia <geser@ubuntu.com> Tue, 13 Apr 2010 18:41:36 +0200
|
||||
[ Luca Falavigna ]
|
||||
* syncpackage: new script to easily upload pristine Debian packages.
|
||||
|
||||
-- Luca Falavigna <dktrkranz@debian.org> Tue, 13 Apr 2010 23:17:22 +0200
|
||||
|
||||
ubuntu-dev-tools (0.97) lucid; urgency=low
|
||||
|
||||
|
1
setup.py
1
setup.py
@ -43,6 +43,7 @@ setup(name='ubuntu-dev-tools',
|
||||
'setup-packaging-environment',
|
||||
'submittodebian',
|
||||
'suspicious-source',
|
||||
'syncpackage',
|
||||
'ubuntu-build',
|
||||
'ubuntu-iso',
|
||||
'update-maintainer',
|
||||
|
101
syncpackage
Executable file
101
syncpackage
Executable file
@ -0,0 +1,101 @@
|
||||
#!/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
|
||||
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.split('-')[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
|
Loading…
x
Reference in New Issue
Block a user