Skip to content

rpds-py 0.28.0 on Mac has a problem when installed into a venv through brew #200

@jackjansen

Description

@jackjansen

I really have no idea whether this bug report belongs here, or at brew.

My reason for trying here first is because the issue exists with rpds-py 0.28.0 but not with rpds-py 0.27.2. (I confirmed this twice).

I maintain a brew formula cwi-dis/cwipc, which amongst many other things creates a Python venv and then installs many Python package into that venv, and reds-py is used by one of my dependencies.

My brew install started failing a short while ago, because something uses install_name_tool to modify the shared library IDs of native libraries installed into the venv. This fails for rpds since 0.28, because there isn't enough space in the Mach-O header for the long name:

==> Installing cwipc from cwi-dis/cwipc
==> cmake -S . -B build -DPython3_ROOT_DIR=/opt/homebrew/opt/[email protected] -DCWIPC_SKIP_PYTHON_INSTALL=1
==> cmake --build build
==> cmake --install build
==> /opt/homebrew/opt/[email protected]/bin/python3.12 -m venv /opt/homebrew/Cellar/cwipc/HEAD-c4104ac/libexec/cwipc/venv
==> /opt/homebrew/Cellar/cwipc/HEAD-c4104ac/libexec/cwipc/venv/bin/python -m pip install --find-links /opt/homebrew/Cellar/cwipc/HE
==> /opt/homebrew/Cellar/cwipc/HEAD-c4104ac/bin/cwipc view --version
Error: Failed changing dylib ID of /opt/homebrew/Cellar/cwipc/HEAD-c4104ac/libexec/cwipc/venv/lib/python3.12/site-packages/rpds/rpds.cpython-312-darwin.so
  from @rpath/rpds.cpython-312-darwin.so
    to /opt/homebrew/opt/cwipc/libexec/cwipc/venv/lib/python3.12/site-packages/rpds/rpds.cpython-312-darwin.so
Error: Failed to fix install linkage
Updated load commands do not fit in the header of /opt/homebrew/Cellar/cwipc/HEAD-c4104ac/libexec/cwipc/venv/lib/python3.12/site-packages/rpds/rpds.cpython-312-darwin.so. /opt/homebrew/Cellar/cwipc/HEAD-c4104ac/libexec/cwipc/venv/lib/python3.12/site-packages/rpds/rpds.cpython-312-darwin.so needs to be relinked, possibly with -headerpad or -headerpad_max_install_names
The formula built, but you may encounter issues using it or linking other
formulae against it.

The workaround is to manually install rpds-py==0.27.2 before installing my dependencies:

==> Installing cwipc from cwi-dis/cwipc
==> cmake -S . -B build -DPython3_ROOT_DIR=/opt/homebrew/opt/[email protected] -DCWIPC_SKIP_PYTHON_INSTALL=1
==> cmake --build build
==> cmake --install build
==> /opt/homebrew/opt/[email protected]/bin/python3.12 -m venv /opt/homebrew/Cellar/cwipc/HEAD-c4104ac/libexec/cwipc/venv
==> /opt/homebrew/Cellar/cwipc/HEAD-c4104ac/libexec/cwipc/venv/bin/python -m pip install rpds-py==0.27.1
==> /opt/homebrew/Cellar/cwipc/HEAD-c4104ac/libexec/cwipc/venv/bin/python -m pip install --find-links /opt/homebrew/Cellar/cwipc/HE
==> /opt/homebrew/Cellar/cwipc/HEAD-c4104ac/bin/cwipc view --version
🍺  /opt/homebrew/Cellar/cwipc/HEAD-c4104ac: 20,391 files, 892.2MB, built in 1 minute 54 seconds

So apparently the problem was introduced in rpds-py 0.28.0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions