meson: Fix plugin requirement checking and add logging

We were silently skipping plugins that didn't find a required feature,
even if the plugin option was enabled.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1614>
This commit is contained in:
Nirbheek Chauhan 2024-06-06 14:52:41 +05:30 committed by GStreamer Marge Bot
parent 46094f8e40
commit 2478b47445

View file

@ -390,8 +390,13 @@ endif
foreach plugin_name, details: plugins foreach plugin_name, details: plugins
plugin_opt = get_variable(f'@plugin_name@_option', get_option(plugin_name)) plugin_opt = get_variable(f'@plugin_name@_option', get_option(plugin_name))
if plugin_opt.allowed() if not plugin_opt.allowed()
debug(f'@plugin_name@ is disabled')
continue
endif
plugin_deps_found = true plugin_deps_found = true
# Check whether we have all needed deps
foreach dep_name, dep_ver: details.get('extra-deps', {}) foreach dep_name, dep_ver: details.get('extra-deps', {})
if dep_ver.length() != 0 if dep_ver.length() != 0
dep = dependency(dep_name, version: dep_ver, required: plugin_opt) dep = dependency(dep_name, version: dep_ver, required: plugin_opt)
@ -400,21 +405,32 @@ foreach plugin_name, details: plugins
endif endif
deps_cache += {dep_name: dep} deps_cache += {dep_name: dep}
if not dep.found() if not dep.found()
debug(f'@plugin_name@ dependency @dep_name@ @dep_ver@ not found, skipping')
plugin_deps_found = false plugin_deps_found = false
break break
endif endif
endforeach endforeach
plugin_features = details.get('features', []) if not plugin_deps_found
if plugin_deps_found continue
endif
# Validate gst-plugin features # Validate gst-plugin features
plugin_features = details.get('features', [])
foreach feature: plugin_features foreach feature: plugin_features
if feature.startswith('gst-plugin') and not packages.contains(feature) if feature.startswith('gst-plugin') and not packages.contains(feature)
msg = f'@plugin_name@ required feature @feature@ not found'
if plugin_opt.enabled()
error(msg)
endif
message(msg + ', skipping')
plugin_deps_found = false plugin_deps_found = false
break break
endif endif
endforeach endforeach
if not plugin_deps_found
continue
endif endif
if plugin_deps_found
packages += f'gst-plugin-@plugin_name@' packages += f'gst-plugin-@plugin_name@'
features += plugin_features features += plugin_features
extra_features = run_command('dependencies.py', meson.current_source_dir(), plugin_name, extra_features = run_command('dependencies.py', meson.current_source_dir(), plugin_name,
@ -434,8 +450,6 @@ foreach plugin_name, details: plugins
if default_library in ['static', 'both'] if default_library in ['static', 'both']
output += [lib + '.' + ext_static] output += [lib + '.' + ext_static]
endif endif
endif
endif
endforeach endforeach
feature_args = [] feature_args = []