BlendLuxCore: Development and Release Workflow - 2nd proposal #1028
Replies: 4 comments 3 replies
-
Given that the v2.10-system originated from my personal way of working (at least most of what is being discussed here), I can fully agree that it can be updated to account for others preferences, programming commons, and importantly official Blender guidelines. ResponsesFirst, a few responses to your points. (Consider everything not commented on as fully accepted.)
An IdeaSpontaneous idea while writing the above: How about creating a separate BLC-development extension for Blender that holds local configuration?
Another note... about previous work in the |
Beta Was this translation helpful? Give feedback.
-
Hello,
I think this is a narrow case and, for such a special situation, we could fall back to scripts, as suggested in your third point - unless we consider the option of a 2nd extension. At any rate, to me, the main case remains that we are working on new features that do not in themselves require reinstalling BLC.
Yes, you're right, thank you for the reminder! It means we should have two variants under
Yes, sure, that's what I called "testing/advanced user"! Indeed, copying a file in a folder is quite accessible to average user, but selecting a file via a GUI file browser may be easier yet.
Yes, that's a good point! I had it in my mind as well... The pros & cons, in my opinion: Pros:
Cons:
Considering all of that, I think that the pros outweigh the cons and we should opt for a second extension.
Got it. Could you list the paths you've got in mind (in a separate thread)? |
Beta Was this translation helpful? Give feedback.
-
Only few comments on the discussion:
About the procedure/project management kind of side to discussions like this: |
Beta Was this translation helpful? Give feedback.
-
Wheel installation - process modificationWheel installation is the process that takes a downloaded wheel and install it (unpack it) in the directory structure provided for this purpose by Blender. It takes place after the right wheel has been obtained (from PyPI, local path, offline directory etc.). This process is entirely taken in charge by Blender, once the Therefore, our present process consists in updating
To avoid that, I am going to modify the above process to not rely on |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Problem Statement
Developing BlendLuxCore implies to be able to easily run and test in Blender a version of BlendLuxCore currently under development, that encompassing the Python code and the C++ extension (the wheel). This is a key feature.
A first working solution has been set in v2.10 (https://github.com/orgs/LuxCoreRender/discussions/984).
However, in my opinion, this solution presents several areas for improvements:
Proposed improvements
There are actually 2 topics to address:
Python module
I merely propose to stick to Blender recommendations: https://developer.blender.org/docs/handbook/extensions/addon_dev_setup/#setting-up-project.
In short, we would ask developer to:
That's all! From that point, reloading would just require to use
Blender -> System -> Reload scripts
menu.It would require BLC to support reloading, as described here, thus some small adaptations would be needed.
Wheel
I propose to manage the configuration of wheel import from inside Blender.
The proposition consists in creating a dedicated submenu in BlendLuxCore settings (named "Advanced", for instance), where we could:
Very important: this submenu should be available even if BlendLuxCore was not able to import pyluxcore.
The current cache mechanics could be kept.
Per use-case analysis
Standard case: no change from today. pyluxcore version is hardcoded in BlendLuxCore, BLC automatically downloads the wheel from PyPi, without user interaction. Cache rules are active so that no redundant download/install occurs.
Debug: in GUI, developer selects
Local wheel
and enter the path of the wheel to use. The wheel is typically located in LuxCore development repo (LuxCore/out/install/Debug/wheel/
), but can be anywhere else as well. Then, developer can trigger installation via anInstall
button. Optionally, developer can ask for the install to occur each time BLC is reloaded by Blender, via a checkbox; this deactivates cache rules.Offline: the same as Debug. The wheel has typically been downloaded beforehand by the user in one of his/her folder. The user asks for install (
Install
button). Theoretically, the user should not ask for the wheel to be reinstalled each time BLC is reloaded, but the option remains open.Testing (advanced user). The same as above. The advanced user downloads a testing wheel from development. In the future, we could also provide a
nightly build
choice to download a nightly built wheel (but at the moment, we have no nightly build wheel ;-))User is no more required to tamper with environment variable, local transfer directory (pyluxcore_custom) etc.
Beta Was this translation helpful? Give feedback.
All reactions