diff --git a/MANIFEST.in b/MANIFEST.in index 1f852d6..fe84bcb 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2,6 +2,7 @@ include COPYING.txt include README.rst include CONTRIBUTORS.rst include overviewer.py +include sample.settings.py recursive-include contrib/ *.py recursive-include overviewer_core/*.py recursive-include overviewer_core/src/ *.c *.h diff --git a/overviewer.py b/overviewer.py index 3a0cb44..18b085e 100755 --- a/overviewer.py +++ b/overviewer.py @@ -39,7 +39,7 @@ try: from overviewer_core import c_overviewer except ImportError: ## try to find the build extension - ext = os.path.join(this_dir, "c_overviewer.%s" % ("pyd" if platform.system() == "Windows" else "so")) + ext = os.path.join(this_dir, "overviewer_core", "c_overviewer.%s" % ("pyd" if platform.system() == "Windows" else "so")) if os.path.exists(ext): print "Something has gone wrong importing the c_overviewer extension. Please" print "make sure it is up-to-date (clean and rebuild)" @@ -113,13 +113,14 @@ def main(): if options.version: - print "Minecraft-Overviewer" - print "Git version: %s" % util.findGitVersion() try: import overviewer_core.overviewer_version as overviewer_version + print "Minecraft-Overviewer %s" % overviewer_version.VERSION + print "Git commit: %s" % overviewer_version.HASH print "built on %s" % overviewer_version.BUILD_DATE print "Build machine: %s %s" % (overviewer_version.BUILD_PLATFORM, overviewer_version.BUILD_OS) except: + print "version info not found" pass sys.exit(0) diff --git a/overviewer_core/googlemap.py b/overviewer_core/googlemap.py index 44fadff..8edb0a3 100644 --- a/overviewer_core/googlemap.py +++ b/overviewer_core/googlemap.py @@ -24,6 +24,7 @@ import json import util from c_overviewer import get_render_mode_inheritance +import overviewer_version """ This module has routines related to generating a Google Maps-based @@ -132,7 +133,8 @@ class MapGen(object): index = open(indexpath, 'r').read() index = index.replace( "{time}", str(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()))) - index = index.replace("{version}", util.findGitVersion()) + versionstr = "%s (%s)" % (overviewer_version.VERSION, overviewer_version.HASH[:7]) + index = index.replace("{version}", versionstr) with open(os.path.join(self.destdir, "index.html"), 'w') as output: output.write(index) diff --git a/overviewer_core/util.py b/overviewer_core/util.py index 2da93ed..2bd15b5 100644 --- a/overviewer_core/util.py +++ b/overviewer_core/util.py @@ -21,6 +21,7 @@ import imp import os import os.path import sys +from subprocess import Popen, PIPE def get_program_path(): if hasattr(sys, "frozen") or imp.is_frozen("__main__"): @@ -34,8 +35,8 @@ def get_program_path(): return os.path.dirname(sys.argv[0]) - -def findGitVersion(): +# does not require git, very likely to work everywhere +def findGitHash(): this_dir = get_program_path() if os.path.exists(os.path.join(this_dir,".git")): with open(os.path.join(this_dir,".git","HEAD")) as f: @@ -48,6 +49,24 @@ def findGitVersion(): else: return data else: + try: + import overviewer_version + return overviewer_version.HASH + except: + return "unknown" + +def findGitVersion(): + try: + p = Popen(['git', 'describe', '--tags'], stdout=PIPE, stderr=PIPE) + p.stderr.close() + line = p.stdout.readlines()[0] + if line.startswith('release-'): + line = line.split('-', 1)[1] + # turn 0.1.2-50-somehash into 0.1.2-50 + # and 0.1.3 into 0.1.3 + line = '-'.join(line.split('-', 2)[:2]) + return line.strip() + except: try: import overviewer_version return overviewer_version.VERSION diff --git a/setup.py b/setup.py index cb4e4a8..675b222 100755 --- a/setup.py +++ b/setup.py @@ -11,6 +11,7 @@ import os, os.path import glob import platform import time +import overviewer_core.util as util try: import py2exe @@ -28,11 +29,21 @@ setup_kwargs['options'] = {} # metadata # +# Utility function to read the README file. +# Used for the long_description. It's nice, because now 1) we have a top level +# README file and 2) it's easier to type in the README file than to put a raw +# string in below ... +def read(fname): + return open(os.path.join(os.path.dirname(__file__), fname)).read() + setup_kwargs['name'] = 'Minecraft-Overviewer' -setup_kwargs['version'] = '0.0.0' # TODO useful version +setup_kwargs['version'] = util.findGitVersion() +setup_kwargs['description'] = 'Generates large resolution images of a Minecraft map.' +setup_kwargs['url'] = 'http://overviewer.org/' setup_kwargs['author'] = 'Andrew Brown' setup_kwargs['author_email'] = 'brownan@gmail.com' -setup_kwargs['url'] = 'http://overviewer.org/' +setup_kwargs['license'] = 'GNU General Public License v3' +setup_kwargs['long_description'] = read('README.rst') # # py2exe options @@ -130,9 +141,9 @@ class CustomClean(clean): def generate_version_py(): try: - import overviewer_core.util as util outstr = "" outstr += "VERSION=%r\n" % util.findGitVersion() + outstr += "HASH=%r\n" % util.findGitHash() outstr += "BUILD_DATE=%r\n" % time.asctime() outstr += "BUILD_PLATFORM=%r\n" % platform.processor() outstr += "BUILD_OS=%r\n" % platform.platform() @@ -153,6 +164,7 @@ class CustomBuild(build): # generate the version file generate_version_py() build.run(self) + print "\nBuild Complete" class CustomBuildExt(build_ext): def build_extensions(self): @@ -177,5 +189,3 @@ setup_kwargs['cmdclass']['build_ext'] = CustomBuildExt setup(**setup_kwargs) - -print "\nBuild Complete"