commit ea0351d8bf6404f5e8db2ff872885a19bf8a3f92
Author: hasufell <hasufell@gentoo.org>
Date:   Thu Jun 27 02:01:17 2013 +0200

    fix multiple abi support

diff --git a/renpy.py b/renpy.py
index 4ec5324..d873750 100644
--- a/renpy.py
+++ b/renpy.py
@@ -28,82 +28,9 @@
 import os
 import sys
 import warnings
-
-# Functions to be customized by distributors. ################################
-
-# Given the Ren'Py base directory (usually the directory containing
-# this file), this is expected to return the path to the common directory.
-def path_to_common(renpy_base):
-    return renpy_base + "/renpy/common"
-
-# Given a directory holding a Ren'Py game, this is expected to return
-# the path to a directory that will hold save files.
-def path_to_saves(gamedir):
-    import renpy #@UnresolvedImport
-    
-    # Android.
-    if renpy.android:
-        paths = [
-            os.path.join(os.environ["ANDROID_OLD_PUBLIC"], "game/saves"),
-            os.path.join(os.environ["ANDROID_PRIVATE"], "saves"),
-            os.path.join(os.environ["ANDROID_PUBLIC"], "saves"),
-            ]
-        
-        for rv in paths:
-            if os.path.isdir(rv):
-                break
-
-        print "Using savedir", rv
-                    
-        # We return the last path as the default.
-                    
-        return rv
-    
-    
-    # No save directory given.
-    if not renpy.config.save_directory:
-        return gamedir + "/saves"
-
-    # Search the path above Ren'Py for a directory named "Ren'Py Data".
-    # If it exists, then use that for our save directory.
-    path = renpy.config.renpy_base
-
-    while True:
-        if os.path.isdir(path + "/Ren'Py Data"):
-            return path + "/Ren'Py Data/" + renpy.config.save_directory
-
-        newpath = os.path.dirname(path)
-        if path == newpath:
-            break
-        path = newpath
-
-    # Otherwise, put the saves in a platform-specific location.
-    if renpy.macintosh:
-        rv = "~/Library/RenPy/" + renpy.config.save_directory
-        return os.path.expanduser(rv)
-
-    elif renpy.windows:
-        if 'APPDATA' in os.environ:
-            return os.environ['APPDATA'] + "/RenPy/" + renpy.config.save_directory
-        else:
-            rv = "~/RenPy/" + renpy.config.save_directory
-            return os.path.expanduser(rv)
-
-    else:
-        rv = "~/.renpy/" + renpy.config.save_directory
-        return os.path.expanduser(rv)
-
-        
-# Returns the path to the Ren'Py base directory (containing common and
-# the launcher, usually.)
-def path_to_renpy_base():
-    renpy_base = os.path.dirname(os.path.realpath(sys.argv[0]))
-    renpy_base = os.environ.get('RENPY_BASE', renpy_base)
-    renpy_base = os.path.abspath(renpy_base)
-
-    return renpy_base
-
-##############################################################################
+from distutils.sysconfig import get_python_lib
+sys.path.append(get_python_lib() + "/renpy@SLOT@")
+import renpy.common as common
 
 # The version of the Mac Launcher and py4renpy that we require.
 macos_version = (6, 14, 0)
@@ -118,20 +45,9 @@ except:
     print "Ren'Py requires at least python 2.6."
     sys.exit(0)
 
-android = ("ANDROID_PRIVATE" in os.environ)
-
-# Android requires us to add code to the main module, and to command some
-# renderers.
-if android:
-    __main__ = sys.modules["__main__"]
-    __main__.path_to_renpy_base = path_to_renpy_base
-    __main__.path_to_common = path_to_common
-    __main__.path_to_saves = path_to_saves
-    os.environ["RENPY_RENDERER"] = "gl"
-    
 def main():
     
-    renpy_base = path_to_renpy_base()
+    renpy_base = common.path_to_renpy_base()
 
     # Add paths.
     if os.path.exists(renpy_base + "/module"):
@@ -154,10 +70,6 @@ def main():
         print >>sys.stderr, "correctly, preserving the directory structure."
         raise
 
-    if android:
-        renpy.linux = False
-        renpy.android = True
-    
     renpy.bootstrap.bootstrap(renpy_base)
 
 if __name__ == "__main__":
diff --git a/renpy/common.py b/renpy/common.py
new file mode 100644
index 0000000..475b7e8
--- /dev/null
+++ b/renpy/common.py
@@ -0,0 +1,84 @@
+# This file is part of Ren'Py. The license below applies to Ren'Py only.
+# Games and other projects that use Ren'Py may use a different license.
+
+# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation files
+# (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge,
+# publish, distribute, sublicense, and/or sell copies of the Software,
+# and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import os
+import sys
+import warnings
+from distutils.sysconfig import get_python_lib
+
+# Functions to be customized by distributors. ################################
+
+# Given the Ren'Py base directory (usually the directory containing
+# this file), this is expected to return the path to the common directory.
+def path_to_common(renpy_base):
+    return renpy_base + "/renpy/common"
+
+# Given a directory holding a Ren'Py game, this is expected to return
+# the path to a directory that will hold save files.
+def path_to_saves(gamedir):
+    import renpy #@UnresolvedImport
+
+    # No save directory given.
+    if not renpy.config.save_directory:
+        return gamedir + "/saves"
+
+    # Search the path above Ren'Py for a directory named "Ren'Py Data".
+    # If it exists, then use that for our save directory.
+    path = renpy.config.renpy_base
+
+    while True:
+        if os.path.isdir(path + "/Ren'Py Data"):
+            return path + "/Ren'Py Data/" + renpy.config.save_directory
+
+        newpath = os.path.dirname(path)
+        if path == newpath:
+            break
+        path = newpath
+
+    # Otherwise, put the saves in a platform-specific location.
+    if renpy.macintosh:
+        rv = "~/Library/RenPy/" + renpy.config.save_directory
+        return os.path.expanduser(rv)
+
+    elif renpy.windows:
+        if 'APPDATA' in os.environ:
+            return os.environ['APPDATA'] + "/RenPy/" + renpy.config.save_directory
+        else:
+            rv = "~/RenPy/" + renpy.config.save_directory
+            return os.path.expanduser(rv)
+
+    else:
+        rv = "~/.renpy/" + renpy.config.save_directory
+        return os.path.expanduser(rv)
+
+
+# Returns the path to the Ren'Py base directory (containing common and
+# the launcher, usually.)
+def path_to_renpy_base():
+    renpy_base = os.path.dirname(os.path.realpath(sys.argv[0]))
+    renpy_base = get_python_lib() + "/renpy@SLOT@"
+    renpy_base = os.environ.get('RENPY_BASE', renpy_base)
+    renpy_base = os.path.abspath(renpy_base)
+
+    return renpy_base
diff --git a/renpy/main.py b/renpy/main.py
index 908e246..61027ec 100644
--- a/renpy/main.py
+++ b/renpy/main.py
@@ -27,7 +27,7 @@ import time
 import zipfile
 import subprocess
 from cPickle import loads, dumps
-import __main__
+import renpy.common as common
 
 
 def save_persistent():
@@ -147,7 +147,7 @@ def main():
     renpy.config.searchpath = [ renpy.config.gamedir ]
 
     # Find the common directory.
-    commondir = __main__.path_to_common(renpy.config.renpy_base) # E1101 @UndefinedVariable
+    commondir = common.path_to_common(renpy.config.renpy_base) # E1101 @UndefinedVariable
 
     if os.path.isdir(commondir):
         renpy.config.searchpath.append(commondir)
@@ -210,7 +210,7 @@ def main():
 
     # Find the save directory.
     if renpy.config.savedir is None:
-        renpy.config.savedir = __main__.path_to_saves(renpy.config.gamedir) # E1101 @UndefinedVariable
+        renpy.config.savedir = common.path_to_saves(renpy.config.gamedir) # E1101 @UndefinedVariable
 
     if renpy.game.args.savedir: #@UndefinedVariable
         renpy.config.savedir = renpy.game.args.savedir #@UndefinedVariable
