forked from qt-creator/qt-creator
Instead of silenty failing and resulting in broken builds/packages. The property is only available since CMake 3.19, so limit the feature to that. Change-Id: I82b06e78540e81a809f7fdfe130648becfc9672e Reviewed-by: Cristian Adam <cristian.adam@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
82 lines
3.7 KiB
CMake
82 lines
3.7 KiB
CMake
# create_python_xy function will precompile the Python/lib/*.py files
|
|
# and create a zip file containing all the pyc files
|
|
function(create_python_xy PythonExe PythonZipFilePath)
|
|
get_filename_component(python_lib_dir "${PythonExe}" DIRECTORY)
|
|
get_filename_component(python_lib_dir "${python_lib_dir}/Lib" ABSOLUTE)
|
|
foreach(dir collections encodings importlib json urllib)
|
|
file(COPY ${python_lib_dir}/${dir}
|
|
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/python-lib
|
|
FILES_MATCHING PATTERN "*.py"
|
|
)
|
|
endforeach()
|
|
file(GLOB python_lib_files "${python_lib_dir}/*.py")
|
|
foreach(not_needed
|
|
aifc.py imghdr.py socket.py
|
|
antigravity.py imp.py socketserver.py
|
|
argparse.py ipaddress.py ssl.py
|
|
asynchat.py locale.py statistics.py
|
|
asyncore.py lzma.py string.py
|
|
bdb.py mailbox.py stringprep.py
|
|
binhex.py mailcap.py sunau.py
|
|
bisect.py mimetypes.py symbol.py
|
|
bz2.py modulefinder.py symtable.py
|
|
calendar.py netrc.py tabnanny.py
|
|
cgi.py nntplib.py tarfile.py
|
|
cgitb.py nturl2path.py telnetlib.py
|
|
chunk.py numbers.py tempfile.py
|
|
cmd.py optparse.py textwrap.py
|
|
code.py pathlib.py this.py
|
|
codeop.py pdb.py timeit.py
|
|
colorsys.py pickle.py trace.py
|
|
compileall.py pickletools.py tracemalloc.py
|
|
configparser.py pipes.py tty.py
|
|
contextvars.py plistlib.py turtle.py
|
|
cProfile.py poplib.py typing.py
|
|
crypt.py pprint.py uu.py
|
|
csv.py profile.py uuid.py
|
|
dataclasses.py pstats.py wave.py
|
|
datetime.py pty.py webbrowser.py
|
|
decimal.py pyclbr.py xdrlib.py
|
|
difflib.py py_compile.py zipapp.py
|
|
doctest.py queue.py zipfile.py
|
|
dummy_threading.py quopri.py zipimport.py
|
|
filecmp.py random.py _compat_pickle.py
|
|
fileinput.py rlcompleter.py _compression.py
|
|
formatter.py runpy.py _dummy_thread.py
|
|
fractions.py sched.py _markupbase.py
|
|
ftplib.py secrets.py _osx_support.py
|
|
getopt.py selectors.py _pydecimal.py
|
|
getpass.py shelve.py _pyio.py
|
|
gettext.py shlex.py _py_abc.py
|
|
gzip.py shutil.py _strptime.py
|
|
hashlib.py smtpd.py _threading_local.py
|
|
hmac.py smtplib.py __future__.py
|
|
imaplib.py sndhdr.py __phello__.foo.py
|
|
)
|
|
list(FIND python_lib_files "${python_lib_dir}/${not_needed}" found_not_needed)
|
|
if (NOT found_not_needed STREQUAL "-1")
|
|
list(REMOVE_AT python_lib_files ${found_not_needed})
|
|
endif()
|
|
endforeach()
|
|
|
|
file(COPY ${python_lib_files} DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/python-lib")
|
|
|
|
set(ENV{PYTHONOPTIMIZE} "2")
|
|
execute_process(
|
|
COMMAND "${PythonExe}" -OO -m compileall "${CMAKE_CURRENT_BINARY_DIR}/python-lib" -b
|
|
${QTC_COMMAND_ERROR_IS_FATAL}
|
|
)
|
|
|
|
file(GLOB_RECURSE python_lib_files "${CMAKE_CURRENT_BINARY_DIR}/python-lib/*.py")
|
|
file(REMOVE ${python_lib_files})
|
|
|
|
file(GLOB_RECURSE python_lib_files LIST_DIRECTORIES ON "${CMAKE_CURRENT_BINARY_DIR}/python-lib/*/__pycache__$")
|
|
file(REMOVE_RECURSE ${python_lib_files})
|
|
|
|
execute_process(
|
|
COMMAND ${CMAKE_COMMAND} -E tar cf "${PythonZipFilePath}" . --format=zip
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/python-lib/"
|
|
${QTC_COMMAND_ERROR_IS_FATAL}
|
|
)
|
|
endfunction()
|