def main(args): pyver = python_major_minor_version() b = build_dir() if ismacos: b = os.path.join( b, 'python/Python.framework/Versions/{}.{}'.format(*pyver)) elif iswindows: b = os.path.join(b, 'private', 'python') cmd = [ PYTHON, 'configure.py', '--no-pyi', '--sip-module=PyQt5.sip', '--bindir=%s/bin' % build_dir() ] sp = 'Lib' if iswindows else 'lib/python{}.{}'.format(*pyver) inc = 'include' if iswindows else 'include/python{}.{}'.format(*pyver) cmd += [ '--destdir=%s/%s/site-packages' % (b, sp), '--sipdir=%s/share/sip' % b, '--incdir=%s/%s' % (b, inc) ] run(*cmd, library_path=True) if iswindows: run(f'"{NMAKE}"'), run(f'"{NMAKE}" install') else: run('make ' + MAKEOPTS) run('make install', library_path=True) q, r = build_dir(), PREFIX if iswindows: q = q.replace(os.sep, os.sep + os.sep) r = r.replace(os.sep, os.sep + os.sep) p = 'Lib' if iswindows else 'lib/python{}.{}'.format(*pyver) replace_in_file(os.path.join(b, p, 'site-packages/sipconfig.py'), q, r)
def post_install_check(): if iswindows: # Ensure the system python27.dll is not being loaded run(PYTHON, '-c', "import sys; 'MSC v.1916' not in sys.version and sys.exit(1)") mods = '_ssl zlib bz2 ctypes sqlite3'.split() if python_major_minor_version()[0] > 2: mods.append('lzma') if not iswindows: mods.extend('readline _curses'.split()) run(PYTHON, '-c', 'import ' + ','.join(mods), library_path=True)
def __init__(self, build_dir): self.python_base = os.path.join(PREFIX, 'private', 'python') self.portable_uncompressed_size = 0 self.src_root = CALIBRE_DIR self.base = j(build_dir, 'winfrozen') self.app_base = j(self.base, 'app') self.rc_template = j(d(a(__file__)), 'template.rc') self.py_ver = '.'.join(map(str, python_major_minor_version())) self.lib_dir = j(self.app_base, 'Lib') self.pylib = j(self.app_base, 'pylib.zip') self.dll_dir = j(self.app_base, 'bin') self.portable_base = j(d(self.base), 'Calibre Portable') self.obj_dir = j(build_dir, 'launcher') self.installer_dir = j(build_dir, 'wix') self.dist = j(SW, 'dist')
def run_configure(for_webengine=False): pyver = python_major_minor_version() b = build_dir() if ismacos: b = os.path.join( b, 'python/Python.framework/Versions/{}.{}'.format(*pyver)) elif iswindows: b = os.path.join(b, 'private', 'python') lp = os.path.join(PREFIX, 'qt', 'lib') sip, qmake = 'sip', 'qmake' if iswindows: sip += '.exe' qmake += '.exe' sp = 'Lib' if iswindows else 'lib/python{}.{}'.format(*pyver) sip_dir = f'{b}/share/sip/PyQt5' dest_dir = f'{b}/{sp}/site-packages' if for_webengine: pyqt_options = [] os.makedirs(sip_dir) dest_dir += '/PyQt5' else: pyqt_options = [ '--confirm-license', '--assume-shared', f'--bindir={b}/bin', '--no-designer-plugin', '--no-qml-plugin', ] cmd = [PYTHON, 'configure.py'] + pyqt_options + [ '--sip=%s/bin/%s' % (PREFIX, sip), '--qmake=%s/qt/bin/%s' % (PREFIX, qmake), f'--destdir={dest_dir}', '--verbose', f'--sipdir={sip_dir}', '--no-stubs', '-c', '-j5', '--no-docstrings', ] if iswindows: cmd.append('--spec=win32-msvc') cmd.append('--sip-incdir=%s/private/python/include' % PREFIX) if for_webengine: cmd.append( f'--pyqt-sipdir={PREFIX}/private/python/share/sip/PyQt5') run(*cmd, library_path=lp) return dest_dir
import shutil import stat import subprocess import tarfile import time from bypy.constants import (OUTPUT_DIR, PREFIX, is64bit, python_major_minor_version) from bypy.freeze import (extract_extension_modules, freeze_python, path_to_freeze_dir) from bypy.utils import get_dll_path, mkdtemp, py_compile, walk j = os.path.join arch = 'x86_64' if is64bit else 'i686' self_dir = os.path.dirname(os.path.abspath(__file__)) py_ver = '.'.join(map(str, python_major_minor_version())) iv = globals()['init_env'] kitty_constants = iv['kitty_constants'] def binary_includes(): return tuple( map(get_dll_path, ( 'expat', 'sqlite3', 'ffi', 'z', 'lzma', 'png16', 'lcms2', 'crypt',
from bypy.constants import ( LIBDIR, PREFIX, PYTHON, SRC as CALIBRE_DIR, SW, build_dir, is64bit, python_major_minor_version, worker_env ) from bypy.pkgs.qt import PYQT_MODULES, QT_DLLS, QT_PLUGINS from bypy.utils import ( create_job, get_dll_path, mkdtemp, parallel_build, py_compile, run, run_shell, walk ) j = os.path.join self_dir = os.path.dirname(os.path.abspath(__file__)) arch = 'x86_64' if is64bit else 'i686' py_ver = '.'.join(map(str, python_major_minor_version())) QT_PREFIX = os.path.join(PREFIX, 'qt') calibre_constants = globals()['init_env']['calibre_constants'] qt_get_dll_path = partial(get_dll_path, loc=os.path.join(QT_PREFIX, 'lib')) def binary_includes(): return [ j(PREFIX, 'bin', x) for x in ('pdftohtml', 'pdfinfo', 'pdftoppm', 'optipng', 'JxrDecApp')] + [ j(PREFIX, 'private', 'mozjpeg', 'bin', x) for x in ('jpegtran', 'cjpeg')] + [ ] + list(map( get_dll_path, ('usb-1.0 mtp expat sqlite3 ffi z poppler dbus-1 iconv xml2 xslt jpeg png16' ' webp exslt ncursesw readline chm icudata icui18n icuuc icuio gcrypt gpg-error' ' gobject-2.0 glib-2.0 gthread-2.0 gmodule-2.0 gio-2.0 dbus-glib-1').split()