412cefe9bb5028dc302119eb7b246ae44825eebd
The operator refused to pack libraries with absolute paths (wasnt the case in its original implementation16411da41e, but was added in129fb516f4-- for the reason of preventing "bad things happen on unpacking" without an explanation of what these exactly are). It did so by cancelling as soon as **one** library with ab absolute path was found. Now with the introduction of essential assets, we have those absolute path linkages more or less "by default" as soon as e.g. a brush is used, so the operator is more or less unusable now. NOTE: these absolute essential asset library paths seem to be converted to relative on save? Upon reload, these are then gone... (might be another hint for an alternative fix, see below) By "bad things happen on unpacking" I would assume the scenario of folders being created in unwanted locations (e.g. when moving from one OS to another), but the same thing is also true for packing **files** instead of libraries (there, absolute paths are allowed, and unpacking in original locations can equally fail or create folder structures that are "unexpected"). NOTE: for files though we have the choice of unpacking to a relative folder (which wouldnt really be possible since libraries can be nested and we would have to correct paths all over the place). NOTE: the chance of creating "unwanted" folder structures with relative paths might be slimmer, but if you have a lot of "upwards" parent folders, relative can easily "break" as well. Possible ways to resolve this: ### [1] skip libraries identified as essentials assets (still cancel on all other absolute paths) Can check a library path to be contained in `EssentialsAssetLibrary` `essentials_directory_path`. This would be the safest imo since it is a no-behavior change. ### [2] lift the limitation of absolute paths alltogether Like mentioned above, things could break with "relative" almost as easily as with "absolute", there might even be scenarios where "absolute" is wanted. It is a more behavior-changing fix that we might explore more after 4.4 is out. ### [3] skip absolute libraries (but continue with non-absolute libraries) This does change behavior as well (it does not cancel as soon as **one** library with ab absolute path was found anymore, but the worst case scenario is that you end up with an "incomplete" file if you really mixed absolute and realtive lib linking). This PR implements [1] for now, [2] or [3] can follow for 4.5. Fixes #134665 Pull Request: https://projects.blender.org/blender/blender/pulls/134839
…
Blender
Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.
Project Pages
Development
License
Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license.
See blender.org/about/license for details.
Description
Languages
C++
78%
Python
14.9%
C
2.9%
GLSL
1.9%
CMake
1.2%
Other
0.9%
