@@ -25,11 +25,87 @@ Build Issues
25
25
How to fix issues when generating obfuscated scripts
26
26
----------------------------------------------------
27
27
28
+ .. graphviz ::
29
+ :caption: Fix generating obfuscated scripts issues
30
+ :align: center
31
+ :name: graph-generate-script-issue
32
+
33
+ digraph G {
34
+ node [shape=box, style=rounded]
35
+
36
+ start [shape="doublecircle", label="",
37
+ style="filled", fillcolor="wheat"]
38
+
39
+ subgraph P0 {
40
+ rankdir="TB"
41
+ style="setlinewidth(0)"
42
+
43
+ s1 [label="Error: update license token failed"]
44
+ s2 [label="Error: out of license"]
45
+ s3 [label="Try to obfuscate hello-world script"]
46
+ s4 [label="Try to obfuscate by default options"]
47
+ s5 [label="Remove local configuration\n Rename .pyarmor/config\n Try to obfuscate the script"]
48
+
49
+ s31 [label="Comment some lines in script\n Find exact problem lines"]
50
+ }
51
+
52
+ subgraph P1 {
53
+ node [
54
+ style="filled,rounded",
55
+ fillcolor="burlywood",
56
+ ]
57
+
58
+ n1 [href="https://pyarmor.readthedocs.io/en/latest/reference/solutions.html#fix-register-issue"
59
+ label="Please check how to fix registering issues"]
60
+ n2 [href="https://pyarmor.readthedocs.io/en/latest/licenses.html"
61
+ label="Please check Pyarmor Licenses"]
62
+ n3 [href="https://github.com/dashingsoft/pyarmor/issues"
63
+ label="Reprot issue in Github\n The minimum options to reproduce the bug\n Code snapshort which results in problem\n Full traceback"]
64
+ n4 [href="https://pyarmor.readthedocs.io/en/latest/reference/man.html#pyarmor-gen"
65
+ label="Please check Pyarmor man page\n Understand the right usage for each option"]
66
+ n5 [href="https://pyarmor.readthedocs.io/en/latest/reference/solutions.html#fix-bootstrap-issue"
67
+ label="Please check how to fix Pyarmor bootstrap issuses"]
68
+ nr [href="https://github.com/dashingsoft/pyarmor/issues"
69
+ label="Report issue in Github\n The minimum options to reproduce this issue\n The simplest script without third-party package"]
70
+ }
71
+
72
+ start -> s1 -> s2 -> s3 -> s4 -> s5 -> nr
73
+ s31 -> n3
74
+
75
+ edge [tailport=se]
76
+ s1 -> n1 [label="Yes"]
77
+ s2 -> n2 [label="Yes"]
78
+ s3 -> s31 [label="Works"]
79
+ s4 -> n4 [label="Works"]
80
+ s5 -> n5 [label="Error"]
81
+ }
82
+
28
83
.. _pack-script-issue :
29
84
30
85
How to fix issues when packing obfuscated scripts
31
86
-------------------------------------------------
32
87
88
+ .. graphviz ::
89
+ :caption: Fix packing script issues
90
+ :align: center
91
+ :name: graph-pack-script-issue
92
+
93
+ digraph G {
94
+ node [shape=box, style=rounded]
95
+
96
+ start [shape="doublecircle", label="",
97
+ style="filled", fillcolor="wheat"]
98
+
99
+ s1 [label="Do not obfuscate the scripts\n Pack plain scripts by PyInstaller directly\n Make sure the final bundle works"]
100
+ s2 [label="Do not use option --pack\n Only obfuscate the scripts\n Make sure it works"]
101
+ s3 [style="filled,rounded",
102
+ fillcolor="burlywood",
103
+ href="https://pyarmor.readthedocs.io/en/latest/topic/repack.html"
104
+ label="Please check topic `insight into packing `"]
105
+
106
+ start -> s1 -> s2 -> s3
107
+ }
108
+
33
109
.. _how-fix-runtime-issue :
34
110
35
111
Runtime Issues
@@ -40,7 +116,183 @@ Runtime Issues
40
116
How to fix issues when executing obfuscated script
41
117
--------------------------------------------------
42
118
119
+ .. graphviz ::
120
+ :caption: Fix issues when executing obfuscated script
121
+ :align: center
122
+ :name: graph-run-obfuscated-script-issue
123
+
124
+ digraph G {
125
+ node [shape=box, style=rounded]
126
+
127
+ start [shape="doublecircle", label="",
128
+ style="filled", fillcolor="wheat"]
129
+
130
+ subgraph P0 {
131
+ rankdir="TB"
132
+ style="setlinewidth(0)"
133
+
134
+ s1 [label="Is build device same as target device?"]
135
+ s2 [label="Is Python major.minor version to obfuscate the script same as\n Pyarmor major.minor version to run the obfuscated scripts?"]
136
+ s3 [label="Is it raising exception message?"]
137
+ s4 [label="If RFT mode is enabled\n Try to disable RFT mode\n Does it work?"]
138
+ s5 [label="If BCC mode is enabled\n Try to disable BCC mode\n Does it work?"]
139
+ s6 [label="If any restrict options are used\n Try to remove these options\n Does it work?"]
140
+ s7 [label="If any third-party library is used\n Try to test one hello-world script\n Does it work"]
141
+ s8 [label="If Python is alpha or rc version\n Try to upgrade Python"]
142
+
143
+ s1 -> s2 -> s3
144
+ s4 -> s5 -> s6 -> s7 -> s8
145
+ }
146
+
147
+ start -> s1
148
+
149
+ subgraph P1 {
150
+ node [
151
+ style="filled,rounded",
152
+ fillcolor="burlywood",
153
+ ]
154
+ n1 [
155
+ href="https://pyarmor.readthedocs.io/en/latest/tutorial/advanced.html#generating-cross-platform-scripts"
156
+ label="Please check cross-platform solutions"]
157
+ n2 [
158
+ href="https://pyarmor.readthedocs.io/en/latest/tutorial/advanced.html#support-multiple-python-versions"
159
+ label="Please use same Python major.minor version to obfuscate the scripts\n If need support multiple Python version\n Please check this link"]
160
+ n3 [href="https://pyarmor.readthedocs.io/en/latest/reference/errors.html"
161
+ label="Please check error message table to find solution"]
162
+ n4 [style=rounded
163
+ label="Try to add print statement in scripts\n Find the problem lines"]
164
+ n5 [href="#graph-fix-runtime-crash-issue"
165
+ label="Please check how to fix crashing issue"]
166
+ n6 [
167
+ href="https://pyarmor.readthedocs.io/en/latest/topic/rftmode.html"
168
+ label="Please check topic `insight into RFT mode `"]
169
+ n7 [
170
+ href="https://pyarmor.readthedocs.io/en/latest/topic/bccmode.html"
171
+ label="Please check topic `insight into BCC mode `"]
172
+ n8 [href="https://pyarmor.readthedocs.io/en/latest/reference/man.html#pyarmor-gen"
173
+ label="Understand the usage of each option\n Use the right options\n Or refine the scripts"]
174
+ n9 [href="https://pyarmor.readthedocs.io/en/latest/how-to/third-party.html"
175
+ label="Check third-party library solutions"]
176
+ n10 [href="https://github.com/dashingsoft/pyarmor/issues"
177
+ label="Report issue in Github\n The minimum options to reproduce this issue\n The simplest script without third-party package"]
178
+ }
179
+
180
+ s3 -> n3 [label="Yes"]
181
+ s3 -> n4 [label="No"]
182
+ s3 -> n5 [label="Crashed"]
183
+ n3 -> s4 [label="No solution found"]
184
+ s8 -> n10 [label="Still wrong"]
185
+
186
+ n4 -> s4
187
+ n5 -> s4
188
+
189
+ edge [tailport=se]
190
+ s1 -> n1 [label="No"]
191
+ s2 -> n2 [label="No"]
192
+ s4 -> n6 [label="Yes"]
193
+ s5 -> n7 [label="Yes"]
194
+ s6 -> n8 [label="Yes"]
195
+ s7 -> n9 [label="Yes"]
196
+ }
197
+
198
+ .. graphviz ::
199
+ :caption: Fix crash issues in runtime
200
+ :align: center
201
+ :name: graph-fix-runtime-crash-issue
202
+
203
+ digraph G {
204
+ node [shape=box, style=rounded]
205
+
206
+ start [shape="doublecircle", label="",
207
+ style="filled", fillcolor="wheat"]
208
+
209
+ subgraph P0 {
210
+ rankdir="TB"
211
+ style="setlinewidth(0)"
212
+
213
+ s1 [label="Is target device Apple M1+ ?"]
214
+ s2 [label="Which Python interpreter to run the obfuscated scripts?"]
215
+ }
216
+
217
+ subgraph P1 {
218
+ node [
219
+ style="filled,rounded",
220
+ fillcolor="burlywood",
221
+ ]
222
+ n1 [label="Check extension pyarmor_runtime.so by codesign"]
223
+ n2 [href="https://pyarmor.readthedocs.io/en/latest/topic/obfuscated-script.html"
224
+ label="Check doc to understand obfuscated scripts"]
225
+ n3 [href="https://github.com/dashingsoft/pyarmor/issues"
226
+ label="Report issue in Github\n The minimum options to reproduce this issue\n The simplest script without third-party package"]
227
+ }
228
+
229
+ start -> s1
230
+ s1 -> s2 -> n3
231
+
232
+ edge [tailport=se]
233
+ s1 -> n1 [label="Yes"]
234
+ s2 -> n2 [label="Not CPython"]
235
+ }
236
+
43
237
.. _run-packed-script-issue :
44
238
45
239
How to fix issues when executing packed bundle
46
240
----------------------------------------------
241
+
242
+ .. graphviz ::
243
+ :caption: Fix issues when executing packed bundle
244
+ :align: center
245
+ :name: graph-run-packed-script-issue
246
+
247
+ digraph G {
248
+ node [shape=box, style=rounded]
249
+
250
+ start [shape="doublecircle", label="",
251
+ style="filled", fillcolor="wheat"]
252
+
253
+ subgraph P0 {
254
+ rankdir="TB"
255
+ style="setlinewidth(0)"
256
+
257
+ s2 [label="In build device, do not obfuscate scripts\n pack the plain scripts by Pyinstaller directly\n Then run the final bundle in target device\n Does it work?"]
258
+ s3 [label="In build device, do not use option --pack\n Only obfuscate scripts\n Then run the obfuscated scripts in target device\n Does it work?"]
259
+ s4 [label="In build device, try fewer options\n Use the minimu options to pack scripts\n Then run the final bundle in target device\n Does it work?"]
260
+ s5 [
261
+ style="filled,rounded",
262
+ fillcolor="burlywood",
263
+ href="https://pyarmor.readthedocs.io/en/latest/topic/repack.html"
264
+ label="Refer to doc about packing topic\n Pack the scripts by fewer options"]
265
+ s6 [label="Try to pack one hello-world script\n Then run it in target device\n Does is work?"]
266
+
267
+ s2 -> s3 -> s4 -> s5
268
+ s4 -> s6 [label="Error", tailport=se]
269
+ }
270
+
271
+ subgraph P2 {
272
+ node [
273
+ style="filled,rounded",
274
+ fillcolor="burlywood",
275
+ ]
276
+ n1 [
277
+ href="https://pyinstaller.org/en/stable/usage.html"
278
+ label="Please refer to PyInstaller doc\n Make sure PyInstaller could pack the plain scripts\n And the final bundle works in target device"]
279
+ n2 [
280
+ href="#run-obfuscated-script-issue"
281
+ label="Please check how to fix running obfuscated script issues"]
282
+ n3 [
283
+ href="https://pyarmor.readthedocs.io/en/latest/how-to/third-party.html"
284
+ label="Please check third-party library compatibility"]
285
+ n4 [
286
+ href="https://github.com/dashingsoft/pyarmor/issues"
287
+ label="Report issue in Github\n The minimum options to reproduce this issue\n The simplest script without third-party package"]
288
+ }
289
+
290
+ start -> s2
291
+ s6 -> n3
292
+
293
+ edge [tailport=se]
294
+
295
+ s2 -> n1 [label="Error"]
296
+ s3 -> n2 [label="Error"]
297
+ s6 -> n4 [label="Error" tailport=e]
298
+ }
0 commit comments