Message ID | 20230630234839.14716-1-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | ui: Link dbus-display with pixman again | expand |
Hi On Sat, Jul 1, 2023 at 1:49 AM Philippe Mathieu-Daudé <philmd@linaro.org> wrote: > Since its introduction in commit 142ca628a7 ("ui: add a D-Bus > display backend"), dbus_display1 depends on pixman. > Unfortunatly the refactor commit 1222070e77 ("meson: ensure > dbus-display generated code is built before other units") > dropped that dependency. Recently commit 6cc5a6159a ("ui/dbus: > win32 support") expose this problem: > > In file included from include/ui/console.h:4, > from ui/dbus.h:31, > from ../audio/dbusaudio.c:36: > include/ui/qemu-pixman.h:12:10: fatal error: pixman.h: No such file or > directory > 12 | #include <pixman.h> > | ^~~~~~~~~~ > > Restore the missing dependency on pixman. > I fail to understand how this would help. dbus-display1 unit is pure GIO/GDBus code, no pixman involved. The derived library dependency is then used to build and link the dbus ui/ module. audio/dbus currently requires pixman because it compiles against units from ui/dbus, which introduces some indirect pixman dependency from ui/console. It would be worth working on making pixman optional altogether ( https://gitlab.com/qemu-project/qemu/-/issues/1172), I will try to look at it. thanks > Reported-by: Frederic Bezies <fredbezies@gmail.com> > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1739 > Fixes: 1222070e77 ("meson: ensure dbus-display generated code is built > before other units") > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > ui/meson.build | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/ui/meson.build b/ui/meson.build > index d81609fb0e..cb178dd095 100644 > --- a/ui/meson.build > +++ b/ui/meson.build > @@ -90,7 +90,7 @@ if dbus_display > '--interface-prefix', > 'org.qemu.', > '--c-namespace', 'QemuDBus', > '--generate-c-code', '@BASENAME@ > ']) > - dbus_display1_lib = static_library('dbus-display1', dbus_display1, > dependencies: gio) > + dbus_display1_lib = static_library('dbus-display1', dbus_display1, > dependencies: [gio, pixman]) > dbus_display1_dep = declare_dependency(link_with: dbus_display1_lib, > include_directories: include_directories('.')) > dbus_ss.add(when: [gio, pixman, dbus_display1_dep], > if_true: [files( > -- > 2.38.1 > > >
On 7/3/23 11:21, Marc-André Lureau wrote: > Hi > > On Sat, Jul 1, 2023 at 1:49 AM Philippe Mathieu-Daudé <philmd@linaro.org > <mailto:philmd@linaro.org>> wrote: > > Since its introduction in commit 142ca628a7 ("ui: add a D-Bus > display backend"), dbus_display1 depends on pixman. > Unfortunatly the refactor commit 1222070e77 ("meson: ensure > dbus-display generated code is built before other units") > dropped that dependency. Recently commit 6cc5a6159a ("ui/dbus: > win32 support") expose this problem: > > In file included from include/ui/console.h:4, > from ui/dbus.h:31, > from ../audio/dbusaudio.c:36: > include/ui/qemu-pixman.h:12:10: fatal error: pixman.h: No such file or directory > 12 | #include <pixman.h> > | ^~~~~~~~~~ > > Restore the missing dependency on pixman. > > > I fail to understand how this would help. dbus-display1 unit is pure GIO/GDBus code, no > pixman involved. The derived library dependency is then used to build and link the dbus > ui/ module. meson dependencies > - dbus_display1_lib = static_library('dbus-display1', dbus_display1, dependencies: gio) > + dbus_display1_lib = static_library('dbus-display1', dbus_display1, dependencies: > [gio, pixman]) like so, also include the set of -Iinclude-path-options to use when building the items that use it. Therefore, for the moment, Phil is correct. While dbus-display1 might not use pixman itself, ui/dbus.h certainly does. Perhaps the usage in ui/dbus.h is the greater mistake. r~
diff --git a/ui/meson.build b/ui/meson.build index d81609fb0e..cb178dd095 100644 --- a/ui/meson.build +++ b/ui/meson.build @@ -90,7 +90,7 @@ if dbus_display '--interface-prefix', 'org.qemu.', '--c-namespace', 'QemuDBus', '--generate-c-code', '@BASENAME@']) - dbus_display1_lib = static_library('dbus-display1', dbus_display1, dependencies: gio) + dbus_display1_lib = static_library('dbus-display1', dbus_display1, dependencies: [gio, pixman]) dbus_display1_dep = declare_dependency(link_with: dbus_display1_lib, include_directories: include_directories('.')) dbus_ss.add(when: [gio, pixman, dbus_display1_dep], if_true: [files(
Since its introduction in commit 142ca628a7 ("ui: add a D-Bus display backend"), dbus_display1 depends on pixman. Unfortunatly the refactor commit 1222070e77 ("meson: ensure dbus-display generated code is built before other units") dropped that dependency. Recently commit 6cc5a6159a ("ui/dbus: win32 support") expose this problem: In file included from include/ui/console.h:4, from ui/dbus.h:31, from ../audio/dbusaudio.c:36: include/ui/qemu-pixman.h:12:10: fatal error: pixman.h: No such file or directory 12 | #include <pixman.h> | ^~~~~~~~~~ Restore the missing dependency on pixman. Reported-by: Frederic Bezies <fredbezies@gmail.com> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1739 Fixes: 1222070e77 ("meson: ensure dbus-display generated code is built before other units") Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- ui/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)