[gimp] icons: more factorization of icon installation/build code.



commit 407f54f33e085c867f62e0cecf0b4f387c17e7d6
Author: Jehan <jehan girinstud io>
Date:   Tue Feb 1 12:09:39 2022 +0100

    icons: more factorization of icon installation/build code.
    
    Though the Color and Symbolic icon themes will have a different build
    process and naming scheme for their icons, the base list is meant to be
    the same by maintenance principle. So I am moving out the lists to the
    icons/ directory's meson file.
    
    Bumping meson requirement to 0.53.0 because I need to ability to use a
    variable as dictionary key (not only string literals), which appeared in
    this version. Meson 0.53.0 was released 2020-01-07 and seem to be used
    in any stable distribution released since 2020. In any case, it seems
    widespread enough to bump it now for our dev branch.

 icons/Color/meson.build    | 65 +-----------------------------------------
 icons/Symbolic/meson.build | 67 ++------------------------------------------
 icons/meson.build          | 70 ++++++++++++++++++++++++++++++++++++++++++++++
 meson.build                |  2 +-
 4 files changed, 74 insertions(+), 130 deletions(-)
---
diff --git a/icons/Color/meson.build b/icons/Color/meson.build
index 405cbdcf5e..ecd2d423be 100644
--- a/icons/Color/meson.build
+++ b/icons/Color/meson.build
@@ -1,73 +1,10 @@
-
 if have_vector_icons
-  install_icons = [
-    {
-      'outdir': 'scalable',
-      'indir':  'scalable',
-      'suffix': '.svg',
-      'files':  [ 'scalable',
-                  'color-selectors', 'controllers', 'display-filters',
-                  'prefs', 'templates', 'tools' ],
-    },
-    {
-      'outdir': '64x64',
-      'indir':  '64',
-      'suffix': '.png',
-      'files':  [ 'bitmap_64-always', ],
-    },
-  ]
-
   # Only process the 64x64 icons for the 2 resource icons.
   subdir('64')
 else
-  build_icons = {
-    '12':  [ 'bitmap_12', ],
-    '16':  [ 'bitmap_16',
-             'color-selectors', 'controllers', 'display-filters',
-             'prefs', 'templates', 'tools' ],
-    '18':  [ 'bitmap_18', ],
-    '20':  [ 'bitmap_20', ],
-    '22':  [ 'bitmap_22', ],
-    '24':  [ 'bitmap_24', 'templates', 'tools' ],
-    '32':  [ 'bitmap_32', ],
-    '48':  [ 'bitmap_48', 'prefs' ],
-    '64':  [ 'bitmap_64', 'bitmap_64-system', ],
-    '96':  [ 'bitmap_96', ],
-    '128': [ 'bitmap_128', ],
-    '192': [ 'bitmap_192', ],
-    '256': [ 'bitmap_256', ],
-  }
-
-  foreach size, inputs : build_icons
-    dup_icons = []
-    foreach input : inputs
-      icon_list = '../icon-lists/@0@.list'.format(input)
-      py_cmd = 'print(",".join([line.strip() for line in open("@0@") if line.strip() != "" and 
line.strip()[0] != "#"]))'
-      cmd = run_command('python3', '-c',
-                        py_cmd.format(icon_list),
-                        check: true)
-      dup_icons += cmd.stdout().strip().split(',')
-    endforeach
-    source_icons = []
-    foreach icon : dup_icons
-      if not source_icons.contains(icon)
-        # remove duplicates.
-        source_icons += [icon]
-      endif
-    endforeach
-
+  foreach size, source_icons : build_icons
     subdir(size)
   endforeach
-
-  # These are available as PNG directly.
-  install_icons = [
-    {
-      'outdir': '64x64',
-      'indir':  '64',
-      'suffix': '.png',
-      'files':  [ 'bitmap_64-always', ],
-    },
-  ]
 endif
 
 install_data('index.theme',
diff --git a/icons/Symbolic/meson.build b/icons/Symbolic/meson.build
index 60359d0911..f574bdcb69 100644
--- a/icons/Symbolic/meson.build
+++ b/icons/Symbolic/meson.build
@@ -1,60 +1,7 @@
-
-if have_vector_icons
-  install_icons = [
-    {
-      'outdir': 'scalable',
-      'indir':  'scalable',
-      'suffix': '-symbolic.svg',
-      'files':  [ 'scalable',
-                  'color-selectors', 'controllers', 'display-filters',
-                  'prefs', 'templates', 'tools' ],
-    },
-    {
-      'outdir': '64x64',
-      'indir':  '64',
-      'suffix': '.png',
-      'files':  [ 'bitmap_64-always', ],
-    },
-  ]
-else
+if not have_vector_icons
   gtk_encode_symbolic_svg = find_program('gtk-encode-symbolic-svg', native: true)
 
-  build_icons = {
-    '12':  [ 'bitmap_12', ],
-    '16':  [ 'bitmap_16',
-             'color-selectors', 'controllers', 'display-filters',
-             'prefs', 'templates', 'tools' ],
-    '18':  [ 'bitmap_18', ],
-    '20':  [ 'bitmap_20', ],
-    '22':  [ 'bitmap_22', ],
-    '24':  [ 'bitmap_24', 'tools' ],
-    '32':  [ 'bitmap_32', ],
-    '48':  [ 'bitmap_48', 'prefs' ],
-    '64':  [ 'bitmap_64', 'bitmap_64-system', ],
-    '96':  [ 'bitmap_96', ],
-    '128': [ 'bitmap_128', ],
-    '192': [ 'bitmap_192', ],
-    '256': [ 'bitmap_256', ],
-  }
-
-  foreach size, inputs : build_icons
-    dup_icons = []
-    foreach input : inputs
-      icon_list = '../icon-lists/@0@.list'.format(input)
-      py_cmd = 'print(",".join([line.strip() for line in open("@0@") if line.strip() != "" and 
line.strip()[0] != "#"]))'
-      cmd = run_command('python3', '-c',
-                        py_cmd.format(icon_list),
-                        check: true)
-      dup_icons += cmd.stdout().strip().split(',')
-    endforeach
-    source_icons = []
-    foreach icon : dup_icons
-      if not source_icons.contains(icon)
-        # remove duplicates.
-        source_icons += [icon]
-      endif
-    endforeach
-
+  foreach size, source_icons : build_icons
     # Note: I originally wanted to implement it here in a loop but
     # custom_target() doesn't accept an output path with a folder! So I
     # end up creating as many empty directories as generated sizes and
@@ -63,16 +10,6 @@ else
     # meson.build as it also installs some non-symbolic images.
     subdir(size)
   endforeach
-
-  # Install these directly from PNG sources.
-  install_icons = [
-    {
-      'outdir': '64x64',
-      'indir':  '64',
-      'suffix': '.png',
-      'files':  [ 'bitmap_64-always', ],
-    },
-  ]
 endif
 
 install_data('index.theme',
diff --git a/icons/meson.build b/icons/meson.build
index 9b36a5757f..b5e6242ca8 100644
--- a/icons/meson.build
+++ b/icons/meson.build
@@ -8,5 +8,75 @@ themes = [
 ]
 
 foreach theme : themes
+  # Install these always from PNG sources.
+  install_icons = [
+    {
+      'outdir': '64x64',
+      'indir':  '64',
+      'suffix': '.png',
+      'files':  [ 'bitmap_64-always', ],
+    },
+  ]
+
+  if have_vector_icons
+    if theme == 'Symbolic'
+      suffix = '-symbolic.svg'
+    else
+      suffix = '.svg'
+    endif
+
+    install_icons += [
+      {
+        'outdir': 'scalable',
+        'indir':  'scalable',
+        'suffix': suffix,
+        'files':  [ 'scalable',
+                    'color-selectors', 'controllers', 'display-filters',
+                    'prefs', 'templates', 'tools' ],
+      },
+    ]
+  else
+    source_list = {
+      '12':  [ 'bitmap_12', ],
+      '16':  [ 'bitmap_16',
+               'color-selectors', 'controllers', 'display-filters',
+               'prefs', 'templates', 'tools' ],
+      '18':  [ 'bitmap_18', ],
+      '20':  [ 'bitmap_20', ],
+      '22':  [ 'bitmap_22', ],
+      '24':  [ 'bitmap_24', 'templates', 'tools' ],
+      '32':  [ 'bitmap_32', ],
+      '48':  [ 'bitmap_48', 'prefs' ],
+      '64':  [ 'bitmap_64', 'bitmap_64-system', ],
+      '96':  [ 'bitmap_96', ],
+      '128': [ 'bitmap_128', ],
+      '192': [ 'bitmap_192', ],
+      '256': [ 'bitmap_256', ],
+    }
+
+    build_icons = {
+    }
+    foreach size, inputs : source_list
+      dup_icons = []
+      foreach input : inputs
+        icon_list = 'icon-lists/@0@.list'.format(input)
+        py_cmd = 'print(",".join([line.strip() for line in open("@0@") if line.strip() != "" and 
line.strip()[0] != "#"]))'
+        cmd = run_command('python3', '-c',
+                          py_cmd.format(icon_list),
+                          check: true)
+        dup_icons += cmd.stdout().strip().split(',')
+      endforeach
+      source_icons = []
+      foreach icon : dup_icons
+        if not source_icons.contains(icon)
+          # remove duplicates.
+          source_icons += [icon]
+        endif
+      endforeach
+
+      build_icons += {size: source_icons}
+    endforeach
+  endif
+
   subdir(theme)
 endforeach
diff --git a/meson.build b/meson.build
index 709c82260c..f22b534905 100644
--- a/meson.build
+++ b/meson.build
@@ -1,7 +1,7 @@
 project('gimp',
   'c', 'cpp',
   version: '2.99.9',
-  meson_version: '>=0.50.0',
+  meson_version: '>=0.53.0',
   default_options: [
     'cpp_std=gnu++14',
     'buildtype=debugoptimized',


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]