[spice-server,2/3] meson: Use dictionaries addition feature

Submitted by Eduardo Lima (Etrunko) on Jan. 30, 2019, 11:50 a.m.

Details

Message ID 20190130115031.4535-3-etrunko@redhat.com
State New
Headers show
Series "Meson build improvements" ( rev: 1 ) in Spice

Not browsing as part of any series.

Commit Message

Eduardo Lima (Etrunko) Jan. 30, 2019, 11:50 a.m.
Since meson 0.48 it is possible to 'add' to dictionaries as well. Make
use of this feature in our build.

http://mesonbuild.com/Release-notes-for-0-48-0.html#dictionary-addition

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
---
 meson.build              |  2 +-
 server/tests/meson.build | 54 +++++++++++++++++++---------------------
 2 files changed, 26 insertions(+), 30 deletions(-)

Patch hide | download patch | download mbox

diff --git a/meson.build b/meson.build
index 811099c6..29af6b04 100644
--- a/meson.build
+++ b/meson.build
@@ -4,7 +4,7 @@ 
 project('spice', 'c',
         version : run_command('build-aux/git-version-gen', '${MESON_SOURCE_ROOT}/.tarball-version', check : true).stdout().strip(),
         license : 'LGPLv2.1',
-        meson_version : '>= 0.47.2')
+        meson_version : '>= 0.48.0')
 
 message('Updating submodules')
 run_command('build-aux/meson/check-spice-common', check : true)
diff --git a/server/tests/meson.build b/server/tests/meson.build
index b79b1108..37c94120 100644
--- a/server/tests/meson.build
+++ b/server/tests/meson.build
@@ -31,45 +31,41 @@  foreach lib, params : stat_test_libs
                               install : false)
 endforeach
 
-tests = [
-  ['test-codecs-parsing', true],
-  ['test-options', true],
-  ['test-stat', true],
-  ['test-stream', true],
-  ['test-agent-msg-filter', true],
-  ['test-loop', true],
-  ['test-qxl-parsing', true],
-  ['test-stat-file', true],
-  ['test-leaks', true],
-  ['test-vdagent', true],
-  ['test-fail-on-null-core-interface', true],
-  ['test-empty-success', true],
-  ['test-channel', true],
-  ['test-stream-device', true],
-  ['test-listen', true],
-  ['test-record', true],
-  ['test-display-no-ssl', false],
-  ['test-display-streaming', false],
-  ['test-playback', false],
-  ['test-display-resolution-changes', false],
-  ['test-two-servers', false],
-  ['test-display-width-stride', false],
-]
+tests = {'test-codecs-parsing' : true,
+         'test-options' : true,
+         'test-stat' : true,
+         'test-stream' : true,
+         'test-agent-msg-filter' : true,
+         'test-loop' : true,
+         'test-qxl-parsing' : true,
+         'test-stat-file' : true,
+         'test-leaks' : true,
+         'test-vdagent' : true,
+         'test-fail-on-null-core-interface' : true,
+         'test-empty-success' : true,
+         'test-channel' : true,
+         'test-stream-device' : true,
+         'test-listen' : true,
+         'test-record' : true,
+         'test-display-no-ssl' : false,
+         'test-display-streaming' : false,
+         'test-playback' : false,
+         'test-display-resolution-changes' : false,
+         'test-two-servers' : false,
+         'test-display-width-stride' : false}
 
 if spice_server_has_sasl
-  tests += [['test-sasl', true]]
+  tests += {'test-sasl': true}
 endif
 
 if spice_server_has_gstreamer
-  tests += [['test-gst', false]]
+  tests += {'test-gst' : false}
   if get_option('extra-checks')
     test('video-encoders', files('video-encoders'))
   endif
 endif
 
-foreach t : tests
-  test_name = t[0]
-  is_test = t[1]
+foreach test_name, is_test : tests
   exe = executable(test_name,
                    sources : '@0@.c'.format(test_name),
                    link_with : test_libs,

Comments

> 
> Since meson 0.48 it is possible to 'add' to dictionaries as well. Make
> use of this feature in our build.
> 
> http://mesonbuild.com/Release-notes-for-0-48-0.html#dictionary-addition
> 
> Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
> ---
>  meson.build              |  2 +-
>  server/tests/meson.build | 54 +++++++++++++++++++---------------------
>  2 files changed, 26 insertions(+), 30 deletions(-)
> 
> diff --git a/meson.build b/meson.build
> index 811099c6..29af6b04 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -4,7 +4,7 @@
>  project('spice', 'c',
>          version : run_command('build-aux/git-version-gen',
>          '${MESON_SOURCE_ROOT}/.tarball-version', check :
>          true).stdout().strip(),
>          license : 'LGPLv2.1',
> -        meson_version : '>= 0.47.2')
> +        meson_version : '>= 0.48.0')
>  
>  message('Updating submodules')
>  run_command('build-aux/meson/check-spice-common', check : true)
> diff --git a/server/tests/meson.build b/server/tests/meson.build
> index b79b1108..37c94120 100644
> --- a/server/tests/meson.build
> +++ b/server/tests/meson.build
> @@ -31,45 +31,41 @@ foreach lib, params : stat_test_libs
>                                install : false)
>  endforeach
>  
> -tests = [
> -  ['test-codecs-parsing', true],
> -  ['test-options', true],
> -  ['test-stat', true],
> -  ['test-stream', true],
> -  ['test-agent-msg-filter', true],
> -  ['test-loop', true],
> -  ['test-qxl-parsing', true],
> -  ['test-stat-file', true],
> -  ['test-leaks', true],
> -  ['test-vdagent', true],
> -  ['test-fail-on-null-core-interface', true],
> -  ['test-empty-success', true],
> -  ['test-channel', true],
> -  ['test-stream-device', true],
> -  ['test-listen', true],
> -  ['test-record', true],
> -  ['test-display-no-ssl', false],
> -  ['test-display-streaming', false],
> -  ['test-playback', false],
> -  ['test-display-resolution-changes', false],
> -  ['test-two-servers', false],
> -  ['test-display-width-stride', false],
> -]
> +tests = {'test-codecs-parsing' : true,
> +         'test-options' : true,
> +         'test-stat' : true,
> +         'test-stream' : true,
> +         'test-agent-msg-filter' : true,
> +         'test-loop' : true,
> +         'test-qxl-parsing' : true,
> +         'test-stat-file' : true,
> +         'test-leaks' : true,
> +         'test-vdagent' : true,
> +         'test-fail-on-null-core-interface' : true,
> +         'test-empty-success' : true,
> +         'test-channel' : true,
> +         'test-stream-device' : true,
> +         'test-listen' : true,
> +         'test-record' : true,
> +         'test-display-no-ssl' : false,
> +         'test-display-streaming' : false,
> +         'test-playback' : false,
> +         'test-display-resolution-changes' : false,
> +         'test-two-servers' : false,
> +         'test-display-width-stride' : false}
>  

About indentation.
Why 2 spaces instead of 4 like all other code?
Why not using this indentation:

tests = {
  'test-codecs-parsing' : true,
  'test-options' : true,
  ...
}

>  if spice_server_has_sasl
> -  tests += [['test-sasl', true]]
> +  tests += {'test-sasl': true}
>  endif
>  
>  if spice_server_has_gstreamer
> -  tests += [['test-gst', false]]
> +  tests += {'test-gst' : false}
>    if get_option('extra-checks')
>      test('video-encoders', files('video-encoders'))
>    endif
>  endif
>  
> -foreach t : tests
> -  test_name = t[0]
> -  is_test = t[1]
> +foreach test_name, is_test : tests
>    exe = executable(test_name,
>                     sources : '@0@.c'.format(test_name),
>                     link_with : test_libs,


A problem with hash is that the order of the items is not important
while on array it is so is possible that the order of generation
could change based on Meson versions or implementation/optimization.
Is something you have considered?
I would prefer to see test executed in a specific defined order.

Frediano
On 1/30/19 11:25 AM, Frediano Ziglio wrote:
>>
>> Since meson 0.48 it is possible to 'add' to dictionaries as well. Make
>> use of this feature in our build.
>>
>> http://mesonbuild.com/Release-notes-for-0-48-0.html#dictionary-addition
>>
>> Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
>> ---
>>  meson.build              |  2 +-
>>  server/tests/meson.build | 54 +++++++++++++++++++---------------------
>>  2 files changed, 26 insertions(+), 30 deletions(-)
>>
>> diff --git a/meson.build b/meson.build
>> index 811099c6..29af6b04 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -4,7 +4,7 @@
>>  project('spice', 'c',
>>          version : run_command('build-aux/git-version-gen',
>>          '${MESON_SOURCE_ROOT}/.tarball-version', check :
>>          true).stdout().strip(),
>>          license : 'LGPLv2.1',
>> -        meson_version : '>= 0.47.2')
>> +        meson_version : '>= 0.48.0')
>>  
>>  message('Updating submodules')
>>  run_command('build-aux/meson/check-spice-common', check : true)
>> diff --git a/server/tests/meson.build b/server/tests/meson.build
>> index b79b1108..37c94120 100644
>> --- a/server/tests/meson.build
>> +++ b/server/tests/meson.build
>> @@ -31,45 +31,41 @@ foreach lib, params : stat_test_libs
>>                                install : false)
>>  endforeach
>>  
>> -tests = [
>> -  ['test-codecs-parsing', true],
>> -  ['test-options', true],
>> -  ['test-stat', true],
>> -  ['test-stream', true],
>> -  ['test-agent-msg-filter', true],
>> -  ['test-loop', true],
>> -  ['test-qxl-parsing', true],
>> -  ['test-stat-file', true],
>> -  ['test-leaks', true],
>> -  ['test-vdagent', true],
>> -  ['test-fail-on-null-core-interface', true],
>> -  ['test-empty-success', true],
>> -  ['test-channel', true],
>> -  ['test-stream-device', true],
>> -  ['test-listen', true],
>> -  ['test-record', true],
>> -  ['test-display-no-ssl', false],
>> -  ['test-display-streaming', false],
>> -  ['test-playback', false],
>> -  ['test-display-resolution-changes', false],
>> -  ['test-two-servers', false],
>> -  ['test-display-width-stride', false],
>> -]
>> +tests = {'test-codecs-parsing' : true,
>> +         'test-options' : true,
>> +         'test-stat' : true,
>> +         'test-stream' : true,
>> +         'test-agent-msg-filter' : true,
>> +         'test-loop' : true,
>> +         'test-qxl-parsing' : true,
>> +         'test-stat-file' : true,
>> +         'test-leaks' : true,
>> +         'test-vdagent' : true,
>> +         'test-fail-on-null-core-interface' : true,
>> +         'test-empty-success' : true,
>> +         'test-channel' : true,
>> +         'test-stream-device' : true,
>> +         'test-listen' : true,
>> +         'test-record' : true,
>> +         'test-display-no-ssl' : false,
>> +         'test-display-streaming' : false,
>> +         'test-playback' : false,
>> +         'test-display-resolution-changes' : false,
>> +         'test-two-servers' : false,
>> +         'test-display-width-stride' : false}
>>  
> 
> About indentation.
> Why 2 spaces instead of 4 like all other code?
> Why not using this indentation:
> 
> tests = {
>   'test-codecs-parsing' : true,
>   'test-options' : true,
>   ...
> }

Fixed.

> 
>>  if spice_server_has_sasl
>> -  tests += [['test-sasl', true]]
>> +  tests += {'test-sasl': true}
>>  endif
>>  
>>  if spice_server_has_gstreamer
>> -  tests += [['test-gst', false]]
>> +  tests += {'test-gst' : false}
>>    if get_option('extra-checks')
>>      test('video-encoders', files('video-encoders'))
>>    endif
>>  endif
>>  
>> -foreach t : tests
>> -  test_name = t[0]
>> -  is_test = t[1]
>> +foreach test_name, is_test : tests
>>    exe = executable(test_name,
>>                     sources : '@0@.c'.format(test_name),
>>                     link_with : test_libs,
> 
> 
> A problem with hash is that the order of the items is not important
> while on array it is so is possible that the order of generation
> could change based on Meson versions or implementation/optimization.
> Is something you have considered?
> I would prefer to see test executed in a specific defined order.
> 

Hm, I did not consider the out-of-order nature of dictionaries, and
there is no way to ensure the tests will always be executed in the same
order.