littler gives a wrapped called `r` (or `lr` for non-case-preserving
systems like Darwin) which works as shebang or pipe target.
The build was completely broken before (missing deps).
Symlink executables and manpage into standard locations so that this
packages also works in `environment.systemPackages`.
At the same time:
- build plugins against python2 as that is what octoprint uses
- do not run checks are there aren't any
- use buildPythonPackage as these are not applications
Prior to this commit the application launchers of Atom and Atom Beta executed `/usr/bin/${pname}` instead of what it is meant to `$out/bin/${pname}`. This is because upstream changed the `Exec=` line from `Exec=/usr/share/${pname}/${pname}` to `Exec=/usr/bin/${pname}` and the `substituteInPlace` line that was in the default.nix file was not appropriately adjusted.
Docker images used to be, essentially, a linked list of layers. Each
layer would have a tarball and a json document pointing to its parent,
and the image pointed to the top layer:
imageA ----> layerA
|
v
layerB
|
v
layerC
The current image spec changed this format to where the Image defined
the order and set of layers:
imageA ---> layerA
|--> layerB
`--> layerC
For backwards compatibility, docker produces images which follow both
specs: layers point to parents, and images also point to the entire
list:
imageA ---> layerA
| |
| v
|--> layerB
| |
| v
`--> layerC
This is nice for tooling which supported the older version and never
updated to support the newer format.
Our `buildImage` code only supported the old version, so in order for
`buildImage` to properly generate an image based on another image
with `fromImage`, the parent image's layers must fully support the old
mechanism.
This is not a problem in general, but is a problem with
`buildLayeredImage`.
`buildLayeredImage` creates images with newer image spec, because
individual store paths don't have a guaranteed parent layer. Including
a specific parent ID in the layer's json makes the output less likely
to cache hit when published or pulled.
This means until now, `buildLayeredImage` could not be the input to
`buildImage`.
The changes in this PR change `buildImage` to only use the layer's
manifest when locating parent IDs. This does break buildImage on
extremely old Docker images, though I do wonder how many of these
exist.
This work has been sponsored by Target.