Show full stack-trace on error if --verbose is given.
[zeroinstall.git] / makedist
blob8869239918c8198e785bf70aa6769328d49184e8
1 #!/usr/bin/env python
2 import zeroinstall, sys, os, shutil, time
3 from zeroinstall.injector import iface_cache, model
5 trunk_url = 'https://svn.sourceforge.net/svnroot/zero-install/trunk/0launch'
6 releases_url = 'https://svn.sourceforge.net/svnroot/zero-install/releases/0launch'
8 publish_url = 'http://0install.net/2006/interfaces/0publish'
10 def run(prog, *args):
11 if os.spawnlp(os.P_WAIT, prog, prog, *args):
12 raise Exception('Command failed: %s %s' % (prog, ' '.join(args)))
14 for line in os.popen('dpkg-parsechangelog'):
15 if line.startswith('Version: '):
16 deb_version = line.split(' ', 1)[1].strip()
17 break
18 else:
19 raise Exception('Failed to get deb version!')
21 gui_iface_path = 'zeroinstall/0launch-gui/ZeroInstall-GUI.xml'
22 gui_iface = iface_cache.iface_cache.get_interface(os.path.abspath(gui_iface_path))
23 assert len(gui_iface.implementations) == 1
24 gui_impl = gui_iface.implementations.values()[0]
25 if gui_impl.upstream_stability == model.testing:
26 run('0launch', publish_url, '--stable', gui_iface_path)
27 run('0launch', publish_url, '--set-released', time.strftime('%Y-%m-%d'), gui_iface_path)
29 os.system('svn status')
31 print "\nDebian version: " + deb_version + " (hint: debchange -i)"
33 if gui_impl.get_version() != zeroinstall.version:
34 print "GUI version is '%s'; should be '%s'" % (gui_impl.get_version(), zeroinstall.version)
35 sys.exit(1)
37 name = 'injector-' + zeroinstall.version
38 package_name = 'zeroinstall-' + name
39 a = raw_input("Release " + name + "? [y/N]")
40 if not a or a not in 'Yy':
41 sys.exit(0)
43 if os.system('cd tests && ./testall.py'):
44 print "ERROR: Unit test failure. Stop"
45 sys.exit(1)
47 print "Checking for existing release..."
48 if os.system('svn ls ' + releases_url + '/' + name + ' >/dev/null') == 0:
49 print "WARNING: releases/" + name + " already exists"
50 a = raw_input("Overwrite " + name + "? [y/N]")
51 if not a or a not in 'Yy':
52 sys.exit(0)
53 os.system('svn rm ' + releases_url + '/' + name + ' -m overwrite')
56 print "Branching..."
58 if os.system('svn cp -m "Released ' + name + '" ' +
59 trunk_url + ' ' + releases_url + '/' + name):
60 print "Failed to make release"
61 sys.exit(1)
63 if os.path.isdir(package_name):
64 shutil.rmtree(package_name)
65 os.system('svn export ' + releases_url + '/' + name + ' ' + package_name)
66 os.system('svn up')
67 os.chdir(package_name)
68 os.system('python setup.py sdist')
70 tarball = package_name + '/dist/' + package_name + '.tar.gz'
71 print "Tarball is", tarball
72 print "To build .deb: ./makedeb", tarball