From 43326c5781d2f829286961d37d3c37219e806006 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Thu, 6 Jun 2013 08:40:10 +0200 Subject: [PATCH] fixed code --- openlp/.version | 2 +- openlp/core/utils/__init__.py | 41 +++++++++++++++++++----------- setup.py | 47 ++++++++++++++++++++++------------- 3 files changed, 58 insertions(+), 32 deletions(-) diff --git a/openlp/.version b/openlp/.version index b6e0556c1..3245d0c77 100644 --- a/openlp/.version +++ b/openlp/.version @@ -1 +1 @@ -2.0.1-bzr2233 \ No newline at end of file +2.1.0-bzr2234 diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index f1c150989..5c4a4466c 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -101,25 +101,38 @@ def get_application_version(): 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. - bzr = Popen((u'bzr', u'tags', u'--sort', u'time'), stdout=PIPE) + # 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') - lines = output.splitlines() - if not lines: - tag = u'0.0.0' - revision = u'0' + tags = output.splitlines() + if not tags: + tag_version = u'0.0.0' + tag_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) + # 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) diff --git a/setup.py b/setup.py index 3bd3007b7..c9a192591 100755 --- a/setup.py +++ b/setup.py @@ -82,37 +82,50 @@ def natural_sort(seq, compare=natural_compare): 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: - bzr = Popen((u'bzr', u'tags', u'--sort', u'time'), stdout=PIPE) + # 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') - lines = output.splitlines() - if not lines: - tag = u'0.0.0' - revision = u'0' + tags = output.splitlines() + if not tags: + tag_version = u'0.0.0' + tag_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] - version = latest == revision and tag or u'%s-bzr%s' % (tag, latest) + # 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) - ver_file.close() + 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.""",