From 7ea556d034c63a293d0579d6553eb6d43ebbbfb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Mon, 18 Feb 2019 16:13:07 +0000 Subject: [PATCH] Configure subprojects in the right order Use an array instead of a dict to make sure we iterate over the list of subprojects in the right order, which is first GStreamer core, then gst-plugins-base, then other things. Without this subprojects might get configured in random order, in which case gstreamer or gst-plugins-base libs might get picked up via pkg-config if they are also available installed, instead of being picked up from the subproject. This breaks all kinds of assumptions in gst-build and will likely have strange effects and/or lead to build failures such as subprojects/gst-plugins-good/tests/check/meson.build:144:2: ERROR: 'gstreamer-plugins-base-1.0' is not a pkgconfig dependency --- meson.build | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/meson.build b/meson.build index 8131d45522..b5cabc2aae 100644 --- a/meson.build +++ b/meson.build @@ -30,22 +30,23 @@ if not meson.is_subproject() and cc.get_id() == 'msvc' endif endif -subprojects = { - 'gstreamer': {}, - 'gst-plugins-base': {}, - 'gst-plugins-good': {}, - 'gst-plugins-bad': { 'option': get_option('bad') }, - 'gst-plugins-ugly': { 'option': get_option('ugly') }, - 'pygobject': { 'option': get_option('python') }, - 'gst-python': { 'option': get_option('python') }, - 'gst-omx': { 'option': get_option('omx'), }, - 'gst-libav': { 'option': get_option('libav') }, - 'gstreamer-vaapi': { 'option': get_option('vaapi') }, - 'gst-rtsp-server': { 'option': get_option('rtsp_server') }, - 'gst-devtools': { 'option': get_option('devtools') }, - 'gst-editing-services': { 'option': get_option('ges') }, - 'gstreamer-sharp': { 'option': get_option('sharp') }, -} +# Ordered list of subprojects (dict has no ordering guarantees) +subprojects = [ + ['gstreamer', {}], + ['gst-plugins-base', {}], + ['gst-plugins-good', {}], + ['gst-plugins-bad', { 'option': get_option('bad') }], + ['gst-plugins-ugly', { 'option': get_option('ugly') }], + ['gst-libav', { 'option': get_option('libav') }], + ['gst-rtsp-server', { 'option': get_option('rtsp_server') }], + ['gst-devtools', { 'option': get_option('devtools') }], + ['gst-editing-services', { 'option': get_option('ges') }], + ['gstreamer-vaapi', { 'option': get_option('vaapi') }], + ['gst-omx', { 'option': get_option('omx'), }], + ['gstreamer-sharp', { 'option': get_option('sharp') }], + ['pygobject', { 'option': get_option('python') }], + ['gst-python', { 'option': get_option('python') }], +] python3 = import('python3').find_python() symlink = ''' @@ -63,7 +64,9 @@ endif subproject('orc', required: get_option('orc')) subprojects_names = [] -foreach project_name, build_infos: subprojects +foreach sp : subprojects + project_name = sp[0] + build_infos = sp[1] is_required = build_infos.get('option', true) subproj = subproject(project_name, version: gst_version, required: is_required) if subproj.found()