It was possible for multiple Blender's to write to the repositories
JSON at once when checking for updates on startup.
This is now prevented with locking.
- Ensure control characters aren't used in name, tagline, maintain &
website fields.
- Check a tagline is no more than 64 characters long and doesn't
end with punctuation.
Use a named tuple for readability.
- Messages (as before).
- Boolean (completed status).
- Boolean (true when the status-data changed).
Used to detect when a redraw is needed.
CommandBatch.exec_non_blocking was meant to return None when all
commands were complete, this didn't account for commands being
completed in the body of exec_non_blocking(..) which caused
incorrect status to be shown for a short time.
Match manylinux on Linux systems since it's a common prefix for wheels,
so it's important they're installed on Linux.
Currently the GLIBC component of the platform is ignored.
Exclude the extensions own temporary file when building an extension.
Even though this file should be removed, it's possible the build
process was killed for the system was turned off, so best explicitly
exclude the file.
- Support for "wheels" in the `blender_manifest.toml` as a list
of manifest relative file-paths.
- Wheels are extracted into an extension specific `site-packages`
directory after installation.
- Wheels are removed when they are no longer used by any extensions.
- Wheel's from unsupported platforms are skipped,
allowing an extension to include compiled extensions for multiple
platforms.
- When more than one version of a wheel is found,
only the newest version is installed.
This is an imperfect solution because an extension could depend on a
specific version of a wheel.
We will probably need extensions to declare version ranges they
are compatible with so extensions can co-exist without disabling
each other due to distributing different versions of wheels.
- "make test_cli_blender" tests managing extensions vie Blender's
command line `blender -c extension` operations, which also tests
extensions that bundle `.whl` files.
Address #119681.
1. The Install and Enable were "Show Only", but the label was saying
only "Show". We now split Show and Only in two sections.
2. The logic for when enable/installed would be active was flipped.
Designed together with Pablo Vazquez.
* Make "Repositories" more accessible.
* Unify all the "Install" operators.
This commit addresses some feedback regarding being hard to setup
repositories since they were on the corner of the panel, and get easily
dismissable while travelling there with the mouse.
It then touches on the topic of discoverability of this feature, and
re-organize the extensions Operators dropdown menu.
Repositories
-----------
Repositories was accessible via the "preferences" icon. This icon (a cog)
is used already on the File Browser as a toggle to expand the side panel.
Here it had no label, thus no correlation between the button and what it did
(Repositories).
Instead this commit adds a Repository entry to the extensions operators
dropdown menu.
Install
-------
The "Update All" entry wasn't clear enough. It has been renamed to
Install Available Updates and grouped together with the other Install
operators.
--
Designed together with Pablo Vazquez.