try:
    # The setuptools package is not installed by default 
    # on a clean Ubuntu. Might be also a case on Windows.
    # Python Eggs and Wheels can be created only with setuptools.
    from setuptools import setup
    from setuptools.command.install import install as _install
    from setuptools.dist import Distribution
    print("[setup.py] Using setuptools")
except:
    from distutils.core import setup
    from distutils.command.install import install as _install
    from distutils.dist import Distribution
    print("[setup.py] Using distutils")

import sys
import os
import subprocess

def post_install():
    """ Post install tasks """
    print("[setup.py] post_install()")
    
    # Find package directory.
    # Do not import from local cefpython3/ directory.
    del sys.path[0]
    sys.path.append('')
    import cefpython3
    package_dir = os.path.dirname(cefpython3.__file__)
        
    # Make sure this is not a local package imported
    print("[setup.py] package_dir = %s" % package_dir)
    assert not package_dir.startswith(
            os.path.dirname(os.path.abspath(__file__)))
    
    # Execute permissions for subprocess.exe and cefclient.exe
    subprocess_exe = os.path.join(package_dir, "subprocess")
    cefclient_exe = os.path.join(package_dir, "cefclient")
    print("[setup.py] chmod +x " + subprocess_exe)
    subprocess.call("chmod +x "+subprocess_exe, shell=True)
    print("[setup.py] chmod +x " + cefclient_exe)
    subprocess.call("chmod +x "+cefclient_exe, shell=True)

    # Write permissions for debug.log files
    commands = [
        "chmod 666 %s/debug.log" % package_dir,
        "chmod 666 %s/examples/debug.log" % package_dir,
        # "chmod 666 %s/examples/wx/debug.log" % package_dir,
    ]
    for command in commands:
        print("[setup.py] %s" % command)
        subprocess.call(command, shell=True)

class install(_install):
    def run(self):
        _install.run(self)
        post_install()
        
class BinaryDistribution(Distribution):
    def is_pure(self):
        return False

setup(
    distclass=BinaryDistribution,
    cmdclass={'install': install},
    name='cefpython3', # No spaces here, so that it works with deb packages.
    version='%(APP_VERSION)s',
    description='Python bindings for the Chromium Embedded Framework',
    license='BSD 3-Clause',
    author='Czarek Tomczak',
    author_email='czarek.tomczak@gmail.com',
    url='http://code.google.com/p/cefpython/',
    platforms=['%(PLATFORM)s'],
    packages=['cefpython3', 'cefpython3.wx'],
    package_data={'cefpython3': [
        'examples/*.py',
        'examples/*.html',
        'examples/*.js',
        'examples/*.css',
        'examples/*.png',
        'examples/*.txt',
        'examples/kivy-select-boxes/*.html',
        'examples/kivy-select-boxes/*.js',
        'examples/kivy-select-boxes/*.css',
        'examples/kivy-select-boxes/*.md',
        'examples/resources/*.png',
        # 'examples/wx/*.py',
        # 'examples/wx/*.html',
        # 'examples/wx/*.png',
        'locales/*.pak',
        'wx/*.txt',
        'wx/images/*.png',
        '*.txt',
        'License',
        'cefclient',
        'subprocess',
        '*.so',
        '*.pak',
        '*.bin',
        '*.dat',
        'debug.log',
        'examples/debug.log',
        # 'examples/wx/debug.log',
    ]}
)
