From afc31073a3bb5d61825c51cadc67f75ab4d65ed0 Mon Sep 17 00:00:00 2001 From: SamLukeYes Date: Tue, 18 Jun 2024 22:49:13 +0800 Subject: [PATCH] xonsh: 0.15.1 -> 0.17.0 Co-authored-by: Anderson Torres Upstream changes: https://github.com/xonsh/xonsh/compare/0.15.1...0.17.0 --- nixos/modules/programs/xonsh.nix | 13 ++- pkgs/by-name/xo/xonsh/package.nix | 132 ++++++++++++++++++++++++---- pkgs/by-name/xo/xonsh/unwrapped.nix | 108 ----------------------- pkgs/by-name/xo/xonsh/wrapper.nix | 25 ++++++ pkgs/top-level/aliases.nix | 2 +- pkgs/top-level/python-packages.nix | 4 + 6 files changed, 148 insertions(+), 136 deletions(-) delete mode 100644 pkgs/by-name/xo/xonsh/unwrapped.nix create mode 100644 pkgs/by-name/xo/xonsh/wrapper.nix diff --git a/nixos/modules/programs/xonsh.nix b/nixos/modules/programs/xonsh.nix index eed5152ba69a..6bf18d4ebd89 100644 --- a/nixos/modules/programs/xonsh.nix +++ b/nixos/modules/programs/xonsh.nix @@ -23,7 +23,7 @@ in }; package = lib.mkPackageOption pkgs "xonsh" { - example = "xonsh.override { extraPackages = ps: [ ps.requests ]; }"; + example = "xonsh.wrapper.override { extraPackages = ps: [ ps.requests ]; }"; }; config = lib.mkOption { @@ -61,17 +61,14 @@ in aliases['ls'] = _ls_alias del _ls_alias - ${cfg.config} ''; environment.systemPackages = [ cfg.package ]; - environment.shells = - [ "/run/current-system/sw/bin/xonsh" - "${cfg.package}/bin/xonsh" - ]; - + environment.shells = [ + "/run/current-system/sw/bin/xonsh" + "${lib.getExe cfg.package}" + ]; }; - } diff --git a/pkgs/by-name/xo/xonsh/package.nix b/pkgs/by-name/xo/xonsh/package.nix index de199ff4bc05..45c14cb4f2ef 100644 --- a/pkgs/by-name/xo/xonsh/package.nix +++ b/pkgs/by-name/xo/xonsh/package.nix @@ -1,24 +1,118 @@ -{ lib -, callPackage -, extraPackages ? (ps: [ ]) -, runCommand +{ + lib, + callPackage, + coreutils, + fetchFromGitHub, + git, + gitUpdater, + glibcLocales, + python3Packages, }: let - xonsh-unwrapped = callPackage ./unwrapped.nix { }; - inherit (xonsh-unwrapped.passthru) python; - pythonEnv = python.withPackages (ps: [ - (ps.toPythonModule xonsh-unwrapped) - ] ++ extraPackages ps); + argset = { + pname = "xonsh"; + version = "0.17.0"; + pyproject = true; + + # PyPI package ships incomplete tests + src = fetchFromGitHub { + owner = "xonsh"; + repo = "xonsh"; + rev = "refs/tags/${argset.version}"; + hash = "sha256-9sRY9aetWWXzCFfgdHCBCia48THIJcMxsYMnFR6Xa8A="; + }; + + nativeBuildInputs = with python3Packages; [ + setuptools + wheel + ]; + + propagatedBuildInputs = (with python3Packages; [ + ply + prompt-toolkit + pygments + ]); + + nativeCheckInputs = [ + git + glibcLocales + ] ++ (with python3Packages; [ + pip + pyte + pytest-mock + pytest-subprocess + pytestCheckHook + requests + ]); + + disabledTests = [ + # fails on sandbox + "test_colorize_file" + "test_loading_correctly" + "test_no_command_path_completion" + "test_bsd_man_page_completions" + "test_xonsh_activator" + # fails on non-interactive shells + "test_capture_always" + "test_casting" + "test_command_pipeline_capture" + "test_dirty_working_directory" + "test_man_completion" + "test_vc_get_branch" + "test_bash_and_is_alias_is_only_functional_alias" + "test_spec_modifier_alias_output_format" + # flaky tests + "test_script" + "test_alias_stability" + "test_alias_stability_exception" + "test_complete_import" + "test_subproc_output_format" + ]; + + disabledTestPaths = [ + # fails on sandbox + "tests/completers/test_command_completers.py" + "tests/test_ptk_highlight.py" + "tests/test_ptk_shell.py" + # fails on non-interactive shells + "tests/prompt/test_gitstatus.py" + "tests/completers/test_bash_completer.py" + ]; + + env.LC_ALL = "en_US.UTF-8"; + + postPatch = '' + sed -ie 's|/bin/ls|${lib.getExe' coreutils "ls"}|' tests/test_execer.py + sed -ie 's|SHELL=xonsh|SHELL=$out/bin/xonsh|' tests/test_integrations.py + + for script in tests/test_integrations.py scripts/xon.sh $(find -name "*.xsh"); do + sed -ie 's|/usr/bin/env|${lib.getExe' coreutils "env"}|' $script + done + patchShebangs . + ''; + + preCheck = '' + export HOME=$TMPDIR + export PATH=$out/bin:$PATH + ''; + + passthru = { + shellPath = "/bin/xonsh"; + python = python3Packages.python; # To the wrapper + wrapper = callPackage ./wrapper.nix { }; + updateScript = gitUpdater { }; + }; + + meta = { + homepage = "https://xon.sh/"; + description = "A Python-ish, BASHwards-compatible shell"; + changelog = "https://github.com/xonsh/xonsh/raw/main/CHANGELOG.rst"; + license = with lib.licenses; [ bsd3 ]; + mainProgram = "xonsh"; + maintainers = with lib.maintainers; [ AndersonTorres samlukeyes123 ]; + }; + }; in -runCommand "xonsh-${xonsh-unwrapped.version}" -{ - inherit (xonsh-unwrapped) pname version meta; - passthru = xonsh-unwrapped.passthru // { unwrapped = xonsh-unwrapped; }; -} '' - mkdir -p $out/bin - for bin in ${lib.getBin xonsh-unwrapped}/bin/*; do - ln -s ${pythonEnv}/bin/$(basename "$bin") $out/bin/ - done -'' +python3Packages.buildPythonApplication argset diff --git a/pkgs/by-name/xo/xonsh/unwrapped.nix b/pkgs/by-name/xo/xonsh/unwrapped.nix deleted file mode 100644 index 28d98911f49f..000000000000 --- a/pkgs/by-name/xo/xonsh/unwrapped.nix +++ /dev/null @@ -1,108 +0,0 @@ -{ lib -, coreutils -, fetchFromGitHub -, git -, gitUpdater -, glibcLocales -, python3 -}: - -let - pname = "xonsh"; - version = "0.15.1"; -in -python3.pkgs.buildPythonApplication { - inherit pname version; - - pyproject = true; - - # fetch from github because the pypi package ships incomplete tests - src = fetchFromGitHub { - owner = "xonsh"; - repo = "xonsh"; - rev = "refs/tags/${version}"; - hash = "sha256-mHOCkUGiSSPmkIQ4tgRZIaCTLgnx39SMwug5EIx/jrU="; - }; - - nativeBuildInputs = with python3.pkgs; [ - setuptools - wheel - ]; - - propagatedBuildInputs = with python3.pkgs; [ - ply - prompt-toolkit - pygments - ]; - - env.LC_ALL = "en_US.UTF-8"; - - postPatch = '' - sed -ie "s|/bin/ls|${coreutils}/bin/ls|" tests/test_execer.py - sed -ie "s|SHELL=xonsh|SHELL=$out/bin/xonsh|" tests/test_integrations.py - - sed -ie 's|/usr/bin/env|${coreutils}/bin/env|' tests/test_integrations.py - sed -ie 's|/usr/bin/env|${coreutils}/bin/env|' scripts/xon.sh - find scripts -name 'xonsh*' -exec sed -i -e "s|env -S|env|" {} \; - find -name "*.xsh" | xargs sed -ie 's|/usr/bin/env|${coreutils}/bin/env|' - patchShebangs . - ''; - - disabledTests = [ - # fails on sandbox - "test_colorize_file" - "test_loading_correctly" - "test_no_command_path_completion" - "test_bsd_man_page_completions" - "test_xonsh_activator" - # fails on non-interactive shells - "test_capture_always" - "test_casting" - "test_command_pipeline_capture" - "test_dirty_working_directory" - "test_man_completion" - "test_vc_get_branch" - "test_bash_and_is_alias_is_only_functional_alias" - ]; - - disabledTestPaths = [ - # fails on sandbox - "tests/completers/test_command_completers.py" - "tests/test_ptk_highlight.py" - "tests/test_ptk_shell.py" - # fails on non-interactive shells - "tests/prompt/test_gitstatus.py" - "tests/completers/test_bash_completer.py" - ]; - - nativeCheckInputs = [ - git - glibcLocales - ] ++ (with python3.pkgs; [ - pip - pyte - pytest-mock - pytest-subprocess - pytestCheckHook - ]); - - preCheck = '' - export HOME=$TMPDIR - ''; - - dontWrapPythonPrograms = true; - - passthru = { - shellPath = "/bin/xonsh"; - python = python3; # To the wrapper - updateScript = gitUpdater { }; - }; - - meta = { - homepage = "https://xon.sh/"; - description = "Python-ish, BASHwards-compatible shell"; - changelog = "https://github.com/xonsh/xonsh/raw/${version}/CHANGELOG.rst"; - license = with lib.licenses; [ bsd3 ]; - maintainers = with lib.maintainers; [ AndersonTorres ]; - }; -} diff --git a/pkgs/by-name/xo/xonsh/wrapper.nix b/pkgs/by-name/xo/xonsh/wrapper.nix new file mode 100644 index 000000000000..1b9637f04dd6 --- /dev/null +++ b/pkgs/by-name/xo/xonsh/wrapper.nix @@ -0,0 +1,25 @@ +{ + lib, + runCommand, + xonsh, + # configurable options + extraPackages ? (ps: [ ]), +}: + +let + inherit (xonsh.passthru) python; + + pythonEnv = python.withPackages + (ps: [ (ps.toPythonModule xonsh) ] ++ extraPackages ps); +in +runCommand + "xonsh-wrapped-${xonsh.version}" + { + inherit (xonsh) pname version meta passthru; + } + '' + mkdir -p $out/bin + for bin in ${lib.getBin xonsh}/bin/*; do + ln -s ${pythonEnv}/bin/$(basename "$bin") $out/bin/ + done + '' diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index cbb5d593f1ae..81b20684f936 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1398,7 +1398,7 @@ mapAliases ({ xineLib = xine-lib; # Added 2021-04-27 xineUI = xine-ui; # Added 2021-04-27 xmlada = gnatPackages.xmlada; # Added 2024-02-25 - xonsh-unwrapped = xonsh.passthru.unwrapped; + xonsh-unwrapped = python3Packages.xonsh; # Added 2024-06-18 xtrt = throw "xtrt has been removed due to being abandoned"; # Added 2023-05-25 xulrunner = firefox-unwrapped; # Added 2023-11-03 xvfb_run = xvfb-run; # Added 2021-05-07 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4bcc8ea7d138..4768530cc883 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -17193,6 +17193,10 @@ self: super: with self; { xnd = callPackage ../development/python-modules/xnd { }; + xonsh = toPythonModule (pkgs.xonsh.override { + python3Packages = self; + }); + xpath-expressions = callPackage ../development/python-modules/xpath-expressions { }; xpybutil = callPackage ../development/python-modules/xpybutil { };