From df83a721daa094fc6b15b24e94965821ebd01bec Mon Sep 17 00:00:00 2001 From: SamLukeYes Date: Tue, 9 Jul 2024 23:37:56 +0800 Subject: [PATCH 1/3] xonsh: fix wrapper --- nixos/modules/programs/xonsh.nix | 2 +- pkgs/by-name/xo/xonsh/package.nix | 130 ++++------------------------ pkgs/by-name/xo/xonsh/unwrapped.nix | 124 ++++++++++++++++++++++++++ pkgs/by-name/xo/xonsh/wrapper.nix | 25 ------ pkgs/top-level/python-packages.nix | 4 +- 5 files changed, 144 insertions(+), 141 deletions(-) create mode 100644 pkgs/by-name/xo/xonsh/unwrapped.nix delete mode 100644 pkgs/by-name/xo/xonsh/wrapper.nix diff --git a/nixos/modules/programs/xonsh.nix b/nixos/modules/programs/xonsh.nix index 6bf18d4ebd89..86bdb4088845 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.wrapper.override { extraPackages = ps: [ ps.requests ]; }"; + example = "pkgs.xonsh.override { extraPackages = ps: [ ps.requests ]; }"; }; config = lib.mkOption { diff --git a/pkgs/by-name/xo/xonsh/package.nix b/pkgs/by-name/xo/xonsh/package.nix index 60b96dd67f24..2cf2b9241ca4 100644 --- a/pkgs/by-name/xo/xonsh/package.nix +++ b/pkgs/by-name/xo/xonsh/package.nix @@ -1,118 +1,24 @@ { lib, - callPackage, - coreutils, - fetchFromGitHub, - git, - gitUpdater, - glibcLocales, - python3Packages, + python3, + runCommand, + # configurable options + extraPackages ? (ps: [ ]), }: let - - 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; [ samlukeyes123 ]; - }; - }; + pythonEnv = python3.withPackages + (ps: [ ps.xonsh ] ++ extraPackages ps); + xonsh = python3.pkgs.xonsh; in -python3Packages.buildPythonApplication argset +runCommand + "xonsh-${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/by-name/xo/xonsh/unwrapped.nix b/pkgs/by-name/xo/xonsh/unwrapped.nix new file mode 100644 index 000000000000..5d2ec15cc403 --- /dev/null +++ b/pkgs/by-name/xo/xonsh/unwrapped.nix @@ -0,0 +1,124 @@ +{ + lib, + coreutils, + fetchFromGitHub, + git, + gitUpdater, + glibcLocales, + pythonPackages, +}: + +let + + 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 pythonPackages; [ + setuptools + wheel + ]; + + propagatedBuildInputs = (with pythonPackages; [ + ply + prompt-toolkit + pygments + ]); + + nativeCheckInputs = [ + git + glibcLocales + ] ++ (with pythonPackages; [ + 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" + + # flaky tests + "test_script" + "test_alias_stability" + "test_alias_stability_exception" + "test_complete_import" + "test_subproc_output_format" + + # https://github.com/xonsh/xonsh/issues/5569 + "test_spec_modifier_alias_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" + ]; + + # https://github.com/NixOS/nixpkgs/issues/248978 + dontWrapPythonPrograms = true; + + 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 = pythonPackages.python; # To the wrapper + wrapper = throw "The top-level xonsh package is now wrapped. Use it directly."; + 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; [ samlukeyes123 ]; + }; + }; +in +pythonPackages.buildPythonPackage argset diff --git a/pkgs/by-name/xo/xonsh/wrapper.nix b/pkgs/by-name/xo/xonsh/wrapper.nix deleted file mode 100644 index 1b9637f04dd6..000000000000 --- a/pkgs/by-name/xo/xonsh/wrapper.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - 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/python-packages.nix b/pkgs/top-level/python-packages.nix index 39b8b28be828..930f9f58f207 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -17351,9 +17351,7 @@ self: super: with self; { xnd = callPackage ../development/python-modules/xnd { }; - xonsh = toPythonModule (pkgs.xonsh.override { - python3Packages = self; - }); + xonsh = callPackage ../by-name/xo/xonsh/unwrapped.nix { }; xpath-expressions = callPackage ../development/python-modules/xpath-expressions { }; From 52e3f9dbf40d7b0c4bfebee96ad021101dde45bc Mon Sep 17 00:00:00 2001 From: SamLukeYes Date: Sat, 20 Jul 2024 02:20:47 +0800 Subject: [PATCH 2/3] xonsh: remove indefinite article from meta.description MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: éclairevoyant <848000+eclairevoyant@users.noreply.github.com> --- pkgs/by-name/xo/xonsh/unwrapped.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/xo/xonsh/unwrapped.nix b/pkgs/by-name/xo/xonsh/unwrapped.nix index 5d2ec15cc403..76c90af0a8f4 100644 --- a/pkgs/by-name/xo/xonsh/unwrapped.nix +++ b/pkgs/by-name/xo/xonsh/unwrapped.nix @@ -113,7 +113,7 @@ let meta = { homepage = "https://xon.sh/"; - description = "A Python-ish, BASHwards-compatible shell"; + description = "Python-ish, BASHwards-compatible shell"; changelog = "https://github.com/xonsh/xonsh/raw/main/CHANGELOG.rst"; license = with lib.licenses; [ bsd3 ]; mainProgram = "xonsh"; From 633da8f7a0a05aca42f6cc23e53523e18ce10a4f Mon Sep 17 00:00:00 2001 From: SamLukeYes Date: Fri, 9 Aug 2024 22:48:43 +0800 Subject: [PATCH 3/3] xonsh: 0.17.0 -> 0.18.2 --- pkgs/by-name/xo/xonsh/unwrapped.nix | 46 ++++++++++++++++------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/pkgs/by-name/xo/xonsh/unwrapped.nix b/pkgs/by-name/xo/xonsh/unwrapped.nix index 76c90af0a8f4..4b9f6c6e3cfc 100644 --- a/pkgs/by-name/xo/xonsh/unwrapped.nix +++ b/pkgs/by-name/xo/xonsh/unwrapped.nix @@ -12,7 +12,7 @@ let argset = { pname = "xonsh"; - version = "0.17.0"; + version = "0.18.2"; pyproject = true; # PyPI package ships incomplete tests @@ -20,7 +20,7 @@ let owner = "xonsh"; repo = "xonsh"; rev = "refs/tags/${argset.version}"; - hash = "sha256-9sRY9aetWWXzCFfgdHCBCia48THIJcMxsYMnFR6Xa8A="; + hash = "sha256-iTdUu2yGixWwDJICDLfzRcwgGe+xlq2CvxUeSbmDiUU="; }; nativeBuildInputs = with pythonPackages; [ @@ -28,23 +28,28 @@ let wheel ]; - propagatedBuildInputs = (with pythonPackages; [ - ply - prompt-toolkit - pygments - ]); + propagatedBuildInputs = ( + with pythonPackages; + [ + ply + prompt-toolkit + pygments + ] + ); - nativeCheckInputs = [ - git - glibcLocales - ] ++ (with pythonPackages; [ - pip - pyte - pytest-mock - pytest-subprocess - pytestCheckHook - requests - ]); + nativeCheckInputs = + [ + git + glibcLocales + ] + ++ (with pythonPackages; [ + pip + pyte + pytest-mock + pytest-subprocess + pytestCheckHook + requests + ]); disabledTests = [ # fails on sandbox @@ -71,14 +76,13 @@ let "test_subproc_output_format" # https://github.com/xonsh/xonsh/issues/5569 - "test_spec_modifier_alias_output_format" + "test_spec_decorator_alias_output_format" ]; disabledTestPaths = [ # fails on sandbox "tests/completers/test_command_completers.py" - "tests/test_ptk_highlight.py" - "tests/test_ptk_shell.py" + "tests/shell/test_ptk_highlight.py" # fails on non-interactive shells "tests/prompt/test_gitstatus.py" "tests/completers/test_bash_completer.py"