示例#1
0
文件: utils.py 项目: 75509151/pyarmor
def pytransform_bootstrap(path=None, capsule=None):
    path = PYARMOR_PATH if path is None else path
    licfile = os.path.join(path, 'license.lic')
    if not os.path.exists(licfile):
        if not os.access(path, os.W_OK):
            logging.error(
                'Bootstrap need write file "license.lic" to %s, '
                'please run pyarmor with sudo for first time', path)
            raise RuntimeError('No write permission for target path')
        shutil.copy(os.path.join(PYARMOR_PATH, 'license.tri'), licfile)

    libname = dll_name + dll_ext
    platname = None
    if not os.path.exists(os.path.join(path, libname)):
        libpath = os.path.join(path, 'platforms')
        platname = os.getenv('PYARMOR_PLATFORM')
        if platname == 'simple':
            platid = '%s/simple' % pytransform.format_platname()
            platname = platid
        else:
            platid = pytransform.format_platname(platname)
        if not os.path.exists(os.path.join(libpath, platid, libname)):
            download_pytransform(platid)
            logging.info('Bootstrap OK.\n')
    logging.debug('Build platform is %s', platname)
    pytransform.pyarmor_init(platname=platname)

    if capsule is not None and 'register' not in sys.argv[1:2]:
        if not os.path.exists(capsule):
            logging.info('Generating public capsule ...')
            make_capsule(capsule)
示例#2
0
def make_runtime(capsule, output, licfile=None, platform=None):
    myzip = ZipFile(capsule, 'r')
    if 'pytransform.key' in myzip.namelist():
        myzip.extract('pytransform.key', output)
    else:
        myzip.extract('pyshield.key', output)
        myzip.extract('pyshield.lic', output)
        myzip.extract('product.key', output)

    if licfile is None:
        myzip.extract('license.lic', output)
    else:
        shutil.copy2(licfile, os.path.join(output, 'license.lic'))

    if platform is None:
        libname = dll_name + dll_ext
        libfile = os.path.join(PYARMOR_PATH, libname)
        if not os.path.exists(libfile):
            sysname = pytransform.format_platname()
            libpath = os.path.join(PYARMOR_PATH, 'platforms')
            libfile = os.path.join(libpath, sysname, libname)
        shutil.copy2(libfile, output)
    else:
        path = os.path.join(PYARMOR_PATH, 'platforms', platform)
        for x in os.listdir(path):
            shutil.copy2(os.path.join(path, x), output)

    shutil.copy2(os.path.join(PYARMOR_PATH, 'pytransform.py'), output)
示例#3
0
def pytransform_bootstrap(path=None, capsule=None):
    path = PYARMOR_PATH if path is None else path
    licfile = os.path.join(path, 'license.lic')
    if not os.path.exists(licfile):
        if not os.access(path, os.W_OK):
            logging.error(
                'Bootstrap need write file "license.lic" to %s, '
                'please run pyarmor with sudo for first time', path)
            raise RuntimeError('No write permission for target path')
        shutil.copy(os.path.join(PYARMOR_PATH, 'license.tri'), licfile)

    libname = dll_name + dll_ext
    platname = None
    if not os.path.exists(os.path.join(path, libname)):
        libpath = os.path.join(path, 'platforms')
        platname = os.getenv('PYARMOR_PLATFORM')
        platid = pytransform.format_platname(platname)
        if not os.path.exists(os.path.join(libpath, platid, libname)):
            download_pytransform(platid)
            logging.info('Bootstrap OK.\n')
    pytransform.pyarmor_init(platname=platname)

    if capsule is not None:
        if not (os.path.exists(capsule) and check_capsule(capsule)):
            logging.info('Generate global capsule %s', capsule)
            make_capsule(capsule)
示例#4
0
def pytransform_bootstrap(path=None):
    path = PYARMOR_PATH if path is None else path
    libname = dll_name + dll_ext
    if not os.path.exists(os.path.join(path, libname)):
        libpath = os.path.join(path, 'platforms')
        sysname = pytransform.format_platname()
        if not os.path.exists(os.path.join(libpath, sysname, libname)):
            download_pytransform(libname)
            logging.info('Bootstrap OK.\n')
    pytransform.pyarmor_init()
示例#5
0
def pytransform_bootstrap(path=None):
    path = PYARMOR_PATH if path is None else path
    libname = dll_name + dll_ext
    if not os.path.exists(os.path.join(path, libname)):
        libpath = os.path.join(path, 'platforms')
        sysname = pytransform.format_platname()
        if not os.path.exists(os.path.join(libpath, sysname, libname)):
            logging.info('Searching %s for %s ...', libname, plat_name)
            src = os.path.join(libpath, plat_name, libname)
            if not os.path.exists(src):
                raise RuntimeError('No available library for this platform')
            logging.info('Found: "%s"', src)
            logging.info('Copy to %s', path)
            shutil.copy(src, path)
            logging.info('Bootstrap OK.\n')
    pytransform.pyarmor_init()
示例#6
0
文件: utils.py 项目: 75509151/pyarmor
def make_runtime(capsule, output, licfile=None, platform=None, package=False):
    if package:
        output = os.path.join(output, 'pytransform')
        if not os.path.exists(output):
            os.makedirs(output)
    logging.info('Generating runtime files to %s', output)

    myzip = ZipFile(capsule, 'r')
    if 'pytransform.key' in myzip.namelist():
        logging.info('Extract pytransform.key')
        myzip.extract('pytransform.key', output)
    else:
        logging.info('Extract pyshield.key, pyshield.lic, product.key')
        myzip.extract('pyshield.key', output)
        myzip.extract('pyshield.lic', output)
        myzip.extract('product.key', output)

    if licfile is None:
        logging.info('Extract license.lic')
        myzip.extract('license.lic', output)
    else:
        logging.info('Copying %s as license file', licfile)
        shutil.copy2(licfile, os.path.join(output, 'license.lic'))

    if platform is None:
        libfile = pytransform._pytransform._name
        if not os.path.exists(libfile):
            libname = dll_name + dll_ext
            libfile = os.path.join(PYARMOR_PATH, libname)
            if not os.path.exists(libfile):
                pname = pytransform.format_platname()
                libpath = os.path.join(PYARMOR_PATH, 'platforms')
                libfile = os.path.join(libpath, pname, libname)
        logging.info('Copying %s', relpath(libfile))
        shutil.copy2(libfile, output)
    else:
        filename = _get_platform_library(platform)
        logging.info('Copying %s', relpath(filename))
        shutil.copy2(filename, output)

    filename = os.path.join(PYARMOR_PATH, 'pytransform.py')
    shutil.copy2(filename,
                 os.path.join(output, '__init__.py') if package else output)

    logging.info('Generate runtime files OK')