pyarmor 8.5.6__zip → 8.5.7__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyarmor-8.5.6 → pyarmor-8.5.7}/PKG-INFO +1 -1
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/__init__.py +1 -1
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/default.cfg +1 -1
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/repack.py +54 -51
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/config.py +1 -1
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor.egg-info/PKG-INFO +1 -1
- {pyarmor-8.5.6 → pyarmor-8.5.7}/MANIFEST.in +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/README.md +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/README.rst +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/__init__.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/benchmark.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/build_meta.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/__main__.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/bootstrap.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/bug.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/config.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/context.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/core.data.1 +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/core.data.2 +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/core.data.3 +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/docker.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/generate.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/hdinfo.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/merge.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/mixer.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/plugin.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/public_capsule.zip +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/register.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/resource.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cli/shell.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/cobuilder.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/README-ZH.md +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/README.md +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/build-for-exe.bat +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/build-for-freeze.bat +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/build-with-project.bat +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/build-with-project.sh +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/cx_Freeze/hello.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/cx_Freeze/queens.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/cx_Freeze/setup.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/helloworld/foo.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-app.bat +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-app.sh +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-pkg.bat +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-pkg.sh +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pack-obfuscated-scripts.bat +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pack-obfuscated-scripts.sh +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/py2exe/hello.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/py2exe/queens.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/py2exe/setup.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Arithmetic.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Calls.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/CommandLine.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Constructs.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Dict.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Exceptions.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Imports.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Instances.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Lists.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Lookups.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/NewInstances.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Numbers.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Setup.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Strings.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/Tuples.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/With.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/clockres.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/package/__init__.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/package/submodule.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/pybench.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/pybench/systimes.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/simple/queens.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/testmod/hello.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/testmod/queens.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/testpkg/main.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/testpkg/mypkg/__init__.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/examples/testpkg/mypkg/foo.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/__init__.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/build_data_module.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/buildext.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/get_bind_key.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/get_license_info.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/get_platform_name.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/merge.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/repack.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/helper/superuntime.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/license.tri +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/packer.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/platforms/darwin/x86_64/_pytransform.dylib +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/platforms/linux/x86/_pytransform.so +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/platforms/linux/x86_64/_pytransform.so +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/platforms/windows/x86/_pytransform.dll +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/platforms/windows/x86_64/_pytransform.dll +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/plugins/README.md +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/plugins/check_ntp_time.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/polyfills/__init__.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/polyfills/argparse.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/product.key +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/project.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/protect_code.pt +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/protect_code2.pt +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/public.key +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/public_capsule.zip +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pyarmor-deprecated.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pyarmor-webui.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pyarmor.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pyimcore.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pyshield.key +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pyshield.lic +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/pytransform.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/reform.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/register.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/sppmode.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor/utils.py +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor.egg-info/SOURCES.txt +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor.egg-info/dependency_links.txt +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor.egg-info/entry_points.txt +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor.egg-info/requires.txt +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/pyarmor.egg-info/top_level.txt +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/setup.cfg +0 -0
- {pyarmor-8.5.6 → pyarmor-8.5.7}/setup.py +0 -0
|
@@ -6,6 +6,7 @@ import struct
|
|
|
6
6
|
import sys
|
|
7
7
|
import tempfile
|
|
8
8
|
|
|
9
|
+
from fnmatch import fnmatch
|
|
9
10
|
from importlib._bootstrap_external import _code_to_timestamp_pyc
|
|
10
11
|
from subprocess import check_call, check_output, DEVNULL
|
|
11
12
|
|
|
@@ -451,30 +452,34 @@ class Repacker:
|
|
|
451
452
|
# All of them will be obfuscated automatically
|
|
452
453
|
#
|
|
453
454
|
spec_patch_code = '''
|
|
454
|
-
from PyInstaller.compat import base_prefix
|
|
455
455
|
import marshal
|
|
456
456
|
import os
|
|
457
457
|
|
|
458
|
+
from PyInstaller.compat import base_prefix
|
|
459
|
+
from sys import prefix, exec_prefix
|
|
460
|
+
|
|
461
|
+
exlist = set([base_prefix, prefix, exec_prefix])
|
|
462
|
+
exlist = [os.path.normpath(x) for x in exlist]
|
|
463
|
+
|
|
464
|
+
src = {src}
|
|
465
|
+
sn = len(src) + 1
|
|
466
|
+
sdir = os.path.relpath(src)
|
|
467
|
+
sdir = '' if sdir == '.' else sdir
|
|
468
|
+
|
|
458
469
|
hiddenimports = set([])
|
|
459
470
|
plist = set([])
|
|
460
471
|
mlist = []
|
|
461
|
-
src = {src}
|
|
462
|
-
sn = len(src) + 1
|
|
463
|
-
prefix = os.path.relpath(src)
|
|
464
|
-
prefix = '' if prefix == '.' else prefix
|
|
465
472
|
|
|
466
473
|
for name, path, kind in a.pure:
|
|
467
474
|
if name.startswith('pyi_rth'):
|
|
468
475
|
continue
|
|
469
|
-
|
|
470
|
-
|
|
476
|
+
hiddenimports.add(name)
|
|
477
|
+
if path.startswith(src) and not any([path.startswith(x) for x in exlist]):
|
|
471
478
|
if name.find('.') == -1 and os.path.basename(path) != '__init__.py':
|
|
472
|
-
mlist.append(os.path.join(
|
|
479
|
+
mlist.append(os.path.join(sdir, path[sn:]))
|
|
473
480
|
else:
|
|
474
481
|
pkgname = os.path.dirname(path[sn:]).split(os.sep)[0]
|
|
475
|
-
plist.add(os.path.join(
|
|
476
|
-
else:
|
|
477
|
-
hiddenimports.add(name.split('.')[0])
|
|
482
|
+
plist.add(os.path.join(sdir, pkgname))
|
|
478
483
|
|
|
479
484
|
with open({resfile}, 'wb') as f:
|
|
480
485
|
marshal.dump(mlist + list(plist), f)
|
|
@@ -488,46 +493,44 @@ class Repacker6:
|
|
|
488
493
|
|
|
489
494
|
Args:
|
|
490
495
|
ctx: build context
|
|
491
|
-
mode: onefile or
|
|
496
|
+
mode: onefile or onedir
|
|
492
497
|
inputs: main script to pack
|
|
498
|
+
output: path to store final bundle, default is `dist`
|
|
493
499
|
"""
|
|
494
500
|
|
|
495
501
|
def __init__(self, ctx, mode, inputs, output):
|
|
496
502
|
self.ctx = ctx
|
|
497
503
|
self.inputs = inputs
|
|
498
|
-
self.output =
|
|
504
|
+
self.output = os.path.normpath(output) if output else 'dist'
|
|
499
505
|
|
|
500
506
|
self.script = self.inputs[0]
|
|
507
|
+
self.name = os.path.splitext(os.path.basename(self.script))[0]
|
|
501
508
|
self.obfpath = os.path.normpath(self.ctx.pack_obfpath)
|
|
502
509
|
self.packpath = os.path.normpath(self.ctx.pack_basepath)
|
|
503
510
|
self.workpath = os.path.join(self.packpath, 'build')
|
|
504
511
|
self.pyicmd = [sys.executable, '-m', 'PyInstaller']
|
|
505
|
-
self.pyiopts = self.init_opts(mode)
|
|
506
512
|
self.autoclean = mode in ('FC', 'DC')
|
|
513
|
+
self.modeopt = '-F' if mode in ('onefile', 'F', 'FC') else '-D'
|
|
514
|
+
self.init_opts()
|
|
507
515
|
|
|
508
|
-
def init_opts(self
|
|
509
|
-
opts =
|
|
510
|
-
exopts = '--noconfirm', '-y'
|
|
511
|
-
if mode == 'auto':
|
|
512
|
-
exopts += ('--onefile', '-F', '--onefolder', '-D')
|
|
513
|
-
else:
|
|
514
|
-
opts.append('-F' if mode in ('onefile', 'F', 'FC') else '-D')
|
|
515
|
-
opts.extend(self.ctx.pyi_options)
|
|
516
|
-
|
|
516
|
+
def init_opts(self):
|
|
517
|
+
opts = self.ctx.pyi_options
|
|
518
|
+
exopts = '--noconfirm', '-y', '--onefile', '-F', '--onedir', '-D'
|
|
517
519
|
exvalues = '--distpath', '--specpath', '--workpath'
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
if
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
520
|
+
|
|
521
|
+
self.pyiopts = []
|
|
522
|
+
|
|
523
|
+
n = 0
|
|
524
|
+
while n < len(opts):
|
|
525
|
+
x = opts[n]
|
|
526
|
+
if x in ('--name', '-n'):
|
|
527
|
+
self.name = opts[n+1]
|
|
528
|
+
|
|
529
|
+
if x in exvalues:
|
|
530
|
+
n += 1
|
|
531
|
+
elif x not in exopts:
|
|
532
|
+
self.pyiopts.append(x)
|
|
533
|
+
n += 1
|
|
531
534
|
|
|
532
535
|
def analysis(self):
|
|
533
536
|
"""Got imported modules and packages by PyInstaller
|
|
@@ -535,27 +538,20 @@ class Repacker6:
|
|
|
535
538
|
Generate hook script
|
|
536
539
|
Return file/dir list need to be obfuscated
|
|
537
540
|
"""
|
|
538
|
-
cmdspec = [
|
|
539
|
-
|
|
540
|
-
'--specpath', self.packpath
|
|
541
|
-
]
|
|
542
|
-
exvalues = '--name', '-N'
|
|
543
|
-
exopts = '-F', '--onefile', '-D', '--onefolder'
|
|
544
|
-
cmdspec.extend(self.filter_opts(self.pyiopts, exvalues, exopts))
|
|
541
|
+
cmdspec = [sys.executable, '-m', 'PyInstaller.utils.cliutils.makespec']
|
|
542
|
+
cmdspec.extend(self.pyiopts)
|
|
545
543
|
cmdspec.append(self.script)
|
|
546
544
|
logger.debug('%s', ' '.join(cmdspec))
|
|
547
545
|
logger.info('call PyInstaller to generate specfile')
|
|
548
546
|
check_call(cmdspec, stdout=DEVNULL, stderr=DEVNULL)
|
|
549
547
|
|
|
550
|
-
|
|
548
|
+
specfile = self.name + '.spec'
|
|
551
549
|
rtname = self.ctx.runtime_package_name
|
|
552
|
-
specfile = os.path.join(self.packpath, name + '.spec')
|
|
553
550
|
resfile = os.path.join(self.packpath, 'resources.list')
|
|
554
551
|
hookscript = os.path.join(self.packpath, 'hook-%s.py' % rtname)
|
|
555
552
|
self.patch_specfile(specfile, hookscript, resfile)
|
|
556
553
|
|
|
557
554
|
cmdlist = self.pyicmd + ['--clean', '--workpath', self.workpath]
|
|
558
|
-
cmdlist.extend(self.filter_opts(self.pyiopts, exvalues, exopts))
|
|
559
555
|
cmdlist.append(specfile)
|
|
560
556
|
logger.debug('%s', ' '.join(cmdlist))
|
|
561
557
|
logger.info('call PyInstaller to analysis, '
|
|
@@ -563,26 +559,33 @@ class Repacker6:
|
|
|
563
559
|
check_call(cmdlist, stdout=DEVNULL, stderr=DEVNULL)
|
|
564
560
|
|
|
565
561
|
with open(resfile, 'rb') as f:
|
|
566
|
-
|
|
562
|
+
reslist = marshal.load(f)
|
|
563
|
+
|
|
564
|
+
resoptions = self.ctx.get_res_options('')
|
|
565
|
+
excludes = resoptions.get('excludes', '').split()
|
|
566
|
+
if excludes:
|
|
567
|
+
reslist = [x for x in reslist
|
|
568
|
+
if not any([fnmatch(x, pat) for pat in excludes])]
|
|
569
|
+
return reslist
|
|
567
570
|
|
|
568
571
|
def build(self):
|
|
569
572
|
"""Generate final bundle to output"""
|
|
570
|
-
|
|
573
|
+
obfscript = os.path.join(self.obfpath, os.path.basename(self.script))
|
|
571
574
|
cmdlist = self.pyicmd + [
|
|
572
575
|
'--clean',
|
|
573
576
|
'--distpath', self.output,
|
|
574
577
|
'--workpath', self.workpath,
|
|
575
|
-
'--specpath', self.packpath,
|
|
576
578
|
'--additional-hooks-dir', self.packpath,
|
|
579
|
+
self.modeopt
|
|
577
580
|
]
|
|
578
581
|
cmdlist.extend(self.pyiopts)
|
|
579
|
-
cmdlist.append(
|
|
582
|
+
cmdlist.append(obfscript)
|
|
580
583
|
|
|
581
584
|
logger.debug('%s', ' '.join(cmdlist))
|
|
582
585
|
logger.info('call PyInstaller to generate final bundle ...\n')
|
|
583
586
|
check_call(cmdlist)
|
|
584
587
|
logger.info('')
|
|
585
|
-
logger.info('the final bundle "%s"
|
|
588
|
+
logger.info('the final bundle has been generated to "%s" successfully',
|
|
586
589
|
self.output)
|
|
587
590
|
|
|
588
591
|
def repack(self, *unused):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|