openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #20689
[Merge] lp:~googol/openlp/python3-bzrlib into lp:openlp
Andreas Preikschat has proposed merging lp:~googol/openlp/python3-bzrlib into lp:openlp.
Requested reviews:
Raoul Snyman (raoul-snyman)
Andreas Preikschat (googol)
For more details, see:
https://code.launchpad.net/~googol/openlp/python3-bzrlib/+merge/167701
Hello,
- Removed some code not compatible with python 3
To get the code working, I used the fact, that tags which come from another series have "?" as revision. So I filter them out and then use the last tag (from the bzr tags) output to determine the vesion (e. g. 2.1.0).
--
https://code.launchpad.net/~googol/openlp/python3-bzrlib/+merge/167701
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/.version'
--- openlp/.version 2013-01-08 20:44:56 +0000
+++ openlp/.version 2013-06-06 06:48:26 +0000
@@ -1,1 +1,1 @@
-2.1.0-bzr2141
+2.1.0-bzr2234
=== modified file 'openlp/core/utils/__init__.py'
--- openlp/core/utils/__init__.py 2013-04-23 21:47:02 +0000
+++ openlp/core/utils/__init__.py 2013-06-06 06:48:26 +0000
@@ -101,46 +101,38 @@
if APPLICATION_VERSION:
return APPLICATION_VERSION
if u'--dev-version' in sys.argv or u'-d' in sys.argv:
- # If we're running the dev version, let's use bzr to get the version.
- try:
- # If bzrlib is available, use it.
- from bzrlib.branch import Branch
- b = Branch.open_containing('.')[0]
- b.lock_read()
- try:
- # Get the branch's latest revision number.
- revno = b.revno()
- # Convert said revision number into a bzr revision id.
- revision_id = b.dotted_revno_to_revision_id((revno,))
- # Get a dict of tags, with the revision id as the key.
- tags = b.tags.get_reverse_tag_dict()
- # Check if the latest
- if revision_id in tags:
- full_version = u'%s' % tags[revision_id][0]
- else:
- full_version = '%s-bzr%s' % (sorted(b.tags.get_tag_dict().keys())[-1], revno)
- finally:
- b.unlock()
- except:
- # Otherwise run the command line bzr client.
- bzr = Popen((u'bzr', u'tags', u'--sort', u'time'), stdout=PIPE)
- output, error = bzr.communicate()
- code = bzr.wait()
- if code != 0:
- raise Exception(u'Error running bzr tags')
- lines = output.splitlines()
- if not lines:
- tag = u'0.0.0'
- revision = u'0'
- else:
- tag, revision = lines[-1].split()
- bzr = Popen((u'bzr', u'log', u'--line', u'-r', u'-1'), stdout=PIPE)
- output, error = bzr.communicate()
- code = bzr.wait()
- if code != 0:
- raise Exception(u'Error running bzr log')
- latest = output.split(u':')[0]
- full_version = latest == revision and tag or u'%s-bzr%s' % (tag, latest)
+ # NOTE: The following code is a duplicate of the code in setup.py. Any fix applied here should also be applied
+ # there.
+
+ # Get the revision of this tree.
+ bzr = Popen((u'bzr', u'revno'), stdout=PIPE)
+ tree_revision, error = bzr.communicate()
+ code = bzr.wait()
+ if code != 0:
+ raise Exception(u'Error running bzr log')
+
+ # Get all tags.
+ bzr = Popen((u'bzr', u'tags'), stdout=PIPE)
+ output, error = bzr.communicate()
+ code = bzr.wait()
+ if code != 0:
+ raise Exception(u'Error running bzr tags')
+ tags = output.splitlines()
+ if not tags:
+ tag_version = u'0.0.0'
+ tag_revision = u'0'
+ else:
+ # Remove any tag that has "?" as revision number. A "?" as revision number indicates, that this tag is from
+ # another series.
+ tags = [tag for tag in tags if tag.split()[-1].strip() != u'?']
+ # Get the last tag and split it in a revision and tag name.
+ tag_version, tag_revision = tags[-1].split()
+ # If they are equal, then this tree is tarball with the source for the release. We do not want the revision
+ # number in the full version.
+ if tree_revision == tag_revision:
+ full_version = tag_version
+ else:
+ full_version = u'%s-bzr%s' % (tag_version, tree_revision)
else:
# We're not running the development version, let's use the file.
filepath = AppLocation.get_directory(AppLocation.VersionDir)
=== modified file 'setup.py'
--- setup.py 2013-02-03 16:40:39 +0000
+++ setup.py 2013-06-06 06:48:26 +0000
@@ -27,12 +27,15 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
+import re
from setuptools import setup, find_packages
-import re
+from subprocess import Popen, PIPE
+
VERSION_FILE = 'openlp/.version'
SPLIT_ALPHA_DIGITS = re.compile(r'(\d+|\D+)')
+
def try_int(s):
"""
Convert string s to an integer if possible. Fail silently and return
@@ -46,6 +49,7 @@
except Exception:
return s
+
def natural_sort_key(s):
"""
Return a tuple by which s is sorted.
@@ -55,6 +59,7 @@
"""
return map(try_int, SPLIT_ALPHA_DIGITS.findall(s))
+
def natural_compare(a, b):
"""
Compare two strings naturally and return the result.
@@ -67,6 +72,7 @@
"""
return cmp(natural_sort_key(a), natural_sort_key(b))
+
def natural_sort(seq, compare=natural_compare):
"""
Returns a copy of seq, sorted by natural string sort.
@@ -76,38 +82,50 @@
temp.sort(compare)
return temp
+# NOTE: The following code is a duplicate of the code in openlp/core/utils/__init__.py. Any fix applied here should also
+# be applied there.
try:
- # Try to import Bazaar
- from bzrlib.branch import Branch
- b = Branch.open_containing('.')[0]
- b.lock_read()
- try:
- # Get the branch's latest revision number.
- revno = b.revno()
- # Convert said revision number into a bzr revision id.
- revision_id = b.dotted_revno_to_revision_id((revno,))
- # Get a dict of tags, with the revision id as the key.
- tags = b.tags.get_reverse_tag_dict()
- # Check if the latest
- if revision_id in tags:
- version = u'%s' % tags[revision_id][0]
- else:
- version = '%s-bzr%s' % \
- (natural_sort(b.tags.get_tag_dict().keys())[-1], revno)
- ver_file = open(VERSION_FILE, u'w')
- ver_file.write(version)
- ver_file.close()
- finally:
- b.unlock()
+ # Get the revision of this tree.
+ bzr = Popen((u'bzr', u'revno'), stdout=PIPE)
+ tree_revision, error = bzr.communicate()
+ code = bzr.wait()
+ if code != 0:
+ raise Exception(u'Error running bzr log')
+
+ # Get all tags.
+ bzr = Popen((u'bzr', u'tags'), stdout=PIPE)
+ output, error = bzr.communicate()
+ code = bzr.wait()
+ if code != 0:
+ raise Exception(u'Error running bzr tags')
+ tags = output.splitlines()
+ if not tags:
+ tag_version = u'0.0.0'
+ tag_revision = u'0'
+ else:
+ # Remove any tag that has "?" as revision number. A "?" as revision number indicates, that this tag is from
+ # another series.
+ tags = [tag for tag in tags if tag.split()[-1].strip() != u'?']
+ # Get the last tag and split it in a revision and tag name.
+ tag_version, tag_revision = tags[-1].split()
+ # If they are equal, then this tree is tarball with the source for the release. We do not want the revision number
+ # in the version string.
+ if tree_revision == tag_revision:
+ version_string = tag_version
+ else:
+ version_string = u'%s-bzr%s' % (tag_version, tree_revision)
+ ver_file = open(VERSION_FILE, u'w')
+ ver_file.write(version_string)
except:
ver_file = open(VERSION_FILE, u'r')
- version = ver_file.read().strip()
+ version_string = ver_file.read().strip()
+finally:
ver_file.close()
setup(
name='OpenLP',
- version=version,
+ version=version_string,
description="Open source Church presentation and lyrics projection application.",
long_description="""\
OpenLP (previously openlp.org) is free church presentation software, or lyrics projection software, used to display slides of songs, Bible verses, videos, images, and even presentations (if PowerPoint is installed) for church worship using a computer and a data projector.""",
Follow ups