Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

devenv: remove LD_LIBRARY_PATH hack from running python environment #999

Merged
merged 1 commit into from
Oct 30, 2024

Conversation

vlaci
Copy link
Contributor

@vlaci vlaci commented Oct 30, 2024

To completely elliminate issues like those which came up in #987

Flake lock file updates:

• Updated input 'devenv':
'github:vlaci/devenv/5186fecbe2835ac45018ea4940388f8523bf1624' (2024-10-04)
→ 'github:vlaci/devenv/953a526754c5ff5e64ab6925c4388b26ae2c45c6' (2024-10-30)

From the related PR1 in devenv:

Injecting LD_LIBRARY_PATH to the Python runtime environment is great to bypass the need of having to patch non-nix binaries loaded into that environment, however it breaks down, when Python executes any other program not compiled for the given Nix system, e.g. a shell script via subprocess.

To work this around, devenv will inject a pth2 file to the virtual environment it creates, which mangles the LD_LIBRARY_PATH variable, undoing any changes to it made by devenv but preserving changes from other sources.

Footnotes

  1. https://github.com/cachix/devenv/pull/1562

  2. https://docs.python.org/3/library/site.html

@vlaci vlaci requested a review from e3krisztian October 30, 2024 09:21
Flake lock file updates:

• Updated input 'devenv':
    'github:vlaci/devenv/5186fecbe2835ac45018ea4940388f8523bf1624' (2024-10-04)
  → 'github:vlaci/devenv/385d38cfb6872e7f95cae30d94f7fc4afd23fd76' (2024-10-30)

From the related PR[^1] in `devenv`:

Injecting `LD_LIBRARY_PATH` to the Python runtime environment is great
to bypass the need of having to patch non-nix binaries loaded into
that environment, however it breaks down, when Python executes any
other program not compiled for the given Nix system, e.g. a shell
script via `subprocess`.

To work this around, `devenv` will inject a `pth`[^2] file to the virtual
environment it creates, which mangles the `LD_LIBRARY_PATH` variable,
undoing any changes to it made by `devenv` but preserving changes from
other sources.

[^1]: cachix/devenv#1562
[^2]: https://docs.python.org/3/library/site.html
Copy link
Contributor

@e3krisztian e3krisztian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

subprocess.run('git') works with this change (also required by pre-commit tools)

@e3krisztian
Copy link
Contributor

Thanks!

@vlaci vlaci merged commit 60efe99 into main Oct 30, 2024
15 checks passed
@vlaci vlaci deleted the devenv-ldpath branch October 30, 2024 11:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants