new library.zip generation script

This commit is contained in:
n1nj4sec 2016-03-19 17:11:17 -04:00
parent 3c51f3c65c
commit d2dad1eff7
2 changed files with 3 additions and 88 deletions

View File

@ -1,85 +0,0 @@
import sys
from distutils.core import setup
import py2exe
import os
from glob import glob
import zipfile
import shutil
"""
This setup is not meant to build pupy stubs, but only to generate an adequate library.zip to embed in the real exe/dll stub
please don't use this if you don't want to recompile from sources
NOTE: I had to manually change pyreadline/console/console.py to console2.py and edit __init__.py to change the import because I had a conflict
"""
print "NOTE: you must install the following packages before proceeding: "
print """
-pywin32
-pycrypto
-pyaml (scramblesuit dependency)
"""
if not (len(sys.argv)==3 and sys.argv[1]=="genzip"):
exit("This setup is not meant to build pupy stubs, but only to generate an adequate library.zip to embed in the real exe/dll stub\nplease don't use this if you don't want to recompile from sources")
if sys.argv[2] == 'x86':
outname = 'x86'
platform = '32'
elif sys.argv[2] == 'x64':
outname = 'x64'
platform = '-amd64'
else:
exit('unsupported platform')
sys.argv=[sys.argv[0],"py2exe"]
# put necessary library patches/includes/whatever in this directory
sys.path.insert(0, os.path.join("sources","resources","library_patches"))
sys.path.insert(0, os.path.join("..","pupy"))
setup(
#data_files = [(".", glob(r'.\RESOURCES_x86\msvcr90.dll'))],
console=['..\\pupy\\pp.py'],
#windows=['reverse_ssl.py'],
#zipfile=None,
options={ "py2exe" : {
"packages":['additional_imports', 'Crypto'],
"compressed" : True,
"bundle_files" : 3, #3 = don't bundle (default) 2 = bundle everything but the Python interpreter 1 = bundle everything
"excludes": ["Tkinter", "pyreadline", "IPython","readline"]
}
}
)
excluded_files = [
'crypt32.dll',
'library.zip',
'mswsock.dll',
'python27.dll',
'pp.exe',
'w9xpopen.exe',
]
def zwalk(path, zf):
for root, dirs, files in os.walk(path):
for file in files:
if file.lower() in excluded_files:
pass
elif file.endswith('.pyd') and "." in file.rsplit(".",1)[0]:
arch_path="/".join(file.rsplit(".",1)[0].split('.'))
zf.write(os.path.join(root,file),arcname=arch_path+".pyd")
else:
zf.write(os.path.join(root, file))
with zipfile.ZipFile('sources/resources/library%s.zip' % outname, 'w', zipfile.ZIP_DEFLATED) as zf:
root = os.getcwd()
os.chdir('build/bdist.win%s/winexe/collect-2.7' % platform)
zwalk('.', zf)
os.chdir('%s/dist' % root)
zwalk('.', zf)
print 'cleaning up'
os.chdir(root)
shutil.rmtree('build')
shutil.rmtree('dist')

View File

@ -20,13 +20,13 @@ if sys.argv[1]=="x86":
elif sys.argv[1]=="x64":
arch="x64"
print "copying installed python version to sources\\resources\\python27_x64.dll"
shutil.copy("C:\\Windows\SysNative\python27.dll", "sources\\resources\\python27_x64.dll")
shutil.copy("C:\\Windows\system32\python27.dll", "sources\\resources\\python27_x64.dll")
else:
exit("usage: python %s (x86|x64)"%sys.argv[0])
all_dependencies=list(set([x.split(".")[0] for x in sys.modules.iterkeys()]))
all_dependencies.extend(["win32file", "win32pipe", "Crypto", "yaml", "_yaml"])
all_dependencies.extend(["win32file", "win32pipe", "Crypto", "yaml", "_yaml", "rpyc"])
all_dependencies=list(set(all_dependencies))
zf = zipfile.ZipFile(os.path.join("sources","resources","library%s.zip"%arch), mode='w', compression=zipfile.ZIP_DEFLATED)
@ -36,7 +36,7 @@ try:
zf.write("C:\\Windows\\SysWOW64\\pywintypes27.dll", "pywintypes27.dll")
else:
print("adding pywintypes.dll")
zf.write("C:\\Windows\\SysNative\\pywintypes27.dll", "pywintypes27.dll")
zf.write("C:\\Windows\\system32\\pywintypes27.dll", "pywintypes27.dll")
for dep in all_dependencies:
found=False
for path in sys.path: