pyarmor 8.5.4__zip → 8.5.5__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.4 → pyarmor-8.5.5}/PKG-INFO +1 -1
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/__init__.py +1 -1
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/__main__.py +7 -6
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/context.py +12 -4
- pyarmor-8.5.5/pyarmor/cli/core.data.1 +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/default.cfg +28 -1
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/repack.py +28 -5
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/config.py +1 -1
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor.egg-info/PKG-INFO +1 -1
- pyarmor-8.5.4/pyarmor/cli/core.data.1 +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/MANIFEST.in +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/README.md +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/README.rst +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/__init__.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/benchmark.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/build_meta.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/bootstrap.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/bug.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/config.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/core.data.2 +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/core.data.3 +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/docker.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/generate.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/hdinfo.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/merge.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/mixer.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/plugin.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/public_capsule.zip +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/register.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/resource.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cli/shell.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/cobuilder.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/README-ZH.md +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/README.md +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/build-for-exe.bat +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/build-for-freeze.bat +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/build-with-project.bat +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/build-with-project.sh +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/cx_Freeze/hello.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/cx_Freeze/queens.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/cx_Freeze/setup.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/helloworld/foo.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/obfuscate-app.bat +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/obfuscate-app.sh +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/obfuscate-pkg.bat +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/obfuscate-pkg.sh +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pack-obfuscated-scripts.bat +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pack-obfuscated-scripts.sh +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/py2exe/hello.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/py2exe/queens.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/py2exe/setup.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/Arithmetic.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/Calls.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/CommandLine.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/Constructs.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/Dict.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/Exceptions.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/Imports.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/Instances.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/Lists.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/Lookups.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/NewInstances.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/Numbers.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/Setup.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/Strings.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/Tuples.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/With.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/clockres.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/package/__init__.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/package/submodule.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/pybench.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/pybench/systimes.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/simple/queens.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/testmod/hello.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/testmod/queens.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/testpkg/main.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/testpkg/mypkg/__init__.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/examples/testpkg/mypkg/foo.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/helper/__init__.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/helper/build_data_module.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/helper/buildext.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/helper/get_bind_key.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/helper/get_license_info.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/helper/get_platform_name.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/helper/merge.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/helper/repack.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/helper/superuntime.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/license.tri +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/packer.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/platforms/darwin/x86_64/_pytransform.dylib +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/platforms/linux/x86/_pytransform.so +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/platforms/linux/x86_64/_pytransform.so +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/platforms/windows/x86/_pytransform.dll +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/platforms/windows/x86_64/_pytransform.dll +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/plugins/README.md +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/plugins/check_ntp_time.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/polyfills/__init__.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/polyfills/argparse.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/product.key +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/project.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/protect_code.pt +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/protect_code2.pt +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/public.key +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/public_capsule.zip +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/pyarmor-deprecated.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/pyarmor-webui.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/pyarmor.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/pyimcore.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/pyshield.key +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/pyshield.lic +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/pytransform.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/reform.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/register.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/sppmode.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor/utils.py +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor.egg-info/SOURCES.txt +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor.egg-info/dependency_links.txt +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor.egg-info/entry_points.txt +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor.egg-info/requires.txt +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/pyarmor.egg-info/top_level.txt +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/setup.cfg +0 -0
- {pyarmor-8.5.4 → pyarmor-8.5.5}/setup.py +0 -0
|
@@ -135,7 +135,7 @@ def format_gen_args(ctx, args):
|
|
|
135
135
|
options['user_data'] = args.bind_data
|
|
136
136
|
|
|
137
137
|
if args.pack:
|
|
138
|
-
dist_path =
|
|
138
|
+
dist_path = ctx.pack_obfpath
|
|
139
139
|
logger.info('implicitly save obfuscated scripts to "%s"', dist_path)
|
|
140
140
|
options['output'] = dist_path
|
|
141
141
|
|
|
@@ -209,7 +209,7 @@ def check_gen_context(ctx, args):
|
|
|
209
209
|
raise CliError('--outer conflicts with any -e, --period, -b')
|
|
210
210
|
|
|
211
211
|
if args.pack:
|
|
212
|
-
choices = 'auto', 'onefile', 'onedir'
|
|
212
|
+
choices = 'auto', 'onefile', 'onedir', 'F', 'D', 'FC', 'DC'
|
|
213
213
|
if args.pack not in choices and not os.path.isfile(args.pack):
|
|
214
214
|
raise CliError('--pack must be an executable file, '
|
|
215
215
|
'"auto", "onefile" or "onedir"')
|
|
@@ -232,15 +232,16 @@ def cmd_gen(ctx, args):
|
|
|
232
232
|
return _cmd_gen_key(builder, options)
|
|
233
233
|
elif args.inputs[0].lower() in ('runtime', 'run', 'r'):
|
|
234
234
|
_cmd_gen_runtime(builder, options)
|
|
235
|
-
elif args.pack in ('auto', 'onefile', 'onedir'):
|
|
235
|
+
elif args.pack in ('auto', 'onefile', 'onedir', 'F', 'D', 'FC', 'DC'):
|
|
236
236
|
from .repack import Repacker6
|
|
237
237
|
packer = Repacker6(ctx, args.pack, options['inputs'], args.output)
|
|
238
|
+
packer.check()
|
|
238
239
|
builder.process(options, packer)
|
|
239
240
|
Plugin.post_build(ctx, pack=args.pack)
|
|
240
241
|
elif args.pack:
|
|
241
242
|
from .repack import Repacker
|
|
242
243
|
codesign = ctx.cfg['pack'].get('codesign_identify', None)
|
|
243
|
-
packer = Repacker(args.pack, ctx.
|
|
244
|
+
packer = Repacker(args.pack, ctx.pack_basepath, codesign=codesign)
|
|
244
245
|
packer.check()
|
|
245
246
|
builder.process(options, packer=packer)
|
|
246
247
|
Plugin.post_build(ctx, pack=args.pack)
|
|
@@ -419,8 +420,8 @@ https://pyarmor.readthedocs.io/en/stable/reference/man.html#pyarmor-gen
|
|
|
419
420
|
'action arguments'
|
|
420
421
|
).add_mutually_exclusive_group()
|
|
421
422
|
group.add_argument(
|
|
422
|
-
'--pack', metavar='
|
|
423
|
-
help='
|
|
423
|
+
'--pack', metavar='MODE',
|
|
424
|
+
help='specify pack mode, onefile or onedir'
|
|
424
425
|
)
|
|
425
426
|
group.add_argument(
|
|
426
427
|
'--no-runtime', action='store_true', help=argparse.SUPPRESS
|
|
@@ -366,10 +366,6 @@ class Context(object):
|
|
|
366
366
|
return self._check_logpath(
|
|
367
367
|
self.cfg['logging'].get('trace_logfile', 'pyarmor.trace.log'))
|
|
368
368
|
|
|
369
|
-
@property
|
|
370
|
-
def repack_path(self):
|
|
371
|
-
return os.path.join(self.local_path, 'pack')
|
|
372
|
-
|
|
373
369
|
def _optb(self, section, name):
|
|
374
370
|
return self.cfg.getboolean(section, name, vars=self.cmd_options)
|
|
375
371
|
|
|
@@ -608,6 +604,10 @@ class Context(object):
|
|
|
608
604
|
def runtime_obf_key_mode(self):
|
|
609
605
|
return self._opti('runtime', 'obf_key_mode')
|
|
610
606
|
|
|
607
|
+
@property
|
|
608
|
+
def runtime_patch_extension(self):
|
|
609
|
+
return self._opti('runtime', 'patch_extension')
|
|
610
|
+
|
|
611
611
|
#
|
|
612
612
|
# RFT settings
|
|
613
613
|
#
|
|
@@ -736,3 +736,11 @@ class Context(object):
|
|
|
736
736
|
elif line:
|
|
737
737
|
pyi_opts.append(line)
|
|
738
738
|
return pyi_opts
|
|
739
|
+
|
|
740
|
+
@property
|
|
741
|
+
def pack_basepath(self):
|
|
742
|
+
return os.path.join(self.local_path, 'pack')
|
|
743
|
+
|
|
744
|
+
@property
|
|
745
|
+
def pack_obfpath(self):
|
|
746
|
+
return os.path.join(self.pack_basepath, 'dist')
|
|
Binary file
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
;; Pyarmor version
|
|
4
4
|
major = 8
|
|
5
5
|
minor = 5
|
|
6
|
-
patch =
|
|
6
|
+
patch = 5
|
|
7
7
|
|
|
8
8
|
;; Compatible core version
|
|
9
9
|
cli.core = 6.5.1
|
|
@@ -223,6 +223,19 @@ package_name_format = pyarmor_runtime_{suffix}
|
|
|
223
223
|
;; pyarmor_runtime.so
|
|
224
224
|
simple_extension_name = 1
|
|
225
225
|
|
|
226
|
+
;; Whether patching extension to embedded runtime key
|
|
227
|
+
;;
|
|
228
|
+
;; 0: do not patch extension, but store runtime key to one file
|
|
229
|
+
;; 1: runtime key is embedded into extension
|
|
230
|
+
;;
|
|
231
|
+
;; The purpose is to solve code sign issue for Darwin platform
|
|
232
|
+
;; Do not patch extension will keep code sign, so need not re-sign
|
|
233
|
+
;; But it need an extra file.
|
|
234
|
+
;;
|
|
235
|
+
;; Note: it's different from outer runtime key.
|
|
236
|
+
;;
|
|
237
|
+
patch_extension = 1
|
|
238
|
+
|
|
226
239
|
;; Obfuscate runtime key
|
|
227
240
|
;; 0: no obfuscation
|
|
228
241
|
;; 1: simple obfuscation
|
|
@@ -342,6 +355,20 @@ strip = 0
|
|
|
342
355
|
;; append, append it to archive
|
|
343
356
|
no_matched_pyc = error
|
|
344
357
|
|
|
358
|
+
;; Extra options to call PyInstaller when packing the obfuscated scripts
|
|
359
|
+
;; One option one line, name and value separted by one whitespace
|
|
360
|
+
;; For example
|
|
361
|
+
;;
|
|
362
|
+
;; pyi_options = -w
|
|
363
|
+
;; --add-data default.cfg:.
|
|
364
|
+
;; --icon myapp.ico
|
|
365
|
+
;;
|
|
366
|
+
;; The following options could not be used here:
|
|
367
|
+
;;
|
|
368
|
+
;; --distpath, --workpath, --specpath
|
|
369
|
+
;;
|
|
370
|
+
; pyi_options =
|
|
371
|
+
|
|
345
372
|
[bcc]
|
|
346
373
|
unsupported_functions = exec eval super locals __assert_armored__
|
|
347
374
|
unsupported_nodes = AsyncFunctionDef AsyncFor AsyncWith Await Yield YieldFrom GeneratorExp NamedExpr MatchValue MatchSingleton MatchSequence MatchMapping MatchClass MatchStar MatchAs MatchOr
|
|
@@ -498,11 +498,12 @@ class Repacker6:
|
|
|
498
498
|
self.output = 'dist' if output is None else os.path.normpath(output)
|
|
499
499
|
|
|
500
500
|
self.script = self.inputs[0]
|
|
501
|
-
self.
|
|
501
|
+
self.obfpath = os.path.normpath(self.ctx.pack_obfpath)
|
|
502
|
+
self.packpath = os.path.normpath(self.ctx.pack_basepath)
|
|
502
503
|
self.workpath = os.path.join(self.packpath, 'build')
|
|
503
|
-
self.obfpath = os.path.join(self.packpath, 'dist')
|
|
504
504
|
self.pyicmd = [sys.executable, '-m', 'PyInstaller']
|
|
505
505
|
self.pyiopts = self.init_opts(mode)
|
|
506
|
+
self.autoclean = mode in ('FC', 'DC')
|
|
506
507
|
|
|
507
508
|
def init_opts(self, mode):
|
|
508
509
|
opts = []
|
|
@@ -510,7 +511,7 @@ class Repacker6:
|
|
|
510
511
|
if mode == 'auto':
|
|
511
512
|
exopts += ('--onefile', '-F', '--onefolder', '-D')
|
|
512
513
|
else:
|
|
513
|
-
opts.append('-F' if mode
|
|
514
|
+
opts.append('-F' if mode in ('onefile', 'F', 'FC') else '-D')
|
|
514
515
|
opts.extend(self.ctx.pyi_options)
|
|
515
516
|
|
|
516
517
|
exvalues = '--distpath', '--specpath', '--workpath'
|
|
@@ -540,7 +541,9 @@ class Repacker6:
|
|
|
540
541
|
]
|
|
541
542
|
cmdspec.extend(self.filter_opts(self.pyiopts, ('--name', '-N')))
|
|
542
543
|
cmdspec.append(self.script)
|
|
543
|
-
|
|
544
|
+
logger.debug('%s', ' '.join(cmdspec))
|
|
545
|
+
logger.info('call PyInstaller to generate specfile')
|
|
546
|
+
check_call(cmdspec, stdout=DEVNULL, stderr=DEVNULL)
|
|
544
547
|
|
|
545
548
|
name = os.path.splitext(os.path.basename(self.script))[0]
|
|
546
549
|
rtname = self.ctx.runtime_package_name
|
|
@@ -552,7 +555,10 @@ class Repacker6:
|
|
|
552
555
|
cmdlist = self.pyicmd + ['--clean', '--workpath', self.workpath]
|
|
553
556
|
cmdlist.extend(self.pyiopts)
|
|
554
557
|
cmdlist.append(specfile)
|
|
555
|
-
|
|
558
|
+
logger.debug('%s', ' '.join(cmdlist))
|
|
559
|
+
logger.info('call PyInstaller to analysis, '
|
|
560
|
+
'it may take several minutes ...')
|
|
561
|
+
check_call(cmdlist, stdout=DEVNULL, stderr=DEVNULL)
|
|
556
562
|
|
|
557
563
|
with open(resfile, 'rb') as f:
|
|
558
564
|
return marshal.load(f)
|
|
@@ -569,7 +575,13 @@ class Repacker6:
|
|
|
569
575
|
]
|
|
570
576
|
cmdlist.extend(self.pyiopts)
|
|
571
577
|
cmdlist.append(script)
|
|
578
|
+
|
|
579
|
+
logger.debug('%s', ' '.join(cmdlist))
|
|
580
|
+
logger.info('call PyInstaller to generate final bundle ...\n')
|
|
572
581
|
check_call(cmdlist)
|
|
582
|
+
logger.info('')
|
|
583
|
+
logger.info('the final bundle "%s" has been generate successfully',
|
|
584
|
+
self.output)
|
|
573
585
|
|
|
574
586
|
def repack(self, *unused):
|
|
575
587
|
"""Only for compatible with Repacker"""
|
|
@@ -591,3 +603,14 @@ class Repacker6:
|
|
|
591
603
|
|
|
592
604
|
with open(specfile, 'w') as f:
|
|
593
605
|
f.write(''.join(lines))
|
|
606
|
+
|
|
607
|
+
def check(self):
|
|
608
|
+
if os.path.exists(self.output) and self.autoclean:
|
|
609
|
+
n = len(os.path.abspath(self.output).split(os.sep))
|
|
610
|
+
if n < 3:
|
|
611
|
+
prompt = 'Are you sure to remove path "%s" (y/n)? '
|
|
612
|
+
choice = input(prompt % self.output).lower()[:1]
|
|
613
|
+
if not choice == 'y':
|
|
614
|
+
return
|
|
615
|
+
logger.info('clean output path "%s"', self.output)
|
|
616
|
+
shutil.rmtree(self.output)
|
|
Binary file
|
|
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
|