From 0d35f2a82bf15504ace2135af3e0c66ae1c16874 Mon Sep 17 00:00:00 2001 From: kali Date: Tue, 18 Sep 2012 11:11:43 +0900 Subject: do_branding command added to setup --- setup.py | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 143 insertions(+), 6 deletions(-) (limited to 'setup.py') diff --git a/setup.py b/setup.py index 256d5105..74775dd0 100755 --- a/setup.py +++ b/setup.py @@ -12,11 +12,17 @@ except ImportError: import os 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 = '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")) @@ -37,11 +43,139 @@ trove_classifiers = [ "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 +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=leap.app:main' + setup( - name='leap-client', + name=branding.get_name(), package_dir={"": "src"}, version=versioneer.get_version(), - cmdclass=versioneer.get_cmdclass(), + cmdclass=cmdclass, description="the internet encryption toolkit", long_description=( "Desktop Client for the LEAP Platform." @@ -79,8 +213,11 @@ setup( ["pkg/linux/polkit/net.openvpn.gui.leap.policy"]) ], platforms="all", - scripts=["pkg/scripts/leap"], - entry_points=""" + #scripts=["pkg/scripts/leap"], + entry_points = { + 'console_scripts': [leap_launcher] + }, + #entry_points=""" # -*- Entry points: -*- - """, + #""", ) -- cgit v1.2.3