membrane_core icon indicating copy to clipboard operation
membrane_core copied to clipboard

Dependency conflict between membrane_vpx_plugin and membrane_webrtc_plugin

Open lostbean opened this issue 6 months ago • 0 comments

When attempting to install dependencies, there's a conflict between membrane_vpx_plugin and membrane_webrtc_plugin. The version solver is unable to find a compatible set of dependencies due to conflicting requirements for membrane_vp8_format.

Resolving Hex dependencies...
Resolution completed in 0.738s
Because membrane_webrtc_plugin < 0.12.0 depends on bunch ~> 1.3.0 and membrane_webrtc_plugin >= 0.12.0 and < 0.15.0 depends on membrane_rtp_vp8_plugin ~> 0.7.1, membrane_webrtc_plugin < 0.15.0 requires bunch ~> 1.3.0 or membrane_rtp_vp8_plugin ~> 0.7.1.
And because membrane_webrtc_plugin >= 0.15.0 and < 0.17.0 depends on membrane_rtp_vp8_plugin ~> 0.8.0, membrane_webrtc_plugin < 0.17.0 requires bunch ~> 1.3.0 or membrane_rtp_vp8_plugin ~> 0.7.1 or ~> 0.8.0.
And because membrane_core >= 0.12.0 depends on bunch ~> 1.6, if membrane_core >= 0.12.0 and membrane_webrtc_plugin < 0.17.0 then membrane_rtp_vp8_plugin ~> 0.7.1 or ~> 0.8.0.
And because membrane_webrtc_plugin >= 0.17.0 and < 0.21.0 depends on membrane_rtp_vp8_plugin ~> 0.9.0, if membrane_core >= 0.12.0 and membrane_webrtc_plugin < 0.21.0 then membrane_rtp_vp8_plugin ~> 0.7.1 or ~> 0.8.0 or ~> 0.9.0.
And because membrane_webrtc_plugin >= 0.21.0 depends on membrane_rtp_vp8_plugin ~> 0.9.1, if membrane_core >= 0.12.0 and membrane_webrtc_plugin then membrane_rtp_vp8_plugin ~> 0.7.1 or ~> 0.8.0 or ~> 0.9.0.
And because membrane_rtp_vp8_plugin >= 0.4.0 depends on membrane_vp8_format ~> 0.4.0, if membrane_core >= 0.12.0 and membrane_webrtc_plugin then membrane_vp8_format ~> 0.4.0.
And because every version of membrane_vpx_plugin depends on membrane_core ~> 1.0, if membrane_vpx_plugin and membrane_webrtc_plugin then membrane_vp8_format ~> 0.4.0.
And because every version of membrane_vpx_plugin depends on membrane_vp8_format ~> 0.5.0, membrane_vpx_plugin is incompatible with membrane_webrtc_plugin.
And because your app depends on membrane_vpx_plugin >= 0.0.0, no version of membrane_webrtc_plugin is allowed.
So, because your app depends on membrane_webrtc_plugin >= 0.0.0, version solving failed.

Steps to Reproduce

  1. Create a new Elixir project
  2. Add both membrane_vpx_plugin and membrane_webrtc_plugin to the dependencies in mix.exs
Mix.install(
  [
    :membrane_core,
    :membrane_file_plugin,
    :membrane_webrtc_plugin,
    :membrane_realtimer_plugin,
    :membrane_matroska_plugin,
    :membrane_opus_plugin,
    :membrane_vpx_plugin,
    :kino,
    :kino_membrane
  ] 
)
  1. Run mix deps.get

Expected Behavior

The dependencies should resolve and install successfully.

Actual Behavior

The version solver fails to find a compatible set of dependencies.

Possible Solution

This issue might be resolved by updating one or more of the following packages to versions with compatible dependencies:

  • membrane_vpx_plugin
  • membrane_webrtc_plugin
  • membrane_vp8_format

Alternatively, it may require coordination between the maintainers of these packages to align their dependency requirements.

Environment

  • Elixir version: v1.16.0
  • Erlang/OTP version: Erlang/OTP 25 [erts-13.2.2.5]
  • Operating System: macOS (darwin)

Additional Context

This issue appears to stem from conflicting requirements for the membrane_vp8_format package between membrane_vpx_plugin and membrane_webrtc_plugin. Resolving this may require updating one or both of these packages to use compatible versions of membrane_vp8_format.

lostbean avatar Aug 16 '24 12:08 lostbean