diff options
author | Vincent Ambo <tazjin@google.com> | 2021-08-25T10·53+0300 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2021-08-25T13·49+0300 |
commit | af337010e964671e2f8568a0167a4f8f9eb08216 (patch) | |
tree | f9b17cc7d0ceeefe8a8d2b8bd758131bcdf251ed /tools/nixery/prepare-image | |
parent | 02455bd0fdf42c698524320c8d43b2bd7ef11c3b (diff) |
feat(prepare-image): Ensure /usr/bin/env is always present
This is required by common patterns in shell scripts. There are some caveats around this. Adding logic to filter whether coreutils is included in an image would slow down the Nix evaluation, so the link is currently created even in cases where it doesn't point to anything. Fixes #109
Diffstat (limited to 'tools/nixery/prepare-image')
-rw-r--r-- | tools/nixery/prepare-image/prepare-image.nix | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/nixery/prepare-image/prepare-image.nix b/tools/nixery/prepare-image/prepare-image.nix index 316bfbbf2712..56f9e7a3bf5c 100644 --- a/tools/nixery/prepare-image/prepare-image.nix +++ b/tools/nixery/prepare-image/prepare-image.nix @@ -132,6 +132,18 @@ let contentsEnv = symlinkJoin { name = "bulk-layers"; paths = allContents.contents; + + # Ensure that there is always a /usr/bin/env for shell scripts + # that require it. + # + # Note that images which do not actually contain `coreutils` will + # still have this symlink, but it will be dangling. + # + # TODO(tazjin): Don't link this if coreutils is not included. + postBuild = '' + mkdir -p $out/usr/bin + ln -s ${coreutils}/bin/env $out/usr/bin/env + ''; }; # Image layer that contains the symlink forest created above. This |