diff --git a/.gitignore b/.gitignore index 1a71f3c..9ed59d6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ *.pyc -build +MANIFEST +build/ +dist/ terrain.png cachedir* @@ -14,10 +16,10 @@ ImPlatform.h Imaging.h # various forms of compiled c_overviewer extensions -overviewer/c_overviewer.so -overviewer/c_overviewer.pyd -overviewer/c_overviewer_d.pyd -overviewer/c_overviewer.dylib +overviewer_core/c_overviewer.so +overviewer_core/c_overviewer.pyd +overviewer_core/c_overviewer_d.pyd +overviewer_core/c_overviewer.dylib # Mac OS X noise .DS_Store diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..f8e6fd7 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,7 @@ +include COPYING.txt +include README.rst +include overviewer.py +recursive-include contrib/ *.py +recursive-include overviewer_core/*.py +recursive-include overviewer_core/src/ *.c *.h +recursive-include overviewer_core/data/ *.png *.js index.html style.css diff --git a/overviewer.py b/overviewer.py index c7a84d7..e30b85c 100755 --- a/overviewer.py +++ b/overviewer.py @@ -32,15 +32,17 @@ logging.basicConfig(level=logging.INFO,format="%(asctime)s [%(levelname)s] %(mes # make sure the c_overviewer extension is available try: - import overviewer.c_overviewer as c_overviewer + from overviewer_core import c_overviewer except ImportError: 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." + import traceback + traceback.print_exc() sys.exit(1) -from overviewer.configParser import ConfigOptionParser -from overviewer import optimizeimages, world, quadtree -from overviewer import googlemap, rendernode, util +from overviewer_core.configParser import ConfigOptionParser +from overviewer_core import optimizeimages, world, quadtree +from overviewer_core import googlemap, rendernode, util helptext = """ diff --git a/overviewer/__init__.py b/overviewer_core/__init__.py similarity index 100% rename from overviewer/__init__.py rename to overviewer_core/__init__.py diff --git a/overviewer/chunk.py b/overviewer_core/chunk.py similarity index 100% rename from overviewer/chunk.py rename to overviewer_core/chunk.py diff --git a/overviewer/composite.py b/overviewer_core/composite.py similarity index 100% rename from overviewer/composite.py rename to overviewer_core/composite.py diff --git a/overviewer/configParser.py b/overviewer_core/configParser.py similarity index 100% rename from overviewer/configParser.py rename to overviewer_core/configParser.py diff --git a/config.js b/overviewer_core/data/config.js similarity index 100% rename from config.js rename to overviewer_core/data/config.js diff --git a/textures/fire.png b/overviewer_core/data/textures/fire.png similarity index 100% rename from textures/fire.png rename to overviewer_core/data/textures/fire.png diff --git a/textures/lava.png b/overviewer_core/data/textures/lava.png similarity index 100% rename from textures/lava.png rename to overviewer_core/data/textures/lava.png diff --git a/textures/water.png b/overviewer_core/data/textures/water.png similarity index 100% rename from textures/water.png rename to overviewer_core/data/textures/water.png diff --git a/web_assets/compass.png b/overviewer_core/data/web_assets/compass.png similarity index 100% rename from web_assets/compass.png rename to overviewer_core/data/web_assets/compass.png diff --git a/web_assets/functions.js b/overviewer_core/data/web_assets/functions.js similarity index 100% rename from web_assets/functions.js rename to overviewer_core/data/web_assets/functions.js diff --git a/web_assets/index.html b/overviewer_core/data/web_assets/index.html similarity index 100% rename from web_assets/index.html rename to overviewer_core/data/web_assets/index.html diff --git a/web_assets/signpost-shadow.png b/overviewer_core/data/web_assets/signpost-shadow.png similarity index 100% rename from web_assets/signpost-shadow.png rename to overviewer_core/data/web_assets/signpost-shadow.png diff --git a/web_assets/signpost.png b/overviewer_core/data/web_assets/signpost.png similarity index 100% rename from web_assets/signpost.png rename to overviewer_core/data/web_assets/signpost.png diff --git a/web_assets/signpost_icon.png b/overviewer_core/data/web_assets/signpost_icon.png similarity index 100% rename from web_assets/signpost_icon.png rename to overviewer_core/data/web_assets/signpost_icon.png diff --git a/web_assets/style.css b/overviewer_core/data/web_assets/style.css similarity index 100% rename from web_assets/style.css rename to overviewer_core/data/web_assets/style.css diff --git a/overviewer/googlemap.py b/overviewer_core/googlemap.py similarity index 100% rename from overviewer/googlemap.py rename to overviewer_core/googlemap.py diff --git a/overviewer/nbt.py b/overviewer_core/nbt.py similarity index 100% rename from overviewer/nbt.py rename to overviewer_core/nbt.py diff --git a/overviewer/optimizeimages.py b/overviewer_core/optimizeimages.py similarity index 100% rename from overviewer/optimizeimages.py rename to overviewer_core/optimizeimages.py diff --git a/overviewer/quadtree.py b/overviewer_core/quadtree.py similarity index 100% rename from overviewer/quadtree.py rename to overviewer_core/quadtree.py diff --git a/overviewer/rendernode.py b/overviewer_core/rendernode.py similarity index 100% rename from overviewer/rendernode.py rename to overviewer_core/rendernode.py diff --git a/overviewer/src/composite.c b/overviewer_core/src/composite.c similarity index 100% rename from overviewer/src/composite.c rename to overviewer_core/src/composite.c diff --git a/overviewer/src/endian.c b/overviewer_core/src/endian.c similarity index 100% rename from overviewer/src/endian.c rename to overviewer_core/src/endian.c diff --git a/overviewer/src/iterate.c b/overviewer_core/src/iterate.c similarity index 99% rename from overviewer/src/iterate.c rename to overviewer_core/src/iterate.c index 4cf63c1..6f944de 100644 --- a/overviewer/src/iterate.c +++ b/overviewer_core/src/iterate.c @@ -31,7 +31,7 @@ int init_chunk_render(void) { * */ if (blockmap) return 1; - textures = PyImport_ImportModule("overviewer.textures"); + textures = PyImport_ImportModule("overviewer_core.textures"); /* ensure none of these pointers are NULL */ if ((!textures)) { fprintf(stderr, "\ninit_chunk_render failed to load; textures\n"); @@ -39,7 +39,7 @@ int init_chunk_render(void) { return 1; } - chunk_mod = PyImport_ImportModule("overviewer.chunk"); + chunk_mod = PyImport_ImportModule("overviewer_core.chunk"); /* ensure none of these pointers are NULL */ if ((!chunk_mod)) { fprintf(stderr, "\ninit_chunk_render failed to load; chunk\n"); diff --git a/overviewer/src/main.c b/overviewer_core/src/main.c similarity index 100% rename from overviewer/src/main.c rename to overviewer_core/src/main.c diff --git a/overviewer/src/overviewer.h b/overviewer_core/src/overviewer.h similarity index 100% rename from overviewer/src/overviewer.h rename to overviewer_core/src/overviewer.h diff --git a/overviewer/src/rendermode-lighting.c b/overviewer_core/src/rendermode-lighting.c similarity index 100% rename from overviewer/src/rendermode-lighting.c rename to overviewer_core/src/rendermode-lighting.c diff --git a/overviewer/src/rendermode-night.c b/overviewer_core/src/rendermode-night.c similarity index 100% rename from overviewer/src/rendermode-night.c rename to overviewer_core/src/rendermode-night.c diff --git a/overviewer/src/rendermode-normal.c b/overviewer_core/src/rendermode-normal.c similarity index 100% rename from overviewer/src/rendermode-normal.c rename to overviewer_core/src/rendermode-normal.c diff --git a/overviewer/src/rendermode-spawn.c b/overviewer_core/src/rendermode-spawn.c similarity index 100% rename from overviewer/src/rendermode-spawn.c rename to overviewer_core/src/rendermode-spawn.c diff --git a/overviewer/src/rendermodes.c b/overviewer_core/src/rendermodes.c similarity index 100% rename from overviewer/src/rendermodes.c rename to overviewer_core/src/rendermodes.c diff --git a/overviewer/src/rendermodes.h b/overviewer_core/src/rendermodes.h similarity index 100% rename from overviewer/src/rendermodes.h rename to overviewer_core/src/rendermodes.h diff --git a/overviewer/textures.py b/overviewer_core/textures.py similarity index 100% rename from overviewer/textures.py rename to overviewer_core/textures.py diff --git a/overviewer/util.py b/overviewer_core/util.py similarity index 93% rename from overviewer/util.py rename to overviewer_core/util.py index 12d21fd..a1d07f8 100644 --- a/overviewer/util.py +++ b/overviewer_core/util.py @@ -28,7 +28,8 @@ def get_program_path(): else: try: # normally, we're in ./overviewer/util.py - return os.path.dirname(os.path.dirname(__file__)) + # we want ./overviewer/data/ + return os.path.join(os.path.dirname(__file__), 'data') except NameError: return os.path.dirname(sys.argv[0]) diff --git a/overviewer/world.py b/overviewer_core/world.py similarity index 100% rename from overviewer/world.py rename to overviewer_core/world.py diff --git a/setup.py b/setup.py old mode 100644 new mode 100755 index 759efba..1f34f3f --- a/setup.py +++ b/setup.py @@ -1,3 +1,5 @@ +#!/usr/bin/python + from distutils.core import setup, Extension from distutils.command.build import build from distutils.command.clean import clean @@ -17,32 +19,41 @@ except ImportError: # now, setup the keyword arguments for setup # (because we don't know until runtime if py2exe is available) setup_kwargs = {} -setup_kwargs['options'] = {} setup_kwargs['ext_modules'] = [] setup_kwargs['cmdclass'] = {} +# +# metadata +# + +setup_kwargs['name'] = 'minecraft-overviewer' +setup_kwargs['version'] = '0.0.0' # TODO useful version + # # py2exe options # if py2exe is not None: setup_kwargs['console'] = ['overviewer.py'] + setup_kwargs['data_files'] = [('', ['COPYING.txt', 'README.rst'])] setup_kwargs['zipfile'] = None if platform.system() == 'Windows' and '64bit' in platform.architecture(): b = 3 else: b = 1 + setup_kwargs['options'] = {} setup_kwargs['options']['py2exe'] = {'bundle_files' : b, 'excludes': 'Tkinter'} # # script, package, and data # -setup_kwargs['packages'] = ['overviewer'] +setup_kwargs['packages'] = ['overviewer_core'] setup_kwargs['scripts'] = ['overviewer.py'] -setup_kwargs['data_files'] = [('textures', glob.glob('textures/*')), - ('', ['config.js', 'COPYING.txt', 'README.rst']), - ('web_assets', glob.glob('web_assets/*'))] +setup_kwargs['package_data'] = {'overviewer_core': + ['data/config.js', + 'data/textures/*', + 'data/web_assets/*']} # @@ -58,15 +69,14 @@ except AttributeError: numpy_include = numpy.get_numpy_include() -c_overviewer_files = ['overviewer/src/main.c', 'overviewer/src/composite.c', 'overviewer/src/iterate.c', 'overviewer/src/endian.c'] -c_overviewer_files += ['overviewer/src/rendermodes.c', 'overviewer/src/rendermode-normal.c', 'overviewer/src/rendermode-lighting.c', 'overviewer/src/rendermode-night.c', 'overviewer/src/rendermode-spawn.c'] -c_overviewer_includes = ['overviewer/src/overviewer.h', 'overviewer/src/rendermodes.h'] -setup_kwargs['ext_modules'].append(Extension('overviewer.c_overviewer', c_overviewer_files, include_dirs=['.', numpy_include], depends=c_overviewer_includes, extra_link_args=[])) -# tell build_ext to build the extension in-place -# (NOT in build/) -setup_kwargs['options']['build_ext'] = {'inplace' : 1} -# tell the build command to only run build_ext -build.sub_commands = [('build_ext', None)] +c_overviewer_files = ['main.c', 'composite.c', 'iterate.c', 'endian.c'] +c_overviewer_files += ['rendermodes.c', 'rendermode-normal.c', 'rendermode-lighting.c', 'rendermode-night.c', 'rendermode-spawn.c'] +c_overviewer_includes = ['overviewer.h', 'rendermodes.h'] + +c_overviewer_files = map(lambda s: 'overviewer_core/src/'+s, c_overviewer_files) +c_overviewer_includes = map(lambda s: 'overviewer_core/src/'+s, c_overviewer_includes) + +setup_kwargs['ext_modules'].append(Extension('overviewer_core.c_overviewer', c_overviewer_files, include_dirs=['.', numpy_include], depends=c_overviewer_includes, extra_link_args=[])) # custom clean command to remove in-place extension class CustomClean(clean): @@ -77,7 +87,7 @@ class CustomClean(clean): # try to remove '_composite.{so,pyd,...}' extension, # regardless of the current system's extension name convention build_ext = self.get_finalized_command('build_ext') - pretty_fname = build_ext.get_ext_filename('overviewer.c_overviewer') + pretty_fname = build_ext.get_ext_filename('overviewer_core.c_overviewer') fname = pretty_fname if os.path.exists(fname): try: @@ -99,6 +109,10 @@ class CustomBuild(build_ext): for e in self.extensions: e.extra_link_args.append("/MANIFEST") + # build in place, and in the build/ tree + self.inplace = False + build_ext.build_extensions(self) + self.inplace = True build_ext.build_extensions(self)