PyAV-Org / PyAV

Pythonic bindings for FFmpeg's libraries.
https://pyav.basswood-io.com/
BSD 3-Clause "New" or "Revised" License
2.43k stars 359 forks source link

pkg-config returned flags we don't understand: -Wl,-rpath,... #1368

Closed MagicalTux closed 4 months ago

MagicalTux commented 4 months ago

Overview

Attempting to build av fails, probably because ffmpeg is installed in a custom directory and added rpath information to its linking parameters.

Processing /build/av-12.0.0/work/av-12.0.0
  Added file:///build/av-12.0.0/work/av-12.0.0 to build tracker '/tmp/pip-build-tracker-yubnzlsz'
  Created temporary directory: /tmp/pip-modern-metadata-0vj5puev
  Running command Preparing metadata (pyproject.toml)
  pkg-config returned flags we don't understand: -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64 -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64 -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64 -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64 -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64 -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64 -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64
  error: subprocess-exited-with-error

  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> See above for output.

Expected behavior

Those parameters can be safely ignored, and av should build.

Actual behavior

Build fails

Build report:

Running: /pkg/main/dev-lang.python.core.3.12.2/bin/python3 -m pip install --verbose --verbose --verbose --no-binary=:all: --no-build-isolation --no-cache-dir --no-deps --disable-pip-version-check --root /build/av-12.0.0/dist --prefix /pkg/main/dev-python.av.mod.12.0.0.py3.12.2.linux.amd64 .
Using pip 24.0 from /pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip (python 3.12)
Non-user install due to --prefix or --target option
Created temporary directory: /tmp/pip-build-tracker-yubnzlsz
Initialized build tracking at /tmp/pip-build-tracker-yubnzlsz
Created build tracker: /tmp/pip-build-tracker-yubnzlsz
Entered build tracker: /tmp/pip-build-tracker-yubnzlsz
Created temporary directory: /tmp/pip-install-o1mxv0y8
Created temporary directory: /tmp/pip-ephem-wheel-cache-q_ynq57y
Processing /build/av-12.0.0/work/av-12.0.0
  Added file:///build/av-12.0.0/work/av-12.0.0 to build tracker '/tmp/pip-build-tracker-yubnzlsz'
  Created temporary directory: /tmp/pip-modern-metadata-0vj5puev
  Running command Preparing metadata (pyproject.toml)
  pkg-config returned flags we don't understand: -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64 -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64 -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64 -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64 -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64 -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64 -Wl,-rpath,/pkg/main/media-video.ffmpeg.libs.6.1.1.linux.amd64/lib64
  error: subprocess-exited-with-error

  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> See above for output.

  note: This error originates from a subprocess, and is likely not a problem with pip.
  full command: /pkg/main/dev-lang.python.core.3.12.2/bin/python3 /pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py prepare_metadata_for_build_wheel /tmp/tmpn6fli728
  cwd: /build/av-12.0.0/work/av-12.0.0
  Preparing metadata (pyproject.toml) ... error
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
Exception information:
Traceback (most recent call last):
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/operations/build/metadata.py", line 35, in generate_metadata
    distinfo_dir = backend.prepare_metadata_for_build_wheel(metadata_dir)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/utils/misc.py", line 766, in prepare_metadata_for_build_wheel
    return super().prepare_metadata_for_build_wheel(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 186, in prepare_metadata_for_build_wheel
    return self._call_hook('prepare_metadata_for_build_wheel', {
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 311, in _call_hook
    self._subprocess_runner(
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/utils/subprocess.py", line 252, in runner
    call_subprocess(
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/utils/subprocess.py", line 224, in call_subprocess
    raise error
pip._internal.exceptions.InstallationSubprocessError: Preparing metadata (pyproject.toml) exited with 1

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/cli/base_command.py", line 180, in exc_logging_wrapper
    status = run_func(*args)
             ^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/cli/req_command.py", line 245, in wrapper
    return func(self, options, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/commands/install.py", line 377, in run
    requirement_set = resolver.resolve(
                      ^^^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 76, in resolve
    collected = self.factory.collect_root_requirements(root_reqs)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 534, in collect_root_requirements
    reqs = list(
           ^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 490, in _make_requirements_from_install_req
    cand = self._make_base_candidate_from_link(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 228, in _make_base_candidate_from_link
    self._link_candidate_cache[link] = LinkCandidate(
                                       ^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 290, in __init__
    super().__init__(
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__
    self.dist = self._prepare()
                ^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 222, in _prepare
    dist = self._prepare_distribution()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 301, in _prepare_distribution
    return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/operations/prepare.py", line 525, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/operations/prepare.py", line 640, in _prepare_linked_requirement
    dist = _get_prepared_distribution(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/operations/prepare.py", line 71, in _get_prepared_distribution
    abstract_dist.prepare_distribution_metadata(
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py", line 67, in prepare_distribution_metadata
    self.req.prepare_metadata()
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/req/req_install.py", line 579, in prepare_metadata
    self.metadata_directory = generate_metadata(
                              ^^^^^^^^^^^^^^^^^^
  File "/pkg/main/dev-python.pip.mod.24.0.py3.12.2.linux.amd64/lib/python3.12/site-packages/pip/_internal/operations/build/metadata.py", line 37, in generate_metadata
    raise MetadataGenerationFailed(package_details=details) from error
pip._internal.exceptions.MetadataGenerationFailed: metadata generation failed
Removed file:///build/av-12.0.0/work/av-12.0.0 from build tracker '/tmp/pip-build-tracker-yubnzlsz'
Removed build tracker: '/tmp/pip-build-tracker-yubnzlsz'

Versions

Research

I have done the following:

Additional context

This is to get av built as a system package on Azusa.

WyattBlue commented 4 months ago

You're using setup.py to make your build, right?