On 25/07/18 13:08, Frediano Ziglio wrote: >> >> Spice-server and spice-gtk already require 0.47, and with this release, >> there were some interesting additions we can make use: >> >> - Options with 'feature' type: >> >> This built-in type is used instead of the tri-state string combo >> (auto/true/false), simplifying the dependency checks. >> >> http://mesonbuild.com/Build-options.html#features >> >> - Dictionary: >> >> Easier to iterate and improves readability of the code by replacing >> the use of nested lists. >> >> http://mesonbuild.com/Reference-manual.html#dictionary-object >> >> Signed-off-by: Eduardo Lima (Etrunko) <etrunko@xxxxxxxxxx> >> --- >> meson.build | 37 ++++++++++++++++--------------------- >> meson_options.txt | 7 ++----- >> 2 files changed, 18 insertions(+), 26 deletions(-) >> >> diff --git a/meson.build b/meson.build >> index 226d9f4..6fa67dc 100644 >> --- a/meson.build >> +++ b/meson.build >> @@ -2,7 +2,7 @@ >> # project definition >> # >> project('spice-common', 'c', >> - meson_version : '>= 0.45.0', >> + meson_version : '>= 0.47.0', >> license : 'LGPLv2.1') >> >> if not meson.is_subproject() >> @@ -98,32 +98,27 @@ endif >> glib_version = '2.38' >> glib_version_info = '>= @0@'.format(glib_version) >> >> -deps = [['spice-protocol', '>= 0.12.12'], >> - ['glib-2.0', glib_version_info], >> - ['gio-2.0', glib_version_info], >> - ['gthread-2.0', glib_version_info], >> - ['pixman-1', '>= 0.17.7'], >> - ['openssl', '>= 1.0.0']] >> +deps = {'spice-protocol' : '>= 0.12.12', >> + 'glib-2.0' : glib_version_info, >> + 'gio-2.0' : glib_version_info, >> + 'gthread-2.0' : glib_version_info, >> + 'pixman-1' : '>= 0.17.7', >> + 'openssl' : '>= 1.0.0'} >> >> -foreach dep : deps >> - spice_common_deps += dependency(dep[0], version : dep[1]) >> +foreach dep, version : deps >> + spice_common_deps += dependency(dep, version : version) >> endforeach >> > > surely more readable, note that dictionary does not keep > the order of the items while arrays does, but is not a problem > with current code. > >> # >> # Non-mandatory/optional dependencies >> # >> -optional_deps = [ >> - ['celt051', '>= 0.5.1.1'], >> - ['opus', '>= 0.9.14'], >> - ] >> -foreach dep : optional_deps >> - option_value = get_option(dep[0]) >> - if option_value != 'false' >> - d = dependency(dep[0], required: (option_value == 'true'), version : >> dep[1]) >> - if d.found() >> - spice_common_deps += d >> - >> spice_common_config_data.set('HAVE_@0@'.format(dep[0].underscorify().to_upper()), >> '1') >> - endif >> +optional_deps = {'celt051' : '>= 0.5.1.1', >> + 'opus' : '>= 0.9.14'} >> +foreach dep, version : optional_deps >> + d = dependency(dep, required : get_option(dep), version : version) >> + if d.found() >> + spice_common_deps += d >> + >> spice_common_config_data.set('HAVE_@0@'.format(dep.underscorify().to_upper()), >> '1') >> endif >> endforeach >> >> diff --git a/meson_options.txt b/meson_options.txt >> index b88f209..1b80257 100644 >> --- a/meson_options.txt >> +++ b/meson_options.txt >> @@ -11,15 +11,12 @@ option('extra-checks', >> description : 'Enable extra checks on code') >> >> option('celt051', >> - type : 'combo', >> - choices : ['true', 'false', 'auto'], >> - value : 'auto', >> + type : 'feature', >> yield : true, >> description: 'Enable celt051 audio codec') >> >> option('opus', >> - type : 'combo', >> - choices : ['true', 'false', 'auto'], >> + type : 'feature', >> yield : true, >> description: 'Enable Opus audio codec') >> > > I would say yes. > > What worry me is that this Meson looks like a moving target. > The fact that they don't want to add function requires them to > to write new and new modules/functions and have new releases. > The main concern for us is that is hard to predict when we could > remove autoconf stuff having to continue to maintain 2 build systems. > Will be hard to have Meson 0.47 in next RHEL7 which will mean we > need at least to wait other 6 months/1 year. > I agree that changing requirements for every new release is far from ideal, but we are in early stages and I do not see any more strong reasons for requiring a 0.48 for example (whenever that version is out). IMO a good time for that would be when they finally fix the equivalent of 'make dist' to include the generated files: https://github.com/mesonbuild/meson/issues/2166. That said, I think I could have split this patch in two, one for the feature option and the other one for replacing the lists with dictionaries where appropriate. > Maybe for older distros we could package Meson in a tarball and > use it inside higher packager (like spec file) to use a newer > meson without the needs to have it installed (I looked and there > are mainly python files so seems doable, just requires a recent > python3 installed in the system). > Not sure it is worth the hassle, but it is easily doable, it is just a matter of setting the PYTHONPATH environment variable and you can use meson from a local directory. -- Eduardo de Barros Lima (Etrunko) Software Engineer - RedHat etrunko@xxxxxxxxxx _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel