diff options
Diffstat (limited to 'pkgs/by-name/xo/xonsh/package.nix')
-rw-r--r-- | pkgs/by-name/xo/xonsh/package.nix | 131 |
1 files changed, 113 insertions, 18 deletions
diff --git a/pkgs/by-name/xo/xonsh/package.nix b/pkgs/by-name/xo/xonsh/package.nix index 1882a30966359..45c14cb4f2efe 100644 --- a/pkgs/by-name/xo/xonsh/package.nix +++ b/pkgs/by-name/xo/xonsh/package.nix @@ -1,23 +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; -} '' - 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 |