diff --git a/docs/nuitka.txt b/docs/nuitka.txt new file mode 100644 index 00000000..12478341 --- /dev/null +++ b/docs/nuitka.txt @@ -0,0 +1,82 @@ +# recipe for building an exe with nuitka (extreme jank edition) +# +# NOTE: on win7 the exe immediately hits a c0000005 in kernelbase.dll +# but win10 builds work on win10 +# +# 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