diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/announce-wrangler.py | 159 | ||||
-rw-r--r-- | tools/commit-wrangler.py | 113 | ||||
-rw-r--r-- | tools/patch-wrangler.py | 72 | ||||
-rw-r--r-- | tools/ppa-magic.py | 156 | ||||
-rw-r--r-- | tools/release-wrangler.py | 377 | ||||
-rw-r--r-- | tools/xlib.py | 43 |
6 files changed, 0 insertions, 920 deletions
diff --git a/tools/announce-wrangler.py b/tools/announce-wrangler.py deleted file mode 100644 index cf924864..00000000 --- a/tools/announce-wrangler.py +++ /dev/null @@ -1,159 +0,0 @@ -import commands -import xml.dom.minidom -import glob -import wordpresslib # http://www.blackbirdblog.it/programmazione/progetti/28 -import ConfigParser -import os -import re - -doaps = glob.glob("*.doap") - -if len(doaps)==0: - print 'Please run this from the top-level directory.' - -description=str(xml.dom.minidom.parse(doaps[0]).getElementsByTagName('shortdesc')[0].firstChild.toxml().strip()) - -program_name = doaps[0][:-5] -print program_name - -markup = { - 'text': { - 'open': ' *', - 'newline': ' ', - 'close': '', - }, - 'html': { - 'open': '<li>', - 'newline': '', - 'close': '</li>', - }, -} - -def text_list(list, type): - result = [] - for entry in list: - result.append(markup[type]['open']) - for word in entry.split(): - if len(result[-1]+word)>75: - result.append(markup[type]['newline']) - result[-1] = result[-1] + ' ' + word - if result[-1].strip()=='': - result = result[:-1] - result[-1] = result[-1] + markup[type]['close'] - return '\n'.join(result) - -news = file('NEWS') -news_entry = [] -header_count = 0 - -while header_count<2: - line = news.readline().replace('\n', '') - news_entry.append(line) - if line.startswith('='): - header_count = header_count + 1 - -news.close() - -version = news_entry[0] -news_entry = news_entry[2:-2] - -print version -majorminor = '.'.join(version.split('.')[:2]) -md5s = commands.getoutput('ssh master.gnome.org md5sum /ftp/pub/GNOME/sources/metacity/%s/%s-%s.tar*' % (majorminor, program_name, version)).split() -if len(md5s)!=4: - print 'WARNING: There were not two known tarballs' - -md5_values = {} - -for i in range(0, len(md5s), 2): - a = md5s[i+1] - md5_values[a[a.rindex('.'):]] = md5s[i] - -print md5_values - -changes = [] -translations = '' - -reading_changes = False -reading_translations = False -for line in news_entry: - line = line.replace('(#', '(GNOME bug ').strip() - if line.startswith('-'): - changes.append(line[2:]) - reading_changes = True - elif reading_changes: - if line=='': - reading_changes = False - else: - changes[-1] = changes[-1] + ' ' + line - elif line=='Translations': - reading_translations = True - elif reading_translations: - translations = translations + ' ' + line - -translations = translations[1:] - -text_links = [] -for i in ('.bz2', '.gz'): - text_links.append('%s http://download.gnome.org/sources/metacity/%s/%s-%s.tar%s' % ( - md5_values[i], majorminor, program_name, version, i)) - -text_version = """\ -What is it ? -============ -%s - -What's changed ? -================ -%s - -Translations: -%s - -Where can I get it ? -==================== -%s""" % (text_list([description], 'text'), - text_list(changes, 'text'), - text_list([translations], 'text'), - text_list(text_links, 'text')) - -print "============ x8 x8 x8 ===== SEND THIS TO gnome-announce-list" -print text_version -print "============ x8 x8 x8 ===== ENDS" - -translations = re.sub('\((.*)\)', - '(<a href="http://svn.gnome.org/viewvc/metacity/trunk/po/\\1.po">\\1</a>)', - translations) - -html_version = """\ -<b>What is it ?</b><br /> -<ul>%s</ul> - -<b>What's changed ?</b><br /> -<ul>%s</ul> - -<i>Translations:</i><br /> -<ul>%s</ul> - -<b>Where can I get it ?</b><br /> -<ul>%s</ul>""" % (text_list([description], 'html'), - text_list(changes, 'html'), - text_list([translations], 'html'), - text_list(text_links, 'html')) - -cp = ConfigParser.ConfigParser() -cp.read(os.environ['HOME']+'/.config/metacity/tools.ini') - -wp = wordpresslib.WordPressClient( - cp.get('release-wrangler', 'blogurl'), - cp.get('release-wrangler', 'bloguser'), - cp.get('release-wrangler', 'blogpass')) -wp.selectBlog(cp.getint('release-wrangler', 'blognumber')) -post = wordpresslib.WordPressPost() -post.title = '%s %s released' % (program_name, version) -post.description = html_version -# appears to have been turned off-- ask jdub -#idPost = wp.newPost(post, False) - -print html_version - diff --git a/tools/commit-wrangler.py b/tools/commit-wrangler.py deleted file mode 100644 index f3e15ea1..00000000 --- a/tools/commit-wrangler.py +++ /dev/null @@ -1,113 +0,0 @@ -#!/usr/bin/python -# -# commit-wrangler.py - basic script to commit patches, primarily for -# Metacity, might be useful for others. In early stages of -# development. -# -# Copyright (C) 2008 Thomas Thurman -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -import time -import commands -import sys -import os -import posixpath -import ConfigParser -import re - -# FIXME: Needs tidying into separate functions. - -# FIXME: Some of this is duplicated from release-wrangler. -# This should go in a common library when the dust has settled. - -# FIXME: Some way of updating Bugzilla when we mention a bug, -# and including the revision number, would be really useful. - -# FIXME: This should co-operate with patch-wrangler in that -# p-w should find out the name of a patch's submitter from bugzilla -# and store it in a dotfile, and then we can use it here. -# Also, it should find out and store the bug number, so we can -# write it as "(Bug #nnn)", which will make the previous paragraph's -# idea even more useful. - -def get_up_to_date(): - "First step is always to get up to date." - os.system("svn up") - -def report_error(message): - print message - sys.exit(255) - -def favourite_editor(): - e = os.environ - if e.has_key('VISUAL'): return e['VISUAL'] - if e.has_key('EDITOR'): return e['EDITOR'] - if os.access('/usr/bin/nano', os.F_OK): - return '/usr/bin/nano' - report_error("I can't find an editor for you!") - -def wordwrap(str, prefix=''): - "Really simple wordwrap" - - # Ugly hack: - # We know that all open brackets are preceded by spaces. - # We don't want to split on these spaces. Therefore: - str = str.replace(' (','(') - - result = [''] - for word in str.split(): - - if result[-1]=='': - candidate = prefix + word - else: - candidate = '%s %s' % (result[-1], word) - - if len(candidate)>80: - result.append(prefix+word) - else: - result[-1] = candidate - - return '\n'.join(result).replace('(',' (') - -##################### - -change_filename = 'ChangeLog' - -get_up_to_date() - -cp = ConfigParser.ConfigParser() -cp.read(os.environ['HOME']+'/.config/metacity/tools.ini') - -os.environ['CHANGE_LOG_NAME'] = cp.get('commit-wrangler', 'name') -os.environ['CHANGE_LOG_EMAIL_ADDRESS'] = cp.get('commit-wrangler', 'address') - -print commands.getoutput('moap cl prep') - -time_before = os.stat(change_filename)[8] -os.system(favourite_editor()+' +6 %s ' % (change_filename)) - -if os.stat(change_filename)[8] == time_before: - print 'No change; aborting:' - print commands.getoutput('svn revert '+change_filename) - sys.exit(0) - -# Update the changelog - -checkin = commands.getoutput("moap cl ci") - -print re.sub(".*Committed revision (\\d+).*", 'http://svn.gnome.org/viewvc/metacity?rev=\\1&view=rev', checkin) - diff --git a/tools/patch-wrangler.py b/tools/patch-wrangler.py deleted file mode 100644 index f1bb65b0..00000000 --- a/tools/patch-wrangler.py +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/python - -# Little script to grab a patch, compile it, and make it. - -# Copyright (C) 2008 Thomas Thurman -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - - -import os -import sys -import posixpath - -# FIXME: What would be lovely is an Epiphany extension to call this from Bugzilla pages - -# FIXME: Should be possible (but currently isn't) to get this from the patch number -program = 'metacity' - -if len(sys.argv)<2: - print 'Specify patch number' - sys.exit(255) - -patchnum = sys.argv[1] - -patchdir = posixpath.expanduser('~/patch/%s/%s' % (program, patchnum)) - -os.makedirs(patchdir) -os.chdir(patchdir) - -if os.system("svn co svn+ssh://svn.gnome.org/svn/%s/trunk ." % (program))!=0: - print "Checkout failed." - sys.exit(255) - -if os.system("wget http://bugzilla.gnome.org/attachment.cgi?id=%s -O - -q|patch -p 0" % (patchnum))!=0: - print "Patch failed." - sys.exit(255) - -if os.system("./autogen.sh")!=0: - print "Autogen failed." - sys.exit(255) - -if os.system("make")!=0: - print "Make failed." - sys.exit(255) - -print -print "It all seems to have worked. Don't look so surprised." -print "Dropping you into a new shell now so you're in the right" -print "directory; this does mean you'll have to exit twice when" -print "you're finished." -print - -shell = '/bin/sh' -if os.environ.has_key('SHELL'): - shell = os.environ['SHELL'] - -if os.system(shell): - print "Couldn't launch the shell, though." - sys.exit(255) diff --git a/tools/ppa-magic.py b/tools/ppa-magic.py deleted file mode 100644 index 5a7e3266..00000000 --- a/tools/ppa-magic.py +++ /dev/null @@ -1,156 +0,0 @@ -#!/usr/bin/python -# -# This is a heavily experimental script to upload nightly snapshots -# to Canonical's Launchpad PPA system. -# -# Copyright (C) 2008 Thomas Thurman <tthurman@gnome.org> -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -import time -import os - -app = 'metacity' -try_number = 1 # if you mess it up within a day -upstream_version = '2.25.0' # should take this from configure.in, really -version = '1:%s~%s-0ubuntu~ppa%d' % (upstream_version, - time.strftime('%Y%m%d'), - try_number) - -pkg_name = app # according to motu people -svn_url = 'http://svn.gnome.org/svn/'+app+'/trunk' -maintainer = 'Thomas Thurman <tthurman@gnome.org>' -key = 'D5743F03' -basedir = os.getcwd()+'/'+pkg_name # or, if you prefer, '/tmp/'+pkg_name - -def write_to_files(path): - - file(path+'/changelog', 'w').write(\ -pkg_name+""" ("""+version+""") hardy; urgency=low - - * Nightly release from trunk. - - -- """+maintainer+' '+time.strftime("%a, %d %b %Y %H:%M:%S %z")+""" -""") - - file(path+'/rules', 'w').write(\ -"""#!/usr/bin/make -f -include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/class/gnome.mk -""") - - os.chmod(path+'/rules', 0777) - - # Compat should be 6 to keep debhelper happy. - file(path+'/compat', 'w').write(\ -"""6 -""") - - file(path+'/control', 'w').write(\ -"""Source: """+pkg_name+""" -Section: devel -Priority: optional -Maintainer: """+maintainer+""" -Standards-Version: 3.8.0 -Build-Depends: cdbs (>= 0.4.41), - debhelper (>= 5), - gettext, - libgtk2.0-dev (>= 2.10.0-1~), - liborbit2-dev (>= 1:2.10.2-1.1~), - libpopt-dev, - libxml2-dev (>= 2.4.23), - libgconf2-dev (>= 2.6.1-2), - libglade2-dev (>= 2.4.0-1~), - libice-dev, - libsm-dev, - libx11-dev, - libxt-dev, - libxext-dev, - libxrandr-dev, - x11proto-core-dev, - libxinerama-dev, - libstartup-notification0-dev (>= 0.7), - libxml-parser-perl, - gnome-pkg-tools (>= 0.10), - dpkg-dev (>= 1.13.19), - libxcomposite-dev -Homepage: http://blogs.gnome.org/metacity/ - -Package: """+pkg_name+""" -Architecture: any -Depends: ${shlibs:Depends} -Description: Lightweight GTK2 compositing window manager (nightly trunk) - Metacity is a small window manager, using gtk2 to do everything. - . - As the author says, metacity is a "Boring window manager for the adult in - you. Many window managers are like Marshmallow Froot Loops; Metacity is - like Cheerios." - . - This is the nightly trunk upload. It may not be the epitome of stability. -""") - - file(path+'/copyright', 'w').write(\ -"""This package was automatically debianised by a script. - -It was downloaded from """+svn_url+""" - - Upstream Author and Copyright Holder: Havoc Pennington - hp@redhat.com -and others. - -License: - - This package is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -On Debian systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL'. -""") - -####################### - -if basedir!='.' and basedir!='..' and os.access(basedir, os.F_OK): - os.system('rm -rf '+basedir) - print 'Warning: deleted old version of '+basedir+'.' - -os.system('svn export -q '+svn_url+' '+basedir) -os.mkdir(basedir+'/debian') - -write_to_files(basedir+'/debian') - -os.chdir(basedir) - -# Make sure we get up to having a "configure", or it won't build. -os.system('NOCONFIGURE=1 ./autogen.sh') - -os.chdir(basedir+'/debian') - -os.system('debuild -rfakeroot -S -k'+key) - -os.system('dput -f '+pkg_name+' '+basedir+'_'+version[2:]+'_source.changes') - -# And then we should clean up. - diff --git a/tools/release-wrangler.py b/tools/release-wrangler.py deleted file mode 100644 index 548af7fe..00000000 --- a/tools/release-wrangler.py +++ /dev/null @@ -1,377 +0,0 @@ -#!/usr/bin/python -# -# release-wrangler.py - very basic release system, primarily for -# Metacity, might be useful for others. In very early stages of -# development. -# -# Copyright (C) 2008 Thomas Thurman -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -import os -import posixpath -import re -import sys -import commands -import time -import commands - -def report_error(message): - print message - sys.exit(255) - -def get_up_to_date(): - "First step is always to get up to date." - os.system("svn up") - -# yes, I know this is MY username. I will come back and fix it -# later, but for now there is a lot else to do. FIXME -your_username = 'Thomas Thurman <tthurman@gnome.org>' - -def changelog_and_checkin(filename, message): - changelog = open('ChangeLog.tmp', 'w') - changelog.write('%s %s\n\n * %s: %s\n\n' % ( - time.strftime('%Y-%m-%d',time.gmtime()), - your_username, - filename, - message)) - - for line in open('ChangeLog').readlines(): - changelog.write(line) - - changelog.close() - os.rename('ChangeLog.tmp', 'ChangeLog') - - if os.system('svn commit -m "%s"' % (message.replace('"','\\"')))!=0: - report_error("Could not commit; bailing.") - -def check_we_are_up_to_date(): - changed = [] - for line in commands.getoutput('/usr/bin/svn status').split('\n'): - if line!='' and (line[0]=='C' or line[0]=='M'): - if line.find('release-wrangler.py')==-1 and line.find('ChangeLog')==-1: - # we should be insensitive to changes in this script itself - # to avoid chicken-and-egg problems - changed.append(line[1:].lstrip()) - - if changed: - report_error('These files are out of date; I can\'t continue until you fix them: ' + \ - ', '.join(changed)) - -def version_numbers(): - # FIXME: This is all very metacity-specific. Compare fusa, etc - """Okay, read through configure.in and find who and where we are. - - We also try to figure out where the next micro version number - will be; some programs (e.g. Metacity) use a custom numbering - scheme, and if they have a list of numbers on the line before the - micro version then that will be used. Otherwise we will just - increment.""" - - version = {} - previous_line = '' - for line in file("configure.in").readlines(): - product_name = re.search("^AC_INIT\(\[([^\]]*)\]", line) - if product_name: - version['name'] = product_name.group(1) - - version_number = re.search("^m4_define\(\[.*_(.*)_version\], \[(\d+)\]", line) - - if version_number: - version_type = version_number.group(1) - version_value = int(version_number.group(2)) - - version[version_type] = version_value - - if version_type == 'micro': - group_of_digits = re.search("^\#\s*([0-9, ]+)\n$", previous_line) - if group_of_digits: - versions = [int(x) for x in group_of_digits.group(1).split(',')] - - if version_value in versions: - try: - version_index = versions.index(version_value)+1 - - if versions[version_index] == version['micro']: - # work around metacity giving "1" twice - version_index += 1 - - version['micro_next'] = versions[version_index] - except: - report_error("You gave a list of micro version numbers, but we've used them up!") - else: - report_error("You gave a list of micro version numbers, but the current one wasn't in it! Current is %s and your list is %s" % ( - `version_value`, `versions`)) - - previous_line = line - - if not 'micro_next' in version: - version['micro_next'] = version['micro']+1 - - version['string'] = '%(major)s.%(minor)s.%(micro)s' % (version) - version['filename'] = '%(name)s-%(string)s.tar.gz' % (version) - - return version - -def check_file_does_not_exist(version): - if os.access(version['filename'], os.F_OK): - report_error("Sorry, you already have a file called %s! Please delete it or move it first." % (version['filename'])) - -def is_date(str): - return len(str)>4 and str[4]=='-' - -def scan_changelog(version): - changelog = file("ChangeLog").readlines() - - # Find the most recent release. - - release_date = None - - for line in changelog: - if is_date(line): - release_date = line[:10] - - if "Post-release bump to" in line: - changelog = changelog[:changelog.index(line)+1] - break - - contributors = {} - thanks = '' - entries = [] - - def assumed_surname(name): - if name=='': return '' - # might get more complicated later, but for now... - return name.split()[-1] - - def assumed_forename(name): - if name=='': return '' - return name.split()[0] - - bug_re = re.compile('bug \#?(\d+)', re.IGNORECASE) - hash_re = re.compile('\#(\d+)') - - for line in changelog: - if is_date(line): - line = line[10:].lstrip() - line = line[:line.find('<')].rstrip() - contributors[assumed_surname(line)] = line - entries.append('(%s)' % (assumed_forename(line))) - else: - match = bug_re.search(line) - if not match: match = hash_re.search(line) - if match: - entries[-1] += ' (#%s)' % (match.group(1)) - - # FIXME: getting complex enough we should be returning a dictionary - return (contributors, changelog, entries, release_date) - -def wordwrap(str, prefix=''): - "Really simple wordwrap" - - # Ugly hack: - # We know that all open brackets are preceded by spaces. - # We don't want to split on these spaces. Therefore: - str = str.replace(' (','(') - - result = [''] - for word in str.split(): - - if result[-1]=='': - candidate = prefix + word - else: - candidate = '%s %s' % (result[-1], word) - - if len(candidate)>80: - result.append(prefix+word) - else: - result[-1] = candidate - - return '\n'.join(result).replace('(',' (') - -def favourite_editor(): - e = os.environ - if e.has_key('VISUAL'): return e['VISUAL'] - if e.has_key('EDITOR'): return e['EDITOR'] - if os.access('/usr/bin/nano', os.F_OK): - return '/usr/bin/nano' - report_error("I can't find an editor for you!") - -def edit_news_entry(version): - - # FIXME: still needs a lot of tidying up. Translator stuff especially needs to be - # factored out into a separate function. - - (contributors, changelog, entries, release_date) = scan_changelog(version) - - contributors_list = contributors.keys() - contributors_list.sort() - thanksline = ', '.join([contributors[x] for x in contributors_list]) - thanksline = thanksline.replace(contributors[contributors_list[-1]], 'and '+contributors[contributors_list[-1]]) - - thanks = '%s\n%s\n\n' % (version['string'], '='*len(version['string'])) - thanks += wordwrap('Thanks to %s for improvements in this version.' % (thanksline)) - thanks += '\n\n' - for line in entries: - thanks += ' - xxx %s\n' % (line) - - # and now pick up the translations. - - translations = {} - language_re = re.compile('\*\s*(.+)\.po') - - for line in file("po/ChangeLog").readlines(): - match = language_re.search(line) - if match: - translations[match.group(1)] = 1 - if is_date(line) and line[:10]<release_date: - break - - translator_list = translations.keys() - translator_list.sort() - - last_translator_re = re.compile('Last-Translator:([^<"]*)', re.IGNORECASE) - - def translator_name(language): - name = 'unknown' - - if ',' in language: - language = language[:language.find(',')].replace('.po','') - - filename = 'po/%s.po' % (language) - - if not os.access(filename, os.F_OK): - # Never mind the translator being unknown, we don't even - # know about the language! - return 'Mystery translator (%s)' % (language) - - for line in file(filename).readlines(): - match = last_translator_re.search(line) - if match: - name = match.group(1).rstrip().lstrip() - break - - return "%s (%s)" % (name, language) - - thanks += '\nTranslations\n' - thanks += wordwrap(', '.join([translator_name(x) for x in translator_list]), ' ') - thanks += '\n\n' - - changes = '## '+ ' '.join(changelog).replace('\n', '\n## ') - - filename = posixpath.expanduser("~/.release-wrangler-%(name)s-%(string)s.txt" % version) - tmp = open(filename, 'w') - tmp.write('## You are releasing %(name)s, version %(major)s.%(minor)s.%(micro)s.\n' % version) - tmp.write('## The text at the foot of the page is the part of the ChangeLog which\n') - tmp.write('## has changed since the last release. Please summarise it.\n') - tmp.write('## Anything preceded by a # is ignored.\n') - tmp.write(thanks) - tmp.write(changes) - tmp.close() - - os.system(favourite_editor()+' +6 %s ' % (filename)) - # FIXME: if they abort, would be useful to abort here too - - # Write it out to NEWS - - version['announcement'] = '' - - news_tmp = open('NEWS.tmp', 'a') - for line in open(filename, 'r').readlines(): - if line=='' or line[0]!='#': - news_tmp.write(line) - version['announcement'] += line - - for line in open('NEWS').readlines(): - news_tmp.write(line) - - news_tmp.close() - - os.rename('NEWS.tmp', 'NEWS') - changelog_and_checkin('NEWS', '%(major)s.%(minor)s.%(micro)s release.' % (version)) - -def build_it_all(version): - "Now build the thing." - autogen_prefix= '/prefix' # FIXME: this is specific to tthurman's laptop! - - # FIXME: These should use os.system - - if os.spawnl(os.P_WAIT, './autogen.sh', './autogen.sh', '--prefix', autogen_prefix) != 0: - print 'autogen failed' - sys.exit(255) - - if os.spawnl(os.P_WAIT, '/usr/bin/make', '/usr/bin/make') != 0: - print 'make failed' - sys.exit(255) - - if os.spawnl(os.P_WAIT, '/usr/bin/make', '/usr/bin/make', 'install') != 0: - print 'install failed' - sys.exit(255) - - if os.spawnl(os.P_WAIT, '/usr/bin/make', '/usr/bin/make', 'distcheck') != 0: - print 'distcheck failed' - sys.exit(255) - - if not os.access(version['filename'], os.F_OK): - print "Sorry, we don't appear to have a file called %s!" % (archive_filename) - sys.exit(255) - -def upload(version): - # No, we won't have a configuration option to set your name on master.g.o; that's - # what ~/.ssh/config is for. - - print "Uploading..." - upload_result = commands.getstatusoutput('scp %s master.gnome.org:' % (version['filename'])) - - if upload_result[0]!=0: - report_error("There appears to have been an uploading problem: %d\n%s\n" % (upload_result[0], upload_result[1])) - -def increment_version(version): - configure_in = file('configure.in.tmp', 'w') - for line in file('configure.in'): - if re.search("^m4_define\(\[.*_micro_version\], \[(\d+)\]", line): - line = line.replace('[%(micro)s]' % version, '[%(micro_next)s]' % version) - configure_in.write(line) - - configure_in.close() - os.rename('configure.in.tmp', 'configure.in') - - changelog_and_checkin('configure.in', 'Post-release bump to %(major)s.%(minor)s.%(micro_next)s.' % version) - -def tag_the_release(version): - version['ucname'] = version['name'].upper() - if os.system("svn cp -m release . svn+ssh://svn.gnome.org/svn/%(name)s/tags/%(ucname)s_%(major)s_%(minor)s_%(micro)s" % (version))!=0: - report_error("Could not tag; bailing.") - -def md5s(version): - return commands.getstatusoutput('ssh master.gnome.org "cd /ftp/pub/GNOME/sources/%(name)s/%(major)s.%(minor)s/;md5sum $(name)s-%(major)s.%(minor)s.%(micro)s.tar*"' % (version)) - -def main(): - get_up_to_date() - check_we_are_up_to_date() - version = version_numbers() - check_file_does_not_exist(version) - edit_news_entry(version) - build_it_all(version) - tag_the_release(version) - increment_version(version) - upload(version) - print version['announcement'] - print "-- Done --" - -if __name__=='__main__': - main() - diff --git a/tools/xlib.py b/tools/xlib.py deleted file mode 100644 index 4a244c4f..00000000 --- a/tools/xlib.py +++ /dev/null @@ -1,43 +0,0 @@ -# Very simple Xlib-based client in Python. -# Copyright (c) 2008 Thomas Thurman <tthurman@gnome.org>; GPL 2.0 or later. -# Originally based around example code in python-xlib -# by Peter Liljenberg <petli@ctrl-c.liu.se>. - -import sys - -from Xlib import X -from Xlib.protocol import display -from Xlib.protocol.request import * - -display = display.Display() -screen = display.info.roots[display.default_screen] -window = display.allocate_resource_id() -gc = display.allocate_resource_id() - -CreateWindow(display, None, - depth = screen.root_depth, - wid = window, - parent = screen.root, - x = 100, y = 100, width = 250, height = 250, border_width = 2, - window_class = X.InputOutput, visual = X.CopyFromParent, - background_pixel = screen.white_pixel, - event_mask = (X.ExposureMask | - X.StructureNotifyMask | - X.ButtonPressMask | - X.ButtonReleaseMask | - X.Button1MotionMask), - colormap = X.CopyFromParent) - -CreateGC(display, None, gc, window) - -MapWindow(display, None, window) - -while 1: - event = display.next_event() - - if event.type == X.DestroyNotify: - sys.exit(0) - - print event - - |