-
Notifications
You must be signed in to change notification settings - Fork 509
ENH: Support "compiling" source files exclusively to .pyc #1192
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
6b0f3fa to
cbf0111
Compare
|
More work is still need as By configuring CTK with We will need to address this before moving forward. I will follow-up with some suggestions. |
|
I revisited the approach, suggested commit message for |
|
@MujassimJamal Could you test on your side ? 🙏 @jamesobutler @lassoan I revisited the original approach to instead accept the option To illustrate here is a screenshot of the generated1 script:
called by the The code highlighted in red is included only if Footnotes
|
|
Thanks, @jcfr, for proposing an alternative approach. Indeed, the previous approach of skipping the copy target created issues for me during scratch builds, as you mentioned that compiled files must be copied to the destination first. Since then, I've been using an unofficial hard-coded temporary solution, which involves completely removing 'py' files once they are compiled. To achieve this, I directly used the following code snippet in the file if 'qt-scripted-modules' in fullname:
print('Removing', fullname, '...')
os.remove(fullname)I'm okay with the alternative approach you proposed, as it allows explicit control over the behavior. I'll test it from my side and provide an update here. 🚀 |
Were you able to test in the context of your project ? |
|
@jcfr Thank you for your patience. Yes, I've recently tested it and encountered numerous errors in the Python console. The majority of these errors were related to:
When I open the application after a build, only a blank main window is visible; all the widgets are gone (e.g slice views, 3D view, module panel, etc.). Perhaps this occurred because it removes ".py" files not only from the lib/{AppName}/qt-scripted-modules directory but also from other directories (e.g. bin etc.) within the Slicer-build. |
|
@jcfr, I want to know if you are planning to proceed with this PR? |
|
Based on your tests1, Slicer would need to also be updated to make this feature useful. Would you be able to open a pull request against Slicer do address those? Footnotes |
|
Sure, I will open a pull request with necessary changes to the Slicer. |
|
We will use |
Introduce the option CTK_COMPILE_PYTHON_SCRIPT_SKIP_SCRIPT_COPY to support disabling the copy of `*.py` script into the build directory. Update CMake function `ctkFunctionAddCompilePythonScriptTargets` to accept the `SKIP_SCRIPT_COPY` option. Update CMake macro `ctkMacroCompilePythonScript` to call `ctkFunctionAddCompilePythonScriptTargets` passing SKIP_SCRIPT_COPY based on the value of CTK_COMPILE_PYTHON_SCRIPT_SKIP_SCRIPT_COPY Address warning when using CMake >= 3.13, setting CMP0077 to NEW. See https://cmake.org/cmake/help/latest/policy/CMP0077.html Co-authored-by: Jean-Christophe Fillion-Robin <[email protected]>
Introduce the option CTK_COMPILE_PYTHON_SCRIPT_KEEP_ONLY_PYC to support remove `*.py` scripts once the corresponding `.pyc` file has been generated in the destination directory. Update `_ctk_add_compile_python_directories_target` to accept `keep_only_pyc` argument. Update CMake function `ctkFunctionAddCompilePythonScriptTargets` to accept the `KEEP_ONLY_PYC` option and call `_ctk_add_compile_python_directories_target` accordingly. Update CMake macro `ctkMacroCompilePythonScript` to call `ctkFunctionAddCompilePythonScriptTargets` passing KEEP_ONLY_PYC based on the value of `CTK_COMPILE_PYTHON_SCRIPT_KEEP_ONLY_PYC`. Address warning when using CMake >= 3.13, setting CMP0077 to NEW. See https://cmake.org/cmake/help/latest/policy/CMP0077.html Co-authored-by: Jean-Christophe Fillion-Robin <[email protected]>
d81f764 to
aefc37e
Compare

To support “compiling” source file exclusively to .pyc, the CMake function
ctkFunctionAddCompilePythonScriptTargetshas been improved to accept a new parameter optionSKIP_SCRIPT_COPY. This new option controls the definition of the targetCopySlicerPythonScriptFiles.Introduce the option CTK_COMPILE_PYTHON_SCRIPT_KEEP_ONLY_PYC to support removing `*.py` scripts once the corresponding `.pyc` file has been generated in the destination directory.
Update
_ctk_add_compile_python_directories_targetto acceptkeep_only_pycargument.Update CMake function
ctkFunctionAddCompilePythonScriptTargetsto accept theKEEP_ONLY_PYCoption and call_ctk_add_compile_python_directories_targetaccordingly.Update CMake macro
ctkMacroCompilePythonScriptto callctkFunctionAddCompilePythonScriptTargetspassing KEEP_ONLY_PYC based on the value ofCTK_COMPILE_PYTHON_SCRIPT_KEEP_ONLY_PYC.Address warning when using CMake >= 3.13, setting CMP0077 to NEW.
See https://cmake.org/cmake/help/latest/policy/CMP0077.html
Related pull requests:
Related discussions: