0

Initial Python 3 port

Many things work, some don't. Notably, genPOI doesn't work, and
there's some signedness comparison stuff going on in the C extension.

This also completely drops support for Python 2, as maintaining a C
extension for both Python 2 and 3 is a pain and not worth it for the
9 months that Python 2 is still going to be supported upstream.

The documentation needs to be adjusted as well.

All of the few tests we have pass, and rendering a map works, both
with a configuration file and without. We can also use optimizeimages.

Concerns #1528.
This commit is contained in:
Nicolas F
2019-03-16 20:43:25 +01:00
parent 99eebd5b69
commit e348a548b6
33 changed files with 369 additions and 625 deletions

View File

@@ -2,13 +2,15 @@
# Code to check to make sure c_overviewer is built and working
#
from __future__ import print_function
import os.path
import os
import platform
import traceback
import sys
import util
from . import util
def check_c_overviewer():
"""Check to make sure c_overviewer works and is up-to-date. Prints
@@ -18,29 +20,28 @@ def check_c_overviewer():
root_dir = util.get_program_path()
# make sure the c_overviewer extension is available
try:
import c_overviewer
from . import c_overviewer
except ImportError:
if os.environ.get("OVERVIEWER_DEBUG_IMPORT") == "1":
traceback.print_exc()
## if this is a frozen windows package, the following error messages about
## building the c_overviewer extension are not appropriate
if hasattr(sys, "frozen") and platform.system() == 'Windows':
print "Something has gone wrong importing the c_overviewer extension. Please"
print "make sure the 2008 and 2010 redistributable packages from Microsoft"
print "are installed."
print("Something has gone wrong importing the c_overviewer extension. Please make sure "
"the 2008 and 2010 redistributable packages from Microsoft are installed.")
return 1
## try to find the build extension
ext = os.path.join(root_dir, "overviewer_core", "c_overviewer.%s" % ("pyd" if platform.system() == "Windows" else "so"))
if os.path.exists(ext):
traceback.print_exc()
print ""
print "Something has gone wrong importing the c_overviewer extension. Please"
print "make sure it is up-to-date (clean and rebuild)"
print()
print("Something has gone wrong importing the c_overviewer extension. Please make sure "
"it is up-to-date. (clean and rebuild)")
return 1
print "You need to compile the c_overviewer module to run Minecraft Overviewer."
print "Run `python setup.py build`, or see the README for details."
print("You need to compile the c_overviewer module to run Minecraft Overviewer.")
print("Run `python setup.py build`, or see the README for details.")
return 1
#
@@ -54,14 +55,15 @@ def check_c_overviewer():
if os.path.exists(os.path.join(root_dir, "overviewer_core", "src", "overviewer.h")):
with open(os.path.join(root_dir, "overviewer_core", "src", "overviewer.h")) as f:
lines = f.readlines()
lines = filter(lambda x: x.startswith("#define OVERVIEWER_EXTENSION_VERSION"), lines)
lines = list(filter(lambda x: x.startswith("#define OVERVIEWER_EXTENSION_VERSION"),
lines))
if lines:
l = lines[0]
if int(l.split()[2].strip()) != c_overviewer.extension_version():
print "Please rebuild your c_overviewer module. It is out of date!"
print("Please rebuild your c_overviewer module. It is out of date!")
return 1
else:
print "Please rebuild your c_overviewer module. It is out of date!"
print("Please rebuild your c_overviewer module. It is out of date!")
return 1
# all good!