[gimp] icons: more factorization of icon installation/build code.
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] icons: more factorization of icon installation/build code.
- Date: Tue, 1 Feb 2022 12:17:59 +0000 (UTC)
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]