This causes collisions when NixOS is configured like
``` nix
{ pkgs, ... }:
{
services.udev.packages = [ pkgs.platformio ];
}
```
and would also cause a regression having to add the subirectory to the udev packages path:
``` nix
{ pkgs, ... }:
{
services.udev.packages = [ (pkgs.platformio-core.udev + "/99-platformio-udev.rules") ];
}
```
Currently udev rules symlinks against platformio sources, pulling in the platformio source tree into the runtime closure.
Previous to platformio-core being exposed separately from platformio this also meant that you had no ergonomic way to avoid platformio in the system closure, even though you only wanted the udev rules.
We can avoid this by making platformio-core multi output, making it trivial to depend only on the udev rules.
PlatformIO is a pure python package that is in turn a package
manager. In a pure NixOS environment, this means that any downloaded
binary packages will not run. To make PlatformIO usable, there's a
chrootenv wrapper. However, in a mixed environment like other linux or
darwin, the pure python version will work, and in the case of darwin
only the pure version will work, since the chrootenv wrapper is not
supported.
To handle the above use cases we have:
* platformio -- unwrapped on darwin, wrapped on linux. Should always
provide a functional platformio.
* platformio-core -- always unwrapped (like "bintools-unwrapped") for
when the wrapper is explicitly not required. For
example, on other linux where the chrootenv is
not supported.
checkInputs used to be added to nativeBuildInputs. Now we have
nativeCheckInputs to do that instead. Doing this treewide change allows
to keep hashes identical to before the introduction of
nativeCheckInputs.
Next to bumping the patch version, two changed dependencies were pinned.
Furthermore, the SPDX patch was altered to correctly close the JSON file
as non-closed files are now also covered by the tests.