mirror of
https://github.com/xonsh/xonsh.git
synced 2025-03-04 08:24:40 +01:00

### Motivation Closes #5003 ### The case Core utils in Nix are symlinks to one binary file that contains all utils: ```xsh docker run --rm -it nixos/nix bash which echo # /nix/store/k6h0vjh342kqlkq69sxjj8i5y50l6jfr-coreutils-9.3/bin/echo ls -la /nix/store/k6h0vjh342kqlkq69sxjj8i5y50l6jfr-coreutils-9.3/bin/ # b2sum -> coreutils # base32 -> coreutils # ... # All tools are symlinks to one binary file - `coreutils`. ``` When [`default_predictor_readbin`](61bda708c9/xonsh/commands_cache.py (L392)
) read `coreutils` it catches `(b'isatty', b'tcgetattr', b'tcsetattr')` and return `threadable=False` forever. The list of Nix coreutils tools are exactly the same as in [brew coreutils](https://formulae.brew.sh/formula/coreutils). So I can check the real predicts on distinct binaries and see that only 2 tools among 106 are unthreadable and they already covered by `default_threadable_predictors` (If it's wrong please add unthreadable tools to the [default_threadable_predictors](61bda708c9/xonsh/commands_cache.py (L518)
)): ```xsh brew install coreutils ls /opt/homebrew/opt/coreutils/libexec/gnubin/ | wc -l # 106 for t in p`/opt/homebrew/opt/coreutils/libexec/gnubin/.*`: if not (th := __xonsh__.commands_cache.predict_threadable([t.name])): print($(which @(t.name)), th) # /opt/homebrew/opt/coreutils/libexec/gnubin/cat False # /opt/homebrew/opt/coreutils/libexec/gnubin/yes False defaults = __import__('xonsh').commands_cache.default_threadable_predictors().keys() defaults['cat'] # <function xonsh.commands_cache.predict_false> defaults['yes'] # <function xonsh.commands_cache.predict_false> ``` So the rest of we need is to check the symlink and apply default prediction if the tools is the symlink to coreutils. This implements this PR. Test included. ## For community ⬇️ **Please click the 👍 reaction instead of leaving a `+1` or 👍 comment** --------- Co-authored-by: a <1@1.1> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
23 lines
222 B
ReStructuredText
23 lines
222 B
ReStructuredText
**Added:**
|
|
|
|
* Added support of NixOS core tools in ``predict_threadable``.
|
|
|
|
**Changed:**
|
|
|
|
* <news item>
|
|
|
|
**Deprecated:**
|
|
|
|
* <news item>
|
|
|
|
**Removed:**
|
|
|
|
* <news item>
|
|
|
|
**Fixed:**
|
|
|
|
* <news item>
|
|
|
|
**Security:**
|
|
|
|
* <news item>
|