diff options
| author | kali <kali@leap.se> | 2013-02-15 09:31:51 +0900 | 
|---|---|---|
| committer | kali <kali@leap.se> | 2013-02-15 09:31:51 +0900 | 
| commit | 9cea9c8a34343f8792d65b96f93ae22bd8685878 (patch) | |
| tree | 9f512367b1d47ced5614702a00f3ff0a8fe746d7 /setup.py | |
| parent | 7159734ec6c0b76fc7f3737134cd22fdaaaa7d58 (diff) | |
| parent | 1032e07a50c8bb265ff9bd31b3bb00e83ddb451e (diff) | |
Merge branch 'release/v0.2.0'
Conflicts:
	README.txt
Diffstat (limited to 'setup.py')
| -rwxr-xr-x | setup.py | 229 | 
1 files changed, 194 insertions, 35 deletions
| @@ -1,63 +1,222 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- - +from __future__ import print_function  import sys  try:      from setuptools import setup, find_packages  except ImportError: -    #FIXME old? -    #use distribute_setup instead?? -    #http://packages.python.org/distribute/setuptools.html#using-setuptools-without-bundling-it -    import ez_setup -    #XXX move ez_setup somewhere else? -    ez_setup.use_setuptools() +    from pkg import distribute_setup +    distribute_setup.use_setuptools()      from setuptools import setup, find_packages  import os -# get version from somewhere else -version = '0.1' +from pkg import utils +from pkg import branding +import versioneer +versioneer.versionfile_source = 'src/leap/_version.py' +versioneer.versionfile_build = 'leap/_version.py' +versioneer.tag_prefix = ''  # tags are like 1.2.0 +#versioneer.parentdir_prefix = 'leap_client-' +versioneer.parentdir_prefix = branding.APP_PREFIX + +branding.brandingfile = 'src/leap/_branding.py' +branding.brandingfile_build = 'leap/_branding.py' +branding.cert_path = 'src/leap/certs'  setup_root = os.path.dirname(__file__)  sys.path.insert(0, os.path.join(setup_root, "src")) +trove_classifiers = [ +    "Development Status :: 3 - Alpha", +    "Environment :: X11 Applications :: Qt", +    "Intended Audience :: End Users/Desktop", +    ("License :: OSI Approved :: GNU General " +     "Public License v3 or later (GPLv3+)"), +    "Operating System :: OS Independent", +    "Programming Language :: Python", +    "Programming Language :: Python :: 2.6", +    "Programming Language :: Python :: 2.7", +    "Topic :: Communications", +    "Topic :: Security", +    "Topic :: System :: Networking", +    "Topic :: Utilities" +] + +BRANDING_OPTS = """ +# Do NOT manually edit this file! +# This file has been written from pkg/branding/config.py data by leap setup.py +# script. + +BRANDING = { +    'short_name': "%(short_name)s", +    'provider_domain': "%(provider_domain)s", +    'provider_ca_file': "%(provider_ca_file)s"} +""" + + +def write_to_branding_file(filename, branding_dict): +    f = open(filename, "w") +    f.write(BRANDING_OPTS % branding_dict) +    f.close() + + +def copy_pemfile_to_certdir(frompath, topath): +    with open(frompath, "r") as cert_f: +        cert_s = cert_f.read() +    with open(topath, "w") as f: +        f.write(cert_s) + + +def do_branding(targetfile=branding.brandingfile): +    if branding.BRANDED_BUILD: +        opts = branding.BRANDED_OPTS +        print("DOING BRANDING FOR LEAP") +        certpath = opts['provider_ca_path'] +        shortname = opts['short_name'] +        tocertfile = shortname + '-cacert.pem' +        topath = os.path.join( +            branding.cert_path, +            tocertfile) +        copy_pemfile_to_certdir( +            certpath, +            topath) +        opts['provider_ca_file'] = tocertfile +        write_to_branding_file( +            targetfile, +            opts) +    else: +        print('not running branding because BRANDED_BUILD set to False') + + +from setuptools import Command + + +class DoBranding(Command): +    description = "copy the branding info the the top level package" +    user_options = [] + +    def initialize_options(self): +        pass + +    def finalize_options(self): +        pass + +    def run(self): +        do_branding() + +from distutils.command.build import build as _build +from distutils.command.sdist import sdist as _sdist + + +class cmd_build(_build): +    def run(self): +        #versioneer.cmd_build(self) +        _build.run(self) + +        # versioneer +        versions = versioneer.get_versions(verbose=True) +        # now locate _version.py in the new build/ directory and replace it +        # with an updated value +        target_versionfile = os.path.join( +            self.build_lib, +            versioneer.versionfile_build) +        print("UPDATING %s" % target_versionfile) +        os.unlink(target_versionfile) +        f = open(target_versionfile, "w") +        f.write(versioneer.SHORT_VERSION_PY % versions) +        f.close() + +        # branding +        target_brandingfile = os.path.join( +            self.build_lib, +            branding.brandingfile_build) +        do_branding(targetfile=target_brandingfile) + + +class cmd_sdist(_sdist): +    def run(self): +        # versioneer: +        versions = versioneer.get_versions(verbose=True) +        self._versioneer_generated_versions = versions +        # unless we update this, the command will keep using the old version +        self.distribution.metadata.version = versions["version"] + +        # branding: +        do_branding() +        return _sdist.run(self) + +    def make_release_tree(self, base_dir, files): +        _sdist.make_release_tree(self, base_dir, files) +        # now locate _version.py in the new base_dir directory (remembering +        # that it may be a hardlink) and replace it with an updated value +        target_versionfile = os.path.join( +            base_dir, versioneer.versionfile_source) +        print("UPDATING %s" % target_versionfile) +        os.unlink(target_versionfile) +        f = open(target_versionfile, "w") +        f.write( +            versioneer.SHORT_VERSION_PY % self._versioneer_generated_versions) +        f.close() + +cmdclass = versioneer.get_cmdclass() +cmdclass["branding"] = DoBranding + +# Uncomment this to have the branding command run automatically +# on the build and sdist commands. +#cmdclass["build"] = cmd_build +#cmdclass["sdist"] = cmd_sdist + +launcher_name = branding.get_shortname() +if launcher_name: +    leap_launcher = 'leap-%s-client=leap.app:main' % launcher_name +else: +    leap_launcher = 'leap-client=leap.app:main' +  setup( -    name='eip-client', +    name=branding.get_name(),      package_dir={"": "src"}, -    version=version, +    version=versioneer.get_version(), +    cmdclass=cmdclass,      description="the internet encryption toolkit", -    long_description="""\ -""", -    classifiers=[],  # Get strings from -    # http://pypi.python.org/pypi?%3Aaction=list_classifiers - -    # XXX FIXME DEPS -    # deps: pyqt -    # test_deps: nose -    # build_deps: pyqt-utils - -    keywords='leap, client, qt, encryption', -    author='leap project', +    long_description=( +        "Desktop Client for the LEAP Platform." +        "\n" +        "LEAP (LEAP Encryption Access Project) develops " +        "a multi-year plan to secure everyday communication, breaking down" +        "into discrete services, to be rolled out one at a time.\n" +        "The client for the current phase gives support to the EIP Service." +        "EIP (the Encrypted Internet Proxy) provides circumvention, location " +        "anonymization, and traffic " +        "encryption in a hassle-free, automatically self-configuring fashion, " +        "and has an enhanced level of security." +    ), +    classifiers=trove_classifiers, +    install_requires=utils.parse_requirements(), +    test_suite='nose.collector', +    test_requires=utils.parse_requirements( +        reqfiles=['pkg/test-requirements.pip']), +    keywords='LEAP, client, qt, encryption, proxy, openvpn', +    author='The LEAP Encryption Access Project',      author_email='info@leap.se', -    url='http://leap.se', -    license='GPL', +    url='https://leap.se', +    license='GPL-3+',      packages=find_packages(          'src',          exclude=['ez_setup', 'setup', 'examples', 'tests']),      include_package_data=True,      zip_safe=False, -    install_requires=[ -        # -*- Extra requirements: -*- -    ], + +    # not being used since setuptools does not like it. +    # looks like debhelper is honoring it...      data_files=[ -        ("share/man/man1", -            ["docs/leap.1"]), +    #    ("share/man/man1", +    #        ["docs/man/leap-client.1"]),          ("share/polkit-1/actions", -            ["setup/linux/polkit/net.openvpn.gui.leap.policy"]) +            ["pkg/linux/polkit/net.openvpn.gui.leap.policy"])      ],      platforms="all", -    scripts=["setup/scripts/leap"], -    entry_points=""" -    # -*- Entry points: -*- -    """, +    entry_points={ +        'console_scripts': [leap_launcher] +    },  ) | 
