Make kivy work with new wheels.

This commit is contained in:
Matthew Einhorn 2015-11-22 15:12:13 -05:00
parent aa63c68d65
commit da595476e4
2 changed files with 30 additions and 8 deletions

View File

@ -35,6 +35,7 @@ import shutil
from getopt import getopt, GetoptError
from os import environ, mkdir, pathsep
from os.path import dirname, join, basename, exists, expanduser, isdir
import pkgutil
from kivy.logger import Logger, LOG_LEVELS
from kivy.utils import platform
@ -251,6 +252,16 @@ kivy_usermodules_dir = ''
#: Kivy user extensions directory
kivy_userexts_dir = ''
# if there are deps, import them so they can do their magic.
try:
import kivy.deps
for importer, modname, ispkg in pkgutil.iter_modules(kivy.deps.__path__):
if not ispkg:
continue
importer.find_module(modname).load_module(modname)
except ImportError:
pass
# Don't go further if we generate documentation
if any(name in sys.argv[0] for name in ('sphinx-build', 'autobuild.py')):

View File

@ -41,10 +41,10 @@ MAX_CYTHON_VERSION = LooseVersion(MAX_CYTHON_STRING)
CYTHON_UNSUPPORTED = ()
def getoutput(cmd):
def getoutput(cmd, env=None):
import subprocess
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stderr=subprocess.PIPE, env=env)
p.wait()
if p.returncode: # if not returncode == 0
print('WARNING: A problem occured while running {0} (code {1})\n'
@ -58,8 +58,15 @@ def getoutput(cmd):
def pkgconfig(*packages, **kw):
flag_map = {'-I': 'include_dirs', '-L': 'library_dirs', '-l': 'libraries'}
lenviron = None
pconfig = join(dirname(sys.executable), 'libs', 'pkgconfig')
if isdir(pconfig):
lenviron = environ.copy()
lenviron['PKG_CONFIG_PATH'] = '{};{}'.format(
environ.get('PKG_CONFIG_PATH', ''), pconfig)
cmd = 'pkg-config --libs --cflags {}'.format(' '.join(packages))
results = getoutput(cmd).split()
results = getoutput(cmd, lenviron).split()
for token in results:
ext = token[:2].decode('utf-8')
flag = flag_map.get(ext)
@ -548,18 +555,21 @@ def determine_sdl2():
sdl2_path = environ.get('KIVY_SDL2_PATH', None)
if sdl2_flags and not sdl2_path:
return sdl2_flags
# no pkgconfig info, or we want to use a specific sdl2 path, so perform
# manual configuration
flags['libraries'] = ['SDL2', 'SDL2_ttf', 'SDL2_image', 'SDL2_mixer']
split_chr = ';' if platform == 'win32' else ':'
sdl2_paths = sdl2_path.split(split_chr) if sdl2_path else []
inc_paths = sdl2_paths
if not sdl2_paths:
sdl_inc = join(dirname(sys.executable), 'include', 'SDL2')
if isdir(sdl_inc):
sdl2_paths = [sdl_inc]
sdl2_paths.extend(['/usr/local/include/SDL2', '/usr/include/SDL2'])
flags['include_dirs'] = (
sdl2_paths if sdl2_paths else
['/usr/local/include/SDL2', '/usr/include/SDL2'])
sdl2_paths if sdl2_paths else sdl2_paths)
flags['extra_link_args'] = []
flags['extra_compile_args'] = []
@ -864,6 +874,7 @@ setup(
'kivy.core.text',
'kivy.core.video',
'kivy.core.window',
'kivy.deps',
'kivy.effects',
'kivy.ext',
'kivy.graphics',