Merge pull request #255463 from emilylange/stdenv/patch-shebangs-trailing-newline
patch-shebangs: fix crash with shebang without trailing newline
This commit is contained in:
commit
b728d76d0e
@ -72,7 +72,10 @@ patchShebangs() {
|
||||
while IFS= read -r -d $'\0' f; do
|
||||
isScript "$f" || continue
|
||||
|
||||
read -r oldInterpreterLine < "$f"
|
||||
# read exits unclean if the shebang does not end with a newline, but still assigns the variable.
|
||||
# So if read returns errno != 0, we check if the assigned variable is non-empty and continue.
|
||||
read -r oldInterpreterLine < "$f" || [ "$oldInterpreterLine" ]
|
||||
|
||||
read -r oldPath arg0 args <<< "${oldInterpreterLine:2}"
|
||||
|
||||
if [[ -z "${pathName:-}" ]]; then
|
||||
|
@ -72,11 +72,26 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
without-trailing-newline = stdenv.mkDerivation {
|
||||
name = "without-trailing-newline";
|
||||
strictDeps = false;
|
||||
dontUnpack = true;
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
printf "#!/bin/bash" > $out/bin/test
|
||||
chmod +x $out/bin/test
|
||||
dontPatchShebangs=
|
||||
'';
|
||||
passthru = {
|
||||
assertion = "grep '^#!${stdenv.shell}' $out/bin/test > /dev/null";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "test-patch-shebangs";
|
||||
passthru = { inherit (tests) bad-shebang ignores-nix-store updates-nix-store split-string; };
|
||||
passthru = { inherit (tests) bad-shebang ignores-nix-store updates-nix-store split-string without-trailing-newline; };
|
||||
buildCommand = ''
|
||||
validate() {
|
||||
local name=$1
|
||||
|
Loading…
Reference in New Issue
Block a user