summaryrefslogtreecommitdiffstats
path: root/meta/recipes-gnome/gdk-pixbuf
diff options
context:
space:
mode:
authorAlexander Kanavin <alex.kanavin@gmail.com>2021-05-13 22:56:15 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-05-14 07:57:27 +0100
commit035f8548fe1827df6522f21584485891c133aca7 (patch)
tree71779f4ebfb2085b2c1629f48fd3fcc1efc8b2f8 /meta/recipes-gnome/gdk-pixbuf
parentec94923ec7de87dbd9cd4db98cbb05fd4b020b4a (diff)
downloadpoky-035f8548fe1827df6522f21584485891c133aca7.tar.gz
gdk-pixbuf: rewrite the cross-build support for tests
It was scattered over four different patches, and wasn't guarded by a configuration option. Hopefully the new patch is acceptable to upstream. (From OE-Core rev: 92fc28498fcb9bdcea743961729b21b7e6c6b1fa) Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-gnome/gdk-pixbuf')
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Add-use_prebuilt_tools-option.patch171
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Fix-a-couple-of-decisions-around-cross-compilation.patch38
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-and-pixdata-cross-compile-fa.patch95
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-cross-compile-failure.patch28
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch29
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.42.6.bb9
6 files changed, 176 insertions, 194 deletions
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Add-use_prebuilt_tools-option.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Add-use_prebuilt_tools-option.patch
new file mode 100644
index 0000000000..dc8d6ce724
--- /dev/null
+++ b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Add-use_prebuilt_tools-option.patch
@@ -0,0 +1,171 @@
1From ba73bb0f3d2023839bc3b681c49b7ec1192cceb4 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Sat, 8 May 2021 21:58:54 +0200
4Subject: [PATCH] Add use_prebuilt_tools option
5
6This allows using the gdk-pixbuf tools from the host to
7build and install tests in a cross-compile scenarion.
8
9Upstream-Status: Pending
10Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
11
12---
13 gdk-pixbuf/meson.build | 11 +++++++++--
14 meson.build | 6 +++---
15 meson_options.txt | 4 ++++
16 tests/meson.build | 16 ++++++++--------
17 thumbnailer/meson.build | 24 ++++++++++++++++++------
18 5 files changed, 42 insertions(+), 19 deletions(-)
19
20diff --git a/gdk-pixbuf/meson.build b/gdk-pixbuf/meson.build
21index 8b0590b..7331491 100644
22--- a/gdk-pixbuf/meson.build
23+++ b/gdk-pixbuf/meson.build
24@@ -342,13 +342,20 @@ foreach bin: gdkpixbuf_bin
25 include_directories: [ root_inc, gdk_pixbuf_inc ],
26 c_args: common_cflags + gdk_pixbuf_cflags,
27 install: true)
28- meson.override_find_program(bin_name, bin)
29+ if not get_option('use_prebuilt_tools')
30+ meson.override_find_program(bin_name, bin)
31+ endif
32
33 # Used in tests
34 set_variable(bin_name.underscorify(), bin)
35 endforeach
36
37-if not meson.is_cross_build()
38+if get_option('use_prebuilt_tools')
39+ gdk_pixbuf_query_loaders = find_program('gdk-pixbuf-query-loaders', required: true)
40+ gdk_pixbuf_pixdata = find_program('gdk-pixbuf-pixdata', required: true)
41+endif
42+
43+if not meson.is_cross_build() or get_option('use_prebuilt_tools')
44 # The 'loaders.cache' used for testing, so we don't accidentally
45 # load the installed cache; we always build it by default
46 loaders_cache = custom_target('loaders.cache',
47diff --git a/meson.build b/meson.build
48index 7a1409b..0bc73eb 100644
49--- a/meson.build
50+++ b/meson.build
51@@ -403,16 +403,16 @@ subdir('gdk-pixbuf')
52 # i18n
53 subdir('po')
54
55-if not meson.is_cross_build()
56+if not meson.is_cross_build() or get_option('use_prebuilt_tools')
57 subdir('tests')
58- subdir('thumbnailer')
59 endif
60+subdir('thumbnailer')
61
62 # Documentation
63 build_docs = get_option('gtk_doc') or get_option('docs')
64 subdir('docs')
65
66-if not meson.is_cross_build()
67+if not meson.is_cross_build() or get_option('use_prebuilt_tools')
68 meson.add_install_script('build-aux/post-install.py',
69 gdk_pixbuf_bindir,
70 gdk_pixbuf_libdir,
71diff --git a/meson_options.txt b/meson_options.txt
72index 0ee6718..cc29855 100644
73--- a/meson_options.txt
74+++ b/meson_options.txt
75@@ -49,4 +49,8 @@ option('gio_sniffing',
76 description: 'Perform file type detection using GIO (Unused on MacOS and Windows)',
77 type: 'boolean',
78 value: true)
79+option('use_prebuilt_tools',
80+ description: 'Use prebuilt gdk-pixbuf tools from the host for cross-compilation',
81+ type: 'boolean',
82+ value: false)
83
84diff --git a/tests/meson.build b/tests/meson.build
85index 7c6cb11..1029e6a 100644
86--- a/tests/meson.build
87+++ b/tests/meson.build
88@@ -5,6 +5,12 @@
89 # $PATH. Ideally we should use gnome.compile_resources() and let Meson deal with
90 # this problem: See https://github.com/mesonbuild/meson/issues/8266.
91 if enabled_loaders.contains('png') and host_system != 'windows'
92+
93+ resources_deps = [loaders_cache,]
94+ if not get_option('use_prebuilt_tools')
95+ resources_deps += [gdk_pixbuf_pixdata,]
96+ endif
97+
98 # Resources; we cannot use gnome.compile_resources() here, because we need to
99 # override the environment in order to use the utilities we just built instead
100 # of the system ones
101@@ -21,10 +27,7 @@ if enabled_loaders.contains('png') and host_system != 'windows'
102 '@INPUT@',
103 '@OUTPUT@',
104 ],
105- depends: [
106- gdk_pixbuf_pixdata,
107- loaders_cache,
108- ],
109+ depends: resources_deps,
110 )
111
112 resources_h = custom_target('resources.h',
113@@ -40,10 +43,7 @@ if enabled_loaders.contains('png') and host_system != 'windows'
114 '@INPUT@',
115 '@OUTPUT@',
116 ],
117- depends: [
118- gdk_pixbuf_pixdata,
119- loaders_cache,
120- ],
121+ depends: resources_deps,
122 )
123 no_resources = false
124 else
125diff --git a/thumbnailer/meson.build b/thumbnailer/meson.build
126index b6a206d..9336c21 100644
127--- a/thumbnailer/meson.build
128+++ b/thumbnailer/meson.build
129@@ -6,13 +6,29 @@ bin = executable('gdk-pixbuf-thumbnailer',
130 ],
131 dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ],
132 install: true)
133-meson.override_find_program('gdk-pixbuf-thumbnailer', bin)
134+if not get_option('use_prebuilt_tools')
135+ meson.override_find_program('gdk-pixbuf-thumbnailer', bin)
136+endif
137
138 gdk_pixbuf_print_mime_types = executable('gdk-pixbuf-print-mime-types',
139 'gdk-pixbuf-print-mime-types.c',
140+ install: true,
141 c_args: common_cflags,
142 dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ])
143
144+if get_option('use_prebuilt_tools')
145+ gdk_pixbuf_print_mime_types = find_program('gdk-pixbuf-print-mime-types', required: true)
146+endif
147+
148+thumbnailer_deps = [loaders_cache,]
149+
150+if not get_option('use_prebuilt_tools')
151+ thumbnailer_deps += [
152+ gdk_pixbuf_print_mime_types,
153+ gdk_pixbuf_pixdata,
154+ ]
155+endif
156+
157 custom_target('thumbnailer',
158 input: 'gdk-pixbuf-thumbnailer.thumbnailer.in',
159 output: 'gdk-pixbuf-thumbnailer.thumbnailer',
160@@ -25,10 +41,6 @@ custom_target('thumbnailer',
161 '@INPUT@',
162 '@OUTPUT@',
163 ],
164- depends: [
165- gdk_pixbuf_print_mime_types,
166- gdk_pixbuf_pixdata,
167- loaders_cache,
168- ],
169+ depends: thumbnailer_deps,
170 install: true,
171 install_dir: join_paths(gdk_pixbuf_datadir, 'thumbnailers'))
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Fix-a-couple-of-decisions-around-cross-compilation.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Fix-a-couple-of-decisions-around-cross-compilation.patch
deleted file mode 100644
index e461404918..0000000000
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Fix-a-couple-of-decisions-around-cross-compilation.patch
+++ /dev/null
@@ -1,38 +0,0 @@
1From be8a47e0c21e5577d4f5669d339dfec6299b25be Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 14 Feb 2019 18:06:25 +0100
4Subject: [PATCH] Generate loaders.cache using a native tool when
5 cross-compiling
6
7Otherwise meson would attempt to run a target binary.
8
9Upstream-Status: Pending
10Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
11
12---
13 gdk-pixbuf/meson.build | 12 ++++++++++--
14 1 file changed, 10 insertions(+), 2 deletions(-)
15
16diff --git a/gdk-pixbuf/meson.build b/gdk-pixbuf/meson.build
17index 5cddbec..78c8bd3 100644
18--- a/gdk-pixbuf/meson.build
19+++ b/gdk-pixbuf/meson.build
20@@ -324,8 +324,16 @@ if not meson.is_cross_build()
21 build_by_default: true)
22 loaders_dep = declare_dependency(sources: [ loaders_cache ])
23 else
24- loaders_cache = []
25- loaders_dep = declare_dependency()
26+ loaders_cache = custom_target('loaders.cache',
27+ output: 'loaders.cache',
28+ capture: true,
29+ command: [
30+ 'gdk-pixbuf-query-loaders',
31+ dynamic_loaders,
32+ ],
33+ depends: dynamic_loaders_dep,
34+ build_by_default: true)
35+ loaders_dep = declare_dependency(sources: [ loaders_cache ])
36 endif
37
38 pkgconfig = import('pkgconfig')
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-and-pixdata-cross-compile-fa.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-and-pixdata-cross-compile-fa.patch
deleted file mode 100644
index 2aa9164750..0000000000
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-and-pixdata-cross-compile-fa.patch
+++ /dev/null
@@ -1,95 +0,0 @@
1From dcaf3106e2cca27f728a8bd26127430500a1136e Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Fri, 22 Feb 2019 13:22:06 +0100
4Subject: [PATCH] Work-around thumbnailer and pixdata cross-compile failure
5
6Use native gdk-pixbuf-print-mime-types and gdk-pixbuf-pixdata
7when generating the thumbnail metadata and resources.
8
9This works but the mime types will come from native
10loader.cache (which will only contain in-tree loaders), not from the
11target loader.cache.
12
13The upstream issue is https://bugzilla.gnome.org/show_bug.cgi?id=779057
14
15Upstream-Status: Inappropriate [workaround]
16Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
17
18---
19 tests/meson.build | 11 +++++++++--
20 thumbnailer/meson.build | 23 ++++++++++++++++++++++-
21 2 files changed, 31 insertions(+), 3 deletions(-)
22
23diff --git a/tests/meson.build b/tests/meson.build
24index 7c6cb11..07121f1 100644
25--- a/tests/meson.build
26+++ b/tests/meson.build
27@@ -8,13 +8,20 @@ if enabled_loaders.contains('png') and host_system != 'windows'
28 # Resources; we cannot use gnome.compile_resources() here, because we need to
29 # override the environment in order to use the utilities we just built instead
30 # of the system ones
31+
32+ if not meson.is_cross_build()
33+ pixdata_binary = gdk_pixbuf_pixdata.full_path()
34+ else
35+ pixdata_binary = 'gdk-pixbuf-pixdata'
36+ endif
37+
38 resources_c = custom_target('resources.c',
39 input: 'resources.gresource.xml',
40 output: 'resources.c',
41 command: [
42 gen_resources,
43 '--glib-compile-resources=@0@'.format(glib_compile_resources.full_path()),
44- '--pixdata=@0@'.format(gdk_pixbuf_pixdata.full_path()),
45+ '--pixdata=@0@'.format(pixdata_binary),
46 '--loaders=@0@'.format(loaders_cache.full_path()),
47 '--sourcedir=@0@'.format(meson.current_source_dir()),
48 '--source',
49@@ -33,7 +40,7 @@ if enabled_loaders.contains('png') and host_system != 'windows'
50 command: [
51 gen_resources,
52 '--glib-compile-resources=@0@'.format(glib_compile_resources.full_path()),
53- '--pixdata=@0@'.format(gdk_pixbuf_pixdata.full_path()),
54+ '--pixdata=@0@'.format(pixdata_binary),
55 '--loaders=@0@'.format(loaders_cache.full_path()),
56 '--sourcedir=@0@'.format(meson.current_source_dir()),
57 '--header',
58diff --git a/thumbnailer/meson.build b/thumbnailer/meson.build
59index 8c741e0..5a3b52a 100644
60--- a/thumbnailer/meson.build
61+++ b/thumbnailer/meson.build
62@@ -14,7 +14,27 @@ gdk_pixbuf_print_mime_types = executable('gdk-pixbuf-print-mime-types',
63 install: true,
64 dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ])
65
66-custom_target('thumbnailer',
67+if meson.is_cross_build()
68+ custom_target('thumbnailer',
69+ input: 'gdk-pixbuf-thumbnailer.thumbnailer.in',
70+ output: 'gdk-pixbuf-thumbnailer.thumbnailer',
71+ command: [
72+ gen_thumbnailer,
73+ '--printer=gdk-pixbuf-print-mime-types',
74+ '--pixdata=@0@'.format(gdk_pixbuf_pixdata.full_path()),
75+ '--loaders=@0@'.format(loaders_cache.full_path()),
76+ '--bindir=@0@'.format(gdk_pixbuf_bindir),
77+ '@INPUT@',
78+ '@OUTPUT@',
79+ ],
80+ depends: [
81+ gdk_pixbuf_print_mime_types,
82+ gdk_pixbuf_pixdata,
83+ ],
84+ install: true,
85+ install_dir: join_paths(gdk_pixbuf_datadir, 'thumbnailers'))
86+else
87+ custom_target('thumbnailer',
88 input: 'gdk-pixbuf-thumbnailer.thumbnailer.in',
89 output: 'gdk-pixbuf-thumbnailer.thumbnailer',
90 command: [
91@@ -33,3 +53,4 @@ custom_target('thumbnailer',
92 ],
93 install: true,
94 install_dir: join_paths(gdk_pixbuf_datadir, 'thumbnailers'))
95+endif
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-cross-compile-failure.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-cross-compile-failure.patch
deleted file mode 100644
index 110b32a490..0000000000
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-cross-compile-failure.patch
+++ /dev/null
@@ -1,28 +0,0 @@
1From 8c7ced988def52654946458a3779e383b27f14f7 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 14 Feb 2019 17:56:10 +0100
4Subject: [PATCH] Work-around thumbnailer cross-compile failure
5
6Install gdk-pixbuf-print-mime-types that's needed for thumbnail
7metadata generation.
8
9The upstream issue is https://bugzilla.gnome.org/show_bug.cgi?id=779057
10
11Upstream-Status: Inappropriate [workaround]
12Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
13---
14 thumbnailer/meson.build | 1 +
15 1 file changed, 1 insertion(+)
16
17diff --git a/thumbnailer/meson.build b/thumbnailer/meson.build
18index e801144..aaafec8 100644
19--- a/thumbnailer/meson.build
20+++ b/thumbnailer/meson.build
21@@ -10,6 +10,7 @@ executable('gdk-pixbuf-thumbnailer',
22 gdk_pixbuf_print_mime_types = executable('gdk-pixbuf-print-mime-types',
23 'gdk-pixbuf-print-mime-types.c',
24 c_args: common_cflags,
25+ install: true,
26 dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ])
27
28 custom_target('thumbnailer',
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch
deleted file mode 100644
index cd9f88befc..0000000000
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch
+++ /dev/null
@@ -1,29 +0,0 @@
1From d02a8e202d2fe5caf3449683e0ccdf84a482a325 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Wed, 5 Jun 2019 14:17:55 +0200
4Subject: [PATCH] Build thumbnailer and tests also in cross builds.
5
6Upstream-Status: Inappropriate [relies on oe-core specific hacks]
7Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
8
9---
10 meson.build | 6 ++----
11 1 file changed, 2 insertions(+), 4 deletions(-)
12
13diff --git a/meson.build b/meson.build
14index 73034d1..d114016 100644
15--- a/meson.build
16+++ b/meson.build
17@@ -378,10 +378,8 @@ subdir('gdk-pixbuf')
18 # i18n
19 subdir('po')
20
21-if not meson.is_cross_build()
22- subdir('tests')
23- subdir('thumbnailer')
24-endif
25+subdir('tests')
26+subdir('thumbnailer')
27
28 # Documentation
29 build_docs = get_option('gtk_doc') or get_option('docs')
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.42.6.bb b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.42.6.bb
index e28423efd9..f171464f4d 100644
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.42.6.bb
+++ b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.42.6.bb
@@ -20,10 +20,7 @@ MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
20SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \ 20SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
21 file://run-ptest \ 21 file://run-ptest \
22 file://fatal-loader.patch \ 22 file://fatal-loader.patch \
23 file://0001-Work-around-thumbnailer-cross-compile-failure.patch \ 23 file://0001-Add-use_prebuilt_tools-option.patch \
24 file://0001-Fix-a-couple-of-decisions-around-cross-compilation.patch \
25 file://0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch \
26 file://0001-Work-around-thumbnailer-and-pixdata-cross-compile-fa.patch \
27 " 24 "
28 25
29SRC_URI[sha256sum] = "c4a6b75b7ed8f58ca48da830b9fa00ed96d668d3ab4b1f723dcf902f78bde77f" 26SRC_URI[sha256sum] = "c4a6b75b7ed8f58ca48da830b9fa00ed96d668d3ab4b1f723dcf902f78bde77f"
@@ -47,6 +44,10 @@ PACKAGECONFIG[jpeg] = "-Djpeg=true,-Djpeg=false,jpeg"
47PACKAGECONFIG[tiff] = "-Dtiff=true,-Dtiff=false,tiff" 44PACKAGECONFIG[tiff] = "-Dtiff=true,-Dtiff=false,tiff"
48PACKAGECONFIG[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false" 45PACKAGECONFIG[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false"
49 46
47EXTRA_OEMESON_class-target = " \
48 -Duse_prebuilt_tools=true \
49"
50
50PACKAGES =+ "${PN}-xlib" 51PACKAGES =+ "${PN}-xlib"
51 52
52# For GIO image type sniffing 53# For GIO image type sniffing