mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 17:12:13 -06:00
83 lines
3.2 KiB
Plaintext
83 lines
3.2 KiB
Plaintext
# recipe for building an exe with nuitka (extreme jank edition)
|
|
#
|
|
# NOTE: win7 and win10 builds both work on win10 but
|
|
# on win7 they immediately c0000005 in kernelbase.dll
|
|
#
|
|
# first install python-3.6.8-amd64.exe
|
|
# [x] add to path
|
|
#
|
|
# copypaste the rest of this file into cmd
|
|
|
|
rem from pypi
|
|
cd \users\ed\downloads
|
|
python -m pip install --user Nuitka-0.6.14.7.tar.gz
|
|
|
|
rem https://github.com/brechtsanders/winlibs_mingw/releases/download/10.2.0-11.0.0-8.0.0-r5/winlibs-x86_64-posix-seh-gcc-10.2.0-llvm-11.0.0-mingw-w64-8.0.0-r5.zip
|
|
mkdir C:\Users\ed\AppData\Local\Nuitka\
|
|
mkdir C:\Users\ed\AppData\Local\Nuitka\Nuitka\
|
|
mkdir C:\Users\ed\AppData\Local\Nuitka\Nuitka\gcc\
|
|
mkdir C:\Users\ed\AppData\Local\Nuitka\Nuitka\gcc\x86_64\
|
|
mkdir C:\Users\ed\AppData\Local\Nuitka\Nuitka\gcc\x86_64\10.2.0-11.0.0-8.0.0-r5\
|
|
copy c:\users\ed\downloads\winlibs-x86_64-posix-seh-gcc-10.2.0-llvm-11.0.0-mingw-w64-8.0.0-r5.zip C:\Users\ed\AppData\Local\Nuitka\Nuitka\gcc\x86_64\10.2.0-11.0.0-8.0.0-r5\winlibs-x86_64-posix-seh-gcc-10.2.0-llvm-11.0.0-mingw-w64-8.0.0-r5.zip
|
|
|
|
rem https://github.com/ccache/ccache/releases/download/v3.7.12/ccache-3.7.12-windows-32.zip
|
|
mkdir C:\Users\ed\AppData\Local\Nuitka\Nuitka\ccache\
|
|
mkdir C:\Users\ed\AppData\Local\Nuitka\Nuitka\ccache\v3.7.12\
|
|
copy c:\users\ed\downloads\ccache-3.7.12-windows-32.zip C:\Users\ed\AppData\Local\Nuitka\Nuitka\ccache\v3.7.12\ccache-3.7.12-windows-32.zip
|
|
|
|
rem https://dependencywalker.com/depends22_x64.zip
|
|
mkdir C:\Users\ed\AppData\Local\Nuitka\Nuitka\depends\
|
|
mkdir C:\Users\ed\AppData\Local\Nuitka\Nuitka\depends\x86_64\
|
|
copy c:\users\ed\downloads\depends22_x64.zip C:\Users\ed\AppData\Local\Nuitka\Nuitka\depends\x86_64\depends22_x64.zip
|
|
|
|
cd \
|
|
rd /s /q %appdata%\..\local\temp\pe-copyparty
|
|
cd \users\ed\downloads
|
|
python copyparty-sfx.py -h
|
|
cd %appdata%\..\local\temp\pe-copyparty\copyparty
|
|
|
|
python
|
|
import os, re
|
|
os.rename('../dep-j2/jinja2', '../jinja2')
|
|
os.rename('../dep-j2/markupsafe', '../markupsafe')
|
|
|
|
print("# nuitka dies if .__init__.stuff is imported")
|
|
with open('__init__.py','r',encoding='utf-8') as f:
|
|
t1 = f.read()
|
|
|
|
with open('util.py','r',encoding='utf-8') as f:
|
|
t2 = f.read().split('\n')[3:]
|
|
|
|
t2 = [x for x in t2 if 'from .__init__' not in x]
|
|
t = t1 + '\n'.join(t2)
|
|
with open('__init__.py','w',encoding='utf-8') as f:
|
|
f.write('\n')
|
|
|
|
with open('util.py','w',encoding='utf-8') as f:
|
|
f.write(t)
|
|
|
|
print("# local-imports fail, prefix module names")
|
|
ptn = re.compile(r'^( *from )(\.[^ ]+ import .*)')
|
|
for d, _, fs in os.walk('.'):
|
|
for f in fs:
|
|
fp = os.path.join(d, f)
|
|
if not fp.endswith('.py'):
|
|
continue
|
|
t = ''
|
|
with open(fp,'r',encoding='utf-8') as f:
|
|
for ln in [x.rstrip('\r\n') for x in f]:
|
|
m = ptn.match(ln)
|
|
if not m:
|
|
t += ln + '\n'
|
|
continue
|
|
p1, p2 = m.groups()
|
|
t += "{}copyparty{}\n".format(p1, p2).replace("__init__", "util")
|
|
with open(fp,'w',encoding='utf-8') as f:
|
|
f.write(t)
|
|
|
|
exit()
|
|
|
|
cd ..
|
|
|
|
rd /s /q bout & python -m nuitka --standalone --onefile --windows-onefile-tempdir --python-flag=no_site --assume-yes-for-downloads --include-data-dir=copyparty\web=copyparty\web --include-data-dir=copyparty\res=copyparty\res --run --output-dir=bout --mingw64 --include-package=markupsafe --include-package=jinja2 copyparty
|