Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs
base: a2ba53f4e130
Choose a base ref
...
head repository: NixOS/nixpkgs
compare: a6133b7a3968
Choose a head ref
  • 1 commit
  • 1 file changed
  • 1 contributor

Commits on Jul 25, 2020

  1. writers.makeScriptWriter: fix on Darwin\MacOS (#93757)

    * writers.makeScriptWriter: fix on Darwin\MacOS
    
    On Darwin a script cannot be used as an interpreter in a shebang line, which
    causes scripts produced with makeScriptWriter (and its derivatives) to fail at
    run time if the used interpreter was wrapped with makeWrapper (as in the case
    of python3.withPackages).
    
    This commit fixes the problem by detecting if the interpreter is a script
    and prepending its shebang to the final interpreter line.
    
    For example if used interpreter is;
    ```
    /nix/store/ynwv137n2650qy39swcflxbcygk5jwv1-python3-3.8.3-env/bin/python
    ```
    
    which is a script with following shebang:
    ```
    #! /nix/store/knd85yc7iwli8344ghav3zli8d9gril0-bash-4.4-p23/bin/bash -e
    ```
    
    then the shebang line in the produced script will be
    ```
    #! /nix/store/knd85yc7iwli8344ghav3zli8d9gril0-bash-4.4-p23/bin/bash -e /nix/store/ynwv137n2650qy39swcflxbcygk5jwv1-python3-3.8.3-env/bin/python
    ```
    
    This works on Darwin since there does not seem to be a limit to the length
    of the shabang line and the shebang lines support multiple arguments to
    the interpreters (as opposed to linux where the kernel imposes a strict limit
    on shebang lengh and everything following the interpreter is passed to it
    as a single string).
    
    fixes; #93609
    related to: #65351 #11133 (and probably a bunch of others)
    
    NOTE: scripts produced on platforms other than Darwin will remain unmodified
    by this PR. However it might worth considering extending this fix to BSD systems
    in general. I didn't do it since I have no way of testing it on systems other
    than MacOS and linux.
    
    * writers.makeScriptWriter: fix typo in comment
    
    * writers.makeScriptWriter: fail build if interpreter of interpreter is a script
    adrian-gierakowski committed Jul 25, 2020
    Copy the full SHA
    a6133b7 View commit details
    Browse the repository at this point in the history