About Distributions
Prior to v0.9 of the package server, each new .yak package uploaded represented a new version. Now, for a single version it’s possible to upload multiple “distributions” to target different Rhino versions and platforms. This information is encoded in a “distribution tag” that is appended to the filename of the package, e.g. example-1.0.0-rh7-win.yak .
The distribution tag consists of an “app” identifier and version, and a platform. Currently the only supported apps are rh
and any
– Grasshopper ships with Rhino so it doesn’t need its own identifier. Unless the app is any
, an app version must be included in the form <major>_<minor>
. The minor version is optional and is useful if a plug-in relies on an SDK change made in a service release. The platform can be win
, mac
or any
(i.e. cross-platform).
A few examples…
-
rh7-win
- Rhino 7 for Windows >= 7.0 -
rh6_14-mac
- Rhino 6 for Mac >= 6.14 -
rh6_9-any
- Rhino 6 (both platforms) >= 6.9 -
any-any
- anything goes! (existing behaviour)
When installing packages, the server will check the version of Rhino and determine whether a compatible distribution exists for the requested version.
Creating Distributions
To test this out, please download the latest Rhino 7 WIP and try creating a Grasshopper or Rhino plug-in package. The distribution tag will be inferred from the version of Rhinocommon.dll, Grasshopper.dll or Rhino C++ SDK that you reference in your plug-in project, as well as the platform on which you perform the packaging process. You can always manually rename the .yak package file if you wish – for example, if you know that your package should be cross-platform, change the platform toany
. If you think the minimum Rhino version is wrong, please let me know! This functionality is available in Yak v0.9.1 and above (check with yak version
).
A note on backwards-compatibility
The updated server works seamlessly with existing packages and old versions of Rhino. Pre-existing versions on the server (without distributions) will be treated as any-any
when installing. New package versions that do not include a distribution tag, e.g. those created by previous versions of the CLI, will also be treated as any-any
when publishing.
For more info, see the developer docs for Rhino 7 WIP.