Skip to content

Commit 86e467e

Browse files
committed
pyinstaller support
1 parent ea11d8c commit 86e467e

File tree

6 files changed

+65
-3
lines changed

6 files changed

+65
-3
lines changed

pyinstaller/.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build
2+
dist

pyinstaller/Makefile

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
all:
2+
pyinstaller -F repo.spec

pyinstaller/hook.py

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
import pkg_resources
3+
eps = ['help = repo.subcmds.help:Help', 'overview = repo.subcmds.overview:Overview', 'sync = repo.subcmds.sync:Sync', 'gitc-delete = repo.subcmds.gitc_delete:GitcDelete', 'download = repo.subcmds.download:Download', 'diff = repo.subcmds.diff:Diff', 'diffmanifests = repo.subcmds.diffmanifests:Diffmanifests', 'start = repo.subcmds.start:Start', 'init = repo.subcmds.init:Init', 'version = repo.subcmds.version:Version', 'checkout = repo.subcmds.checkout:Checkout', 'status = repo.subcmds.status:Status', 'forall = repo.subcmds.forall:Forall', 'smartsync = repo.subcmds.smartsync:Smartsync', 'cherry-pick = repo.subcmds.cherry_pick:CherryPick', 'grep = repo.subcmds.grep:Grep', 'stage = repo.subcmds.stage:Stage', 'info = repo.subcmds.info:Info', 'gitc-init = repo.subcmds.gitc_init:GitcInit', 'branches = repo.subcmds.branches:Branches', 'prune = repo.subcmds.prune:Prune', 'rebase = repo.subcmds.rebase:Rebase', 'list = repo.subcmds.list:List', 'upload = repo.subcmds.upload:Upload', 'manifest = repo.subcmds.manifest:Manifest', 'abandon = repo.subcmds.abandon:Abandon']
4+
def iter_entry_points(group, name=None):
5+
for ep in eps:
6+
yield pkg_resources.EntryPoint.parse(ep)
7+
pkg_resources.iter_entry_points = iter_entry_points
8+
print("hooked!")

pyinstaller/repo.spec

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# -*- mode: python -*-
2+
3+
block_cipher = None
4+
5+
from pkg_resources import iter_entry_points
6+
import textwrap
7+
all_commands = []
8+
hiddenimports = []
9+
for ep in iter_entry_points("repo.subcmds"):
10+
all_commands.append("{} = {}:{}".format(ep.name, ep.module_name, ep.attrs[0]))
11+
hiddenimports.append(ep.module_name)
12+
13+
with open("hook.py", "w") as f:
14+
f.write(textwrap.dedent("""
15+
import pkg_resources
16+
eps = {}
17+
def iter_entry_points(group, name=None):
18+
for ep in eps:
19+
yield pkg_resources.EntryPoint.parse(ep)
20+
pkg_resources.iter_entry_points = iter_entry_points
21+
print("hooked!")
22+
""".format(all_commands)))
23+
24+
a = Analysis(['repo_entry.py'],
25+
pathex=[],
26+
binaries=[],
27+
datas=[],
28+
hiddenimports=hiddenimports,
29+
hookspath=[],
30+
runtime_hooks=["hook.py"],
31+
excludes=[],
32+
win_no_prefer_redirects=False,
33+
win_private_assemblies=False,
34+
cipher=block_cipher)
35+
pyz = PYZ(a.pure, a.zipped_data,
36+
cipher=block_cipher)
37+
exe = EXE(pyz,
38+
a.scripts,
39+
a.binaries,
40+
a.zipfiles,
41+
a.datas,
42+
name='repo',
43+
debug=False,
44+
strip=False,
45+
upx=True,
46+
runtime_tmpdir=None,
47+
console=True )

pyinstaller/repo_entry.py

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from repo.main import main
2+
3+
main()

repo/subcmds/__init__.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
# limitations under the License.
1515

1616
import os
17-
from pkg_resources import iter_entry_points
17+
import pkg_resources
1818

1919
all_commands = {}
20-
for ep in iter_entry_points("repo.subcmds"):
21-
cmd = ep.load()()
20+
for ep in pkg_resources.iter_entry_points("repo.subcmds"):
21+
cmd = ep.load(require=False)()
2222
cmdname = ep.name
2323
cmd.NAME = cmdname
2424
all_commands[cmdname] = cmd

0 commit comments

Comments
 (0)