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

python: remove LD_LIBRARY_PATH hack from running python environment #1562

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

vlaci
Copy link

@vlaci vlaci commented Oct 30, 2024

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 pth1 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.

I am unsure what the best way would be to integrate this, bit I think the approach in general is sane. I am tested only the poetry case currently.

Fixes #1111

Footnotes

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

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`[^1] 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.

Fixes cachix#1111

[^1]: https://docs.python.org/3/library/site.html
vlaci added a commit to onekey-sec/unblob that referenced this pull request Oct 30, 2024
Flake lock file updates:

• Updated input 'devenv':
    'github:vlaci/devenv/5186fecbe2835ac45018ea4940388f8523bf1624' (2024-10-04)
  → 'github:vlaci/devenv/953a526754c5ff5e64ab6925c4388b26ae2c45c6' (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
vlaci added a commit to onekey-sec/unblob that referenced this pull request Oct 30, 2024
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
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.

Mixing system packages with python results in shared library errors
1 participant