Skip to content

Commit 3682ba7

Browse files
author
Giuseppe Corbelli
committed
Explicit excludes have been disabled and comments added on how to
proceed to re-enable them (see PR #384 discussion)
1 parent ba196d2 commit 3682ba7

1 file changed

Lines changed: 63 additions & 82 deletions

File tree

websockify.spec

Lines changed: 63 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -3,93 +3,79 @@
33
# Tested with pyinstaller 3.4, python 3.7.2, linux x86_64
44
# NOT tested with SSL
55

6-
block_cipher = None
7-
8-
USE_NUMPY=False
6+
# Set to True to bring in numpy if available (increases output package size by ~45MB on linux64/python3.7).
7+
# If False it will be left out
8+
USE_NUMPY=True
99

10+
# Get debug messages by pyinstaller bootloader
1011
DEBUG=False
12+
13+
# Explicitly excluded modules
14+
excludes = []
15+
16+
# It is possible to reduce the resulting package size (~3MB on linux64/python3.7)
17+
# by excluding unused encodings.
18+
# By default (as of pyinstaller 3.4/python 3.7) all encodings are pulled in:
19+
# the following list can be used to reduce the encodings pulled in to the bare minimum.
20+
# You should include the target platform encoding or call locale.setlocale(locale.LC_ALL, 'C')
21+
# early in websockify_init()
22+
#
23+
# These are required:
24+
# - 'encodings.base64_codec' This is required when payload is b64 encoded, don't exclude
25+
# - 'encodings' Father package must also be included
26+
# - 'encodings.aliases' Required, see initstdio() function in cPython sources
27+
# - 'encodings.utf_8'
28+
# - 'encodings.latin_1'
29+
# - 'encodings.ascii' Required by some cascaded import from http
30+
# - encodings.idna' Required by <I don't know>
31+
# excludes.extend(('encodings.undefined', 'encodings.utf_32_be', 'encodings.utf_32',
32+
# 'encodings.utf_16_le', 'encodings.utf_16_be', 'encodings.utf_16', 'encodings.utf_32_le',
33+
# 'encodings.zlib_codec', 'encodings.euc_jis_2004', 'encodings.ptcp154', 'encodings.cp874',
34+
# 'encodings.cp424',
35+
# 'encodings.iso2022_jp_2', 'encodings.euc_jp', 'encodings.mac_arabic', 'encodings.shift_jis',
36+
# 'encodings.utf_7', 'encodings.cp866', 'encodings.cp855', 'encodings.rot_13', 'encodings.cp1006',
37+
# 'encodings.johab', 'encodings.cp865', 'encodings.mac_cyrillic', 'encodings.cp737', 'encodings.kz1048',
38+
# 'encodings.cp1256', 'encodings.cp1252', 'encodings.hp_roman8', 'encodings.cp1026', 'encodings.iso8859_6',
39+
# 'encodings.hz', 'encodings.shift_jisx0213', 'encodings.cp500', 'encodings.palmos', 'encodings.euc_jisx0213',
40+
# 'encodings.cp864', 'encodings.cp875', 'encodings.mac_iceland', 'encodings.cp856', 'encodings.big5',
41+
# 'encodings.iso2022_jp_ext', 'encodings.charmap', 'encodings.iso8859_7', 'encodings.cp852',
42+
# 'encodings.mac_croatian', 'encodings.bz2_codec', 'encodings.cp863', 'encodings.iso8859_14',
43+
# 'encodings.cp65001', 'encodings.cp1254', 'encodings.iso2022_jp_2004', 'encodings.cp932',
44+
# 'encodings.raw_unicode_escape', 'encodings.mac_romanian', 'encodings.gb18030', 'encodings.cp1257',
45+
# 'encodings.mac_latin2', 'encodings.iso2022_kr', 'encodings.shift_jis_2004', 'encodings.cp850',
46+
# 'encodings.iso2022_jp_1', 'encodings.cp862', 'encodings.iso8859_15', 'encodings.hex_codec',
47+
# 'encodings.cp857', 'encodings.iso8859_4', 'encodings.mac_roman', 'encodings.cp1250',
48+
# 'encodings.iso8859_9', 'encodings.mbcs', 'encodings.mac_greek',
49+
# 'encodings.cp1125', 'encodings.koi8_u', 'encodings.cp273', 'encodings.big5hkscs', 'encodings.cp1140',
50+
# 'encodings.utf_8_sig', 'encodings.iso8859_13', 'encodings.tis_620', 'encodings.cp037',
51+
# 'encodings.iso2022_jp_3', 'encodings.cp861', 'encodings.mac_farsi', 'encodings.iso8859_1',
52+
# 'encodings.cp869', 'encodings.iso8859_8', 'encodings.unicode_internal',
53+
# 'encodings.iso8859_3', 'encodings.cp720', 'encodings.koi8_r', 'encodings.cp437', 'encodings.cp858',
54+
# 'encodings.euc_kr', 'encodings.iso8859_2', 'encodings.cp1251', 'encodings.cp950', 'encodings.gbk',
55+
# 'encodings.cp775', 'encodings.unicode_escape', 'encodings.quopri_codec', 'encodings.cp860',
56+
# 'encodings.koi8_t', 'encodings.uu_codec', 'encodings.cp1253', 'encodings.iso8859_5',
57+
# 'encodings.mac_centeuro', 'encodings.iso8859_11', 'encodings.iso8859_16', 'encodings.iso8859_10',
58+
# 'encodings.gb2312', 'encodings.iso2022_jp', 'encodings.mac_turkish',
59+
# 'encodings.cp1255', 'encodings.cp949', 'encodings.cp1258', 'encodings.punycode'))
60+
61+
# Also some other modules may be safely left out (save ~2MB on linux64/python3.7)
62+
# excludes.extend(('bz2', 'curses', 'decimal', 'grp', 'gzip', 'json', 'lzma', 'pdb', 'pkg_resources',
63+
# 'plistlib', 'pyexpat', 'readline', 'termios', 'uuid', 'xml', 'zlib'))
64+
65+
block_cipher = None
1166
CONSOLE=True
1267

13-
excludes = [
14-
# By default all encodings are pulled in, try to exclude non-relevant ones
15-
# This is required when payload is b64 encoded, don't exclude
16-
# 'encodings.base64_codec'
17-
# Father package must also be included
18-
# 'encodings'
19-
# Required, see initstdio() function in cPython sources
20-
# 'encodings.aliases'
21-
# 'encodings.utf_8'
22-
# 'encodings.latin_1'
23-
# Required by some cascaded import from http
24-
# 'encodings.ascii'
25-
# Required by <I don't know>
26-
# 'encodings.idna'
27-
'encodings.undefined',
28-
'encodings.utf_32_be',
29-
'encodings.utf_32',
30-
'encodings.utf_16_le',
31-
'encodings.utf_16_be',
32-
'encodings.utf_16',
33-
'encodings.utf_32_le',
34-
'encodings.zlib_codec',
35-
'encodings.euc_jis_2004', 'encodings.ptcp154', 'encodings.cp874', 'encodings.cp424',
36-
'encodings.iso2022_jp_2', 'encodings.euc_jp', 'encodings.mac_arabic', 'encodings.shift_jis',
37-
'encodings.utf_7', 'encodings.cp866', 'encodings.cp855', 'encodings.rot_13', 'encodings.cp1006',
38-
'encodings.johab', 'encodings.cp865', 'encodings.mac_cyrillic', 'encodings.cp737', 'encodings.kz1048',
39-
'encodings.cp1256', 'encodings.cp1252', 'encodings.hp_roman8', 'encodings.cp1026', 'encodings.iso8859_6',
40-
'encodings.hz', 'encodings.shift_jisx0213', 'encodings.cp500', 'encodings.palmos', 'encodings.euc_jisx0213',
41-
'encodings.cp864', 'encodings.cp875', 'encodings.mac_iceland', 'encodings.cp856', 'encodings.big5',
42-
'encodings.iso2022_jp_ext', 'encodings.charmap', 'encodings.iso8859_7', 'encodings.cp852',
43-
'encodings.mac_croatian', 'encodings.bz2_codec', 'encodings.cp863', 'encodings.iso8859_14',
44-
'encodings.cp65001', 'encodings.cp1254', 'encodings.iso2022_jp_2004', 'encodings.cp932',
45-
'encodings.raw_unicode_escape', 'encodings.mac_romanian', 'encodings.gb18030', 'encodings.cp1257',
46-
'encodings.mac_latin2', 'encodings.iso2022_kr', 'encodings.shift_jis_2004', 'encodings.cp850',
47-
'encodings.iso2022_jp_1', 'encodings.cp862', 'encodings.iso8859_15', 'encodings.hex_codec',
48-
'encodings.cp857', 'encodings.iso8859_4', 'encodings.mac_roman', 'encodings.cp1250',
49-
'encodings.iso8859_9', 'encodings.mbcs', 'encodings.mac_greek',
50-
'encodings.cp1125', 'encodings.koi8_u', 'encodings.cp273', 'encodings.big5hkscs', 'encodings.cp1140',
51-
'encodings.utf_8_sig', 'encodings.iso8859_13', 'encodings.tis_620', 'encodings.cp037',
52-
'encodings.iso2022_jp_3', 'encodings.cp861', 'encodings.mac_farsi', 'encodings.iso8859_1',
53-
'encodings.cp869', 'encodings.iso8859_8', 'encodings.unicode_internal',
54-
'encodings.iso8859_3', 'encodings.cp720', 'encodings.koi8_r', 'encodings.cp437', 'encodings.cp858',
55-
'encodings.euc_kr', 'encodings.iso8859_2', 'encodings.cp1251', 'encodings.cp950', 'encodings.gbk',
56-
'encodings.cp775', 'encodings.unicode_escape', 'encodings.quopri_codec', 'encodings.cp860',
57-
'encodings.koi8_t', 'encodings.uu_codec', 'encodings.cp1253', 'encodings.iso8859_5',
58-
'encodings.mac_centeuro', 'encodings.iso8859_11', 'encodings.iso8859_16', 'encodings.iso8859_10',
59-
'encodings.gb2312', 'encodings.iso2022_jp', 'encodings.mac_turkish',
60-
'encodings.cp1255', 'encodings.cp949', 'encodings.cp1258', 'encodings.punycode',
61-
# Apparently required??? by numpy
62-
# 'unittest'
63-
# Other redundant stuff
64-
'bz2',
65-
'curses',
66-
'decimal',
67-
'grp',
68-
'gzip',
69-
'json',
70-
'lzma',
71-
'pdb',
72-
'pkg_resources',
73-
'plistlib',
74-
'pyexpat',
75-
'readline',
76-
'termios',
77-
'uuid',
78-
'xml',
79-
'zlib'
80-
]
8168
if not USE_NUMPY:
82-
excludes.append("numpy")
69+
# Apparently unittes is required??? by numpy
70+
excludes.extend(("numpy", "unittest"))
8371

8472
hiddenimports=[]
8573

8674
a = Analysis(
8775
['run'],
8876
pathex=[],
8977
binaries=[],
90-
datas=[
91-
("docs", "docs"),
92-
],
78+
datas=[("docs", "docs"),],
9379
hiddenimports=hiddenimports,
9480
hookspath=[],
9581
runtime_hooks=[],
@@ -111,11 +97,6 @@ exe = EXE(
11197
console=CONSOLE
11298
)
11399
coll = COLLECT(
114-
exe,
115-
a.binaries,
116-
a.zipfiles,
117-
a.datas,
118-
strip=False,
119-
upx=False,
120-
name='websockify'
100+
exe, a.binaries, a.zipfiles, a.datas,
101+
strip=False, upx=False, name='websockify'
121102
)

0 commit comments

Comments
 (0)