xonsh/news/fix_nix.rst

24 lines
222 B
ReStructuredText
Raw Normal View History

Added support of NixOS core tools in ``predict_threadable`` (#5440) ### 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`](https://github.com/xonsh/xonsh/blob/61bda708c992a300eab212f877718cf0050a5e3a/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](https://github.com/xonsh/xonsh/blob/61bda708c992a300eab212f877718cf0050a5e3a/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>
2024-05-24 22:51:25 +02:00
**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>