summary refs log tree commit diff
path: root/doc
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2022-02-19 18:02:01 +0000
committerGitHub <noreply@github.com>2022-02-19 18:02:01 +0000
commit4f8c8f949751d7400c189a0e4c8201cb04862f5b (patch)
treef5a936d48b0218978f304eb9ea65ed23c827d1b7 /doc
parente7491cffb40a16eb61a51f5e813756d92d80279b (diff)
parent18ebfef5adddac7d59520999aa8bc1c73a5121eb (diff)
downloadnixpkgs-4f8c8f949751d7400c189a0e4c8201cb04862f5b.tar
nixpkgs-4f8c8f949751d7400c189a0e4c8201cb04862f5b.tar.gz
nixpkgs-4f8c8f949751d7400c189a0e4c8201cb04862f5b.tar.bz2
nixpkgs-4f8c8f949751d7400c189a0e4c8201cb04862f5b.tar.lz
nixpkgs-4f8c8f949751d7400c189a0e4c8201cb04862f5b.tar.xz
nixpkgs-4f8c8f949751d7400c189a0e4c8201cb04862f5b.tar.zst
nixpkgs-4f8c8f949751d7400c189a0e4c8201cb04862f5b.zip
Merge staging-next into staging
Diffstat (limited to 'doc')
-rw-r--r--doc/stdenv/stdenv.chapter.md15
1 files changed, 14 insertions, 1 deletions
diff --git a/doc/stdenv/stdenv.chapter.md b/doc/stdenv/stdenv.chapter.md
index 51330f1ec9d..1d4ca99e3cb 100644
--- a/doc/stdenv/stdenv.chapter.md
+++ b/doc/stdenv/stdenv.chapter.md
@@ -797,7 +797,7 @@ Hook executed at the start of the distribution phase.
 
 Hook executed at the end of the distribution phase.
 
-## Shell functions {#ssec-stdenv-functions}
+## Shell functions and utilities {#ssec-stdenv-functions}
 
 The standard environment provides a number of useful functions.
 
@@ -821,6 +821,19 @@ There’s many more kinds of arguments, they are documented in `nixpkgs/pkgs/bui
 
 Using the `makeBinaryWrapper` implementation is usually preferred, as it creates a tiny _compiled_ wrapper executable, that can be used as a shebang interpreter. This is needed mostly on Darwin, where shebangs cannot point to scripts, [due to a limitation with the `execve`-syscall](https://stackoverflow.com/questions/67100831/macos-shebang-with-absolute-path-not-working). Compiled wrappers generated by `makeBinaryWrapper` can be inspected with `less <path-to-wrapper>` - by scrolling past the binary data you should be able to see the shell command that generated the executable and there see the environment variables that were injected into the wrapper.
 
+### `remove-references-to -t` \<storepath\> [ `-t` \<storepath\> ... ] \<file\> ... {#fun-remove-references-to}
+
+Removes the references of the specified files to the specified store files. This is done without changing the size of the file by replacing the hash by `eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`, and should work on compiled executables. This is meant to be used to remove the dependency of the output on inputs that are known to be unnecessary at runtime. Of course, reckless usage will break the patched programs.
+To use this, add `removeReferencesTo` to `nativeBuildInputs`.
+
+As `remove-references-to` is an actual executable and not a shell function, it can be used with `find`.
+Example removing all references to the compiler in the output:
+```nix
+postInstall = ''
+  find "$out" -type f -exec remove-references-to -t ${stdenv.cc} '{}' +
+'';
+```
+
 ### `substitute` \<infile\> \<outfile\> \<subs\> {#fun-substitute}
 
 Performs string substitution on the contents of \<infile\>, writing the result to \<outfile\>. The substitutions in \<subs\> are of the following form: