pyarmor 8.5.5__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.5 → pyarmor-8.5.7}/PKG-INFO +1 -1
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/__init__.py +1 -1
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/default.cfg +1 -1
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/repack.py +54 -49
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/config.py +1 -1
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor.egg-info/PKG-INFO +1 -1
- {pyarmor-8.5.5 → pyarmor-8.5.7}/MANIFEST.in +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/README.md +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/README.rst +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/__init__.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/benchmark.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/build_meta.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/__main__.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/bootstrap.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/bug.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/config.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/context.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/core.data.1 +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/core.data.2 +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/core.data.3 +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/docker.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/generate.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/hdinfo.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/merge.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/mixer.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/plugin.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/public_capsule.zip +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/register.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/resource.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cli/shell.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/cobuilder.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/README-ZH.md +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/README.md +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/build-for-exe.bat +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/build-for-freeze.bat +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/build-with-project.bat +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/build-with-project.sh +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/cx_Freeze/hello.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/cx_Freeze/queens.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/cx_Freeze/setup.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/helloworld/foo.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-app.bat +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-app.sh +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-pkg.bat +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/obfuscate-pkg.sh +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pack-obfuscated-scripts.bat +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pack-obfuscated-scripts.sh +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/py2exe/hello.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/py2exe/queens.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/py2exe/setup.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Arithmetic.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Calls.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/CommandLine.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Constructs.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Dict.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Exceptions.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Imports.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Instances.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Lists.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Lookups.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/NewInstances.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Numbers.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Setup.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Strings.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/Tuples.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/With.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/clockres.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/package/__init__.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/package/submodule.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/pybench.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/pybench/systimes.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/simple/queens.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/testmod/hello.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/testmod/queens.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/testpkg/main.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/testpkg/mypkg/__init__.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/examples/testpkg/mypkg/foo.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/__init__.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/build_data_module.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/buildext.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/get_bind_key.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/get_license_info.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/get_platform_name.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/merge.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/repack.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/helper/superuntime.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/license.tri +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/packer.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/platforms/darwin/x86_64/_pytransform.dylib +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/platforms/linux/x86/_pytransform.so +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/platforms/linux/x86_64/_pytransform.so +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/platforms/windows/x86/_pytransform.dll +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/platforms/windows/x86_64/_pytransform.dll +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/plugins/README.md +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/plugins/check_ntp_time.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/polyfills/__init__.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/polyfills/argparse.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/product.key +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/project.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/protect_code.pt +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/protect_code2.pt +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/public.key +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/public_capsule.zip +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pyarmor-deprecated.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pyarmor-webui.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pyarmor.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pyimcore.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pyshield.key +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pyshield.lic +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/pytransform.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/reform.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/register.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/sppmode.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor/utils.py +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor.egg-info/SOURCES.txt +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor.egg-info/dependency_links.txt +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor.egg-info/entry_points.txt +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor.egg-info/requires.txt +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/pyarmor.egg-info/top_level.txt +0 -0
- {pyarmor-8.5.5 → pyarmor-8.5.7}/setup.cfg +0 -0
- {pyarmor-8.5.5 → 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,25 +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
|
-
cmdspec.extend(self.filter_opts(self.pyiopts, ('--name', '-N')))
|
|
541
|
+
cmdspec = [sys.executable, '-m', 'PyInstaller.utils.cliutils.makespec']
|
|
542
|
+
cmdspec.extend(self.pyiopts)
|
|
543
543
|
cmdspec.append(self.script)
|
|
544
544
|
logger.debug('%s', ' '.join(cmdspec))
|
|
545
545
|
logger.info('call PyInstaller to generate specfile')
|
|
546
546
|
check_call(cmdspec, stdout=DEVNULL, stderr=DEVNULL)
|
|
547
547
|
|
|
548
|
-
|
|
548
|
+
specfile = self.name + '.spec'
|
|
549
549
|
rtname = self.ctx.runtime_package_name
|
|
550
|
-
specfile = os.path.join(self.packpath, name + '.spec')
|
|
551
550
|
resfile = os.path.join(self.packpath, 'resources.list')
|
|
552
551
|
hookscript = os.path.join(self.packpath, 'hook-%s.py' % rtname)
|
|
553
552
|
self.patch_specfile(specfile, hookscript, resfile)
|
|
554
553
|
|
|
555
554
|
cmdlist = self.pyicmd + ['--clean', '--workpath', self.workpath]
|
|
556
|
-
cmdlist.extend(self.pyiopts)
|
|
557
555
|
cmdlist.append(specfile)
|
|
558
556
|
logger.debug('%s', ' '.join(cmdlist))
|
|
559
557
|
logger.info('call PyInstaller to analysis, '
|
|
@@ -561,26 +559,33 @@ class Repacker6:
|
|
|
561
559
|
check_call(cmdlist, stdout=DEVNULL, stderr=DEVNULL)
|
|
562
560
|
|
|
563
561
|
with open(resfile, 'rb') as f:
|
|
564
|
-
|
|
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
|
|
565
570
|
|
|
566
571
|
def build(self):
|
|
567
572
|
"""Generate final bundle to output"""
|
|
568
|
-
|
|
573
|
+
obfscript = os.path.join(self.obfpath, os.path.basename(self.script))
|
|
569
574
|
cmdlist = self.pyicmd + [
|
|
570
575
|
'--clean',
|
|
571
576
|
'--distpath', self.output,
|
|
572
577
|
'--workpath', self.workpath,
|
|
573
|
-
'--specpath', self.packpath,
|
|
574
578
|
'--additional-hooks-dir', self.packpath,
|
|
579
|
+
self.modeopt
|
|
575
580
|
]
|
|
576
581
|
cmdlist.extend(self.pyiopts)
|
|
577
|
-
cmdlist.append(
|
|
582
|
+
cmdlist.append(obfscript)
|
|
578
583
|
|
|
579
584
|
logger.debug('%s', ' '.join(cmdlist))
|
|
580
585
|
logger.info('call PyInstaller to generate final bundle ...\n')
|
|
581
586
|
check_call(cmdlist)
|
|
582
587
|
logger.info('')
|
|
583
|
-
logger.info('the final bundle "%s"
|
|
588
|
+
logger.info('the final bundle has been generated to "%s" successfully',
|
|
584
589
|
self.output)
|
|
585
590
|
|
|
586
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
|