~flimm/epidermis/icon-theme-bugfix

« back to all changes in this revision

Viewing changes to convenience_scripts/release.py

  • Committer: David D Lowe
  • Date: 2010-01-14 19:19:37 UTC
  • Revision ID: daviddlowe.flimm@gmail.com-20100114191937-yvklopszr839vqnm
Fixed PolicyKitShell so that it raises a ShellNotReadyException if user fails to enter correct password. managepigments.py handles this exception correctly now.
pshell_service.py checks for Python2.5 now.
Removed release.py as it is not up-to-date.
Added pt_BR, it and es .po translated languages and their screenshot files.
Updated copyright notices to 2010.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python
2
 
 
3
 
# to release, this script follows these steps:
4
 
# change version in const.py
5
 
# make sure gtkexcepthook is imported in epidermis.py and creator.py
6
 
# make sure const.DEBUG is False
7
 
# make sure debian/changelog is correct
8
 
# make sure CHANGELOG.txt is correct
9
 
# run bzr builddeb
10
 
# sign the .deb and the .tar.gz
11
 
# create release using this script, use changelog from CHANGELOG.txt
12
 
#       prompt for summary
13
 
# add .tar.gz then .deb to downloads for release
14
 
# rm ../epidermis_*
15
 
# bzr builddeb -S
16
 
# dput epidermis epidermis_*changes
17
 
 
18
 
from launchpadlib.launchpad import Launchpad, STAGING_SERVICE_ROOT, OAUTH_REALM
19
 
import os
20
 
 
21
 
new_version = "0.4"
22
 
cachedir = os.path.expanduser("~/.cache/launchpadlib")
23
 
ppa = "epidermis" # for dput
24
 
realm = OATH_REALM
25
 
 
26
 
from launchpadlib.credentials import Credentials
27
 
import gtk
28
 
import datetime, time
29
 
import sys
30
 
import subprocess
31
 
 
32
 
# edit const.py VERSION
33
 
root = os.path.dirname(os.path.dirname(os.path.abspath(os.path.realpath(__file__))))
34
 
ff = open(os.path.join(root,"epidermis/const.py"),"r")
35
 
output = ""
36
 
change = True
37
 
for line in ff.readlines():
38
 
    if line.strip().replace(" ","")[:8] == "VERSION=":
39
 
        if line.split("=")[1].strip() == "\"%s\"" % new_version:
40
 
            change = False
41
 
            break
42
 
        output += "VERSION = \"%s\"\n" % new_version
43
 
    elif line[:6] == "DEBUG=":
44
 
        if line.split("=")[1].strip()[:5] != "False":
45
 
            print >> sys.stderr, "const.py DEBUG does not equal False, exiting"
46
 
            sys.exit(1)
47
 
        else:
48
 
            output += line
49
 
    else:
50
 
        output += line
51
 
ff.close()
52
 
if change:
53
 
    ff = open(os.path.join(root,"epidermis/const.py"),"w")
54
 
    ff.write(output)
55
 
    ff.close()
56
 
 
57
 
# make sure gtkexcepthook is imported in epidermis.py and creator.py
58
 
for filename in ("epidermis.py","creator.py"):
59
 
    ff = open(os.path.join(root,"epidermis/%s"% filename),"r")
60
 
    found = False
61
 
    for line in ff.readlines():
62
 
        if line.strip()[:20] == "import gtkexcepthook":
63
 
            found = True
64
 
            break
65
 
    if not found:
66
 
        print >> sys.stderr, "import gtkexcepthook not found in %s, exiting" % filename
67
 
        sys.exit(1)
68
 
    ff.close()
69
 
    
70
 
# make sure debian/changelog is correct
71
 
ff = open(os.path.join(root,"debian/changelog"),"r")
72
 
line = ff.readlines()[0]
73
 
deb_version = line.split("(")[1].split(")")[0]
74
 
if deb_version.split("-")[0] != new_version:
75
 
    print >> sys.stderr, "debian/changelog version is not correct, exiting"
76
 
    sys.exit(1)
77
 
 
78
 
# check CHANGELOG.txt
79
 
# also, cache it, it will be added to the release
80
 
ff = open(os.path.join(root,"CHANGELOG.txt"),"r")
81
 
line = ff.readlines()[0]
82
 
if line.strip() != new_version + ":":
83
 
    print >> sys.stderr, "CHANGELOG.txt has wrong version number, exiting"
84
 
    sys.exit(1)
85
 
changelog = ""
86
 
ff.seek(0)
87
 
for line in ff.readlines()[1:]:
88
 
    changelog += line
89
 
    if line.strip() == "":
90
 
        break
91
 
ff.close()
92
 
    
93
 
# run bzr builddeb
94
 
rr = subprocess.call(["bzr","builddeb"],cwd=root)
95
 
if rr != 0:
96
 
    print >> sys.stderr, "builddeb failed"
97
 
    sys.exit(rr)
98
 
 
99
 
# sign the .deb and the .tar.gz
100
 
rr = subprocess.call("rm *.asc",shell=True,cwd=os.path.dirname(root))
101
 
rr = subprocess.call(["gpg","--armor","--sign","--detach-sig","epidermis_%s_all.deb" % deb_version],cwd=os.path.dirname(root))
102
 
rr += subprocess.call(["gpg","--armor","--sign","--detach-sig","epidermis_%s.tar.gz" % deb_version],cwd=os.path.dirname(root))
103
 
if rr != 0:
104
 
    print >> sys.stderr, "gpg failed"
105
 
    sys.exit(rr)
106
 
 
107
 
# log in to Launchpad
108
 
if os.path.exists(os.path.expanduser("~/launchpadcreds.txt")):
109
 
    credentials = Credentials()
110
 
    credentials.load(open(os.path.expanduser("~/launchpadcreds.txt")))
111
 
    launchpad = Launchpad(credentials, realm, cachedir)
112
 
else:
113
 
    launchpad = Launchpad.get_token_and_login('Epidermis script', realm, cachedir)
114
 
    launchpad.credentials.save(file(os.path.expanduser("~/launchpadcreds.txt"), "w"))
115
 
 
116
 
# find correct Launchpad milestone
117
 
ep = launchpad.projects['epidermis']
118
 
milestones = ep.all_milestones
119
 
release_milestone = None
120
 
for milestone in milestones:
121
 
    if milestone.name == new_version:
122
 
        release_milestone = milestone
123
 
        break
124
 
    print milestone.name
125
 
if release_milestone is None:
126
 
    print >> sys.stderr, "cannot find launchpad milestone: %s, exiting" % new_version
127
 
    sys.exit(1)
128
 
 
129
 
# ask for release summary
130
 
# make GUI
131
 
win = gtk.Window()
132
 
win.set_title("Summary")
133
 
win.set_default_size(300,400)
134
 
vbox = gtk.VBox(2)
135
 
vbox.set_homogeneous(False)
136
 
scr = gtk.ScrolledWindow()
137
 
textbox = gtk.TextView()
138
 
textbox.set_wrap_mode(gtk.WRAP_WORD)
139
 
button = gtk.Button()
140
 
button.set_label("OK")
141
 
def hm(aa=None):
142
 
    win.hide()
143
 
    gtk.main_quit()
144
 
button.connect("clicked",hm)
145
 
win.connect("destroy",lambda aa:sys.exit())
146
 
win.add(vbox)
147
 
scr.add(textbox)
148
 
vbox.pack_start(scr,True,True)
149
 
vbox.pack_start(button,False,False)
150
 
win.show_all()
151
 
gtk.main()
152
 
print "window closed"
153
 
# get result
154
 
buff = textbox.get_buffer()
155
 
description = buff.get_text(buff.get_start_iter(),buff.get_end_iter())
156
 
 
157
 
# find correct Launchpad release, or create it
158
 
today = datetime.datetime.today()
159
 
try:
160
 
        release = release_milestone.createProductRelease(date_released=today, changelog=changelog,\
161
 
        release_notes=description)
162
 
except:
163
 
        release = release_milestone.release
164
 
 
165
 
# upload source tarball and .deb file
166
 
print "If you receive an UTF8 error, you need to update launchpadlib to 1.5.1"
167
 
release.add_file(content_type="application/x-gzip", description="Source code",\
168
 
    file_content=open(os.path.join(os.path.dirname(root),"epidermis_%s.tar.gz" % deb_version),"rb").read(), \
169
 
    file_type="Code Release Tarball", filename="epidermis_%s.tar.gz" % deb_version, \
170
 
    signature_content=open(os.path.join(os.path.dirname(root),"epidermis_%s.tar.gz.asc" % deb_version),"r").read(),\
171
 
    signature_filename="epidermis_%s.tar.gz.asc" % deb_version)
172
 
release.add_file(content_type="application/x-debian-package", description="Debian package for Ubuntu",\
173
 
    file_content=open(os.path.join(os.path.dirname(root),"epidermis_%s_all.deb" % deb_version),"r").read(),
174
 
    file_type="Installer file", filename="epidermis_%s_all.deb" % deb_version,
175
 
    signature_content=open(os.path.join(os.path.dirname(root),"epidermis_%s_all.deb.asc" % deb_version),"r").read(),\
176
 
    signature_filename="epidermis_%s_all.deb.asc" % deb_version)
177
 
    
178
 
# save changes
179
 
print "saving changes"
180
 
release.lp_save()
181
 
 
182
 
# prepare packages for PPA
183
 
rr = subprocess.call("rm -f epidermis_*",shell=True,cwd=os.path.dirname(root))
184
 
rr += subprocess.call(["bzr","builddeb","-S"],cwd=root)
185
 
if rr != 0:
186
 
    print >> sys.stderr, "bzr builddeb -S failed. exiting"
187
 
    sys.exit(rr)
188
 
print "epidermis_%s_source.changes" % deb_version
189
 
# upload to PPA
190
 
rr = subprocess.call(["dput", ppa ,"epidermis_%s_source.changes" % deb_version],cwd=os.path.dirname(root))
191
 
print rr
192
 
 
193
 
print "Done!"
194
 
print "Now announce it on your website!"