[PATCH 2/2] virt-viewer: add recipe


Markus Volk
 

Signed-off-by: Markus Volk <f_l_k@...>
---
...ata-meson.build-fix-for-recent-meson.patch | 44 +++++++++++++++++++
.../virt-viewer/virt-viewer_11.0.bb | 30 +++++++++++++
2 files changed, 74 insertions(+)
create mode 100644 recipes-extended/virt-viewer/virt-viewer/0001-data-me=
son.build-fix-for-recent-meson.patch
create mode 100644 recipes-extended/virt-viewer/virt-viewer_11.0.bb

diff --git a/recipes-extended/virt-viewer/virt-viewer/0001-data-meson.bui=
ld-fix-for-recent-meson.patch b/recipes-extended/virt-viewer/virt-viewer/=
0001-data-meson.build-fix-for-recent-meson.patch
new file mode 100644
index 0000000..5a4fe77
--- /dev/null
+++ b/recipes-extended/virt-viewer/virt-viewer/0001-data-meson.build-fix-=
for-recent-meson.patch
@@ -0,0 +1,44 @@
+From b2d3cde0ff9816c468986f2d62c67d0713a4c49e Mon Sep 17 00:00:00 2001
+From: Markus Volk <f_l_k@...>
+Date: Sat, 29 Oct 2022 15:35:23 +0200
+Subject: [PATCH] data/meson.build: fix for recent meson
+
+Signed-off-by: Markus Volk <f_l_k@...>
+
+Patch-Status: Backport
+
+---
+ data/meson.build | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/data/meson.build b/data/meson.build
+index d718491..4325108 100644
+--- a/data/meson.build
++++ b/data/meson.build
+@@ -2,7 +2,6 @@ if host_machine.system() !=3D 'windows'
+ desktop =3D 'remote-viewer.desktop'
+=20
+ i18n.merge_file (
+- desktop,
+ type: 'desktop',
+ input: desktop + '.in',
+ output: desktop,
+@@ -14,7 +13,6 @@ if host_machine.system() !=3D 'windows'
+ mimetypes =3D 'virt-viewer-mime.xml'
+=20
+ i18n.merge_file (
+- mimetypes,
+ type: 'xml',
+ input: mimetypes + '.in',
+ output: mimetypes,
+@@ -27,7 +25,6 @@ if host_machine.system() !=3D 'windows'
+ metainfo =3D 'remote-viewer.appdata.xml'
+=20
+ i18n.merge_file (
+- metainfo,
+ type: 'xml',
+ input: metainfo + '.in',
+ output: metainfo,
+--=20
+2.34.1
+
diff --git a/recipes-extended/virt-viewer/virt-viewer_11.0.bb b/recipes-e=
xtended/virt-viewer/virt-viewer_11.0.bb
new file mode 100644
index 0000000..a09f0cf
--- /dev/null
+++ b/recipes-extended/virt-viewer/virt-viewer_11.0.bb
@@ -0,0 +1,30 @@
+SUMMARY =3D "Virtual Machine Viewer"
+LICENSE =3D "GPL-2.0-only"
+LIC_FILES_CHKSUM =3D "file://COPYING;md5=3D59530bdf33659b29e73d4adb9f9f6=
552"
+
+# for librest support rest_0.7 would be needed
+DEPENDS =3D " \
+ desktop-file-utils-native \
+ glib-2.0 \
+ gtk+3 \
+ gtk-vnc \
+ libvirt \
+ libvirt-glib \
+ libxml2 \
+ spice-gtk \
+ spice-protocol \
+ vte \
+"
+
+SRC_URI =3D " \
+ git://gitlab.com/virt-viewer/virt-viewer.git;protocol=3Dhttps;branch=3D=
master \
+ file://0001-data-meson.build-fix-for-recent-meson.patch \
+"
+
+SRCREV =3D "8d8923d259b79c7c9ad3560a49be81dc0f38b88b"
+S =3D "${WORKDIR}/git"
+
+inherit meson pkgconfig gtk-icon-cache mime mime-xdg gobject-introspecti=
on
+
+FILES:${PN} +=3D "${datadir}"
+GIR_MESON_OPTION =3D ''
--=20
2.34.1


Bruce Ashfield
 

Markus,

My comments about introducing the use case of the new recipe, how it was tested, etc, apply to this commit as well.

See inline for more questions.

On Sun, Oct 30, 2022 at 12:13 PM Markus Volk <f_l_k@...> wrote:
Signed-off-by: Markus Volk <f_l_k@...>
---
 ...ata-meson.build-fix-for-recent-meson.patch | 44 +++++++++++++++++++
 .../virt-viewer/virt-viewer_11.0.bb           | 30 +++++++++++++
 2 files changed, 74 insertions(+)
 create mode 100644 recipes-extended/virt-viewer/virt-viewer/0001-data-meson.build-fix-for-recent-meson.patch
 create mode 100644 recipes-extended/virt-viewer/virt-viewer_11.0.bb

diff --git a/recipes-extended/virt-viewer/virt-viewer/0001-data-meson.build-fix-for-recent-meson.patch b/recipes-extended/virt-viewer/virt-viewer/0001-data-meson.build-fix-for-recent-meson.patch
new file mode 100644
index 0000000..5a4fe77
--- /dev/null
+++ b/recipes-extended/virt-viewer/virt-viewer/0001-data-meson.build-fix-for-recent-meson.patch
@@ -0,0 +1,44 @@
+From b2d3cde0ff9816c468986f2d62c67d0713a4c49e Mon Sep 17 00:00:00 2001
+From: Markus Volk <f_l_k@...>
+Date: Sat, 29 Oct 2022 15:35:23 +0200
+Subject: [PATCH] data/meson.build: fix for recent meson
+
+Signed-off-by: Markus Volk <f_l_k@...>
+
+Patch-Status: Backport
Since this is a git based recipe, there's no need to stay on the release tag. Bumping the SRCREV to pickup a patch like this is preferable to carrying a patch as part of the recipe.
 
+
+---
+ data/meson.build | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/data/meson.build b/data/meson.build
+index d718491..4325108 100644
+--- a/data/meson.build
++++ b/data/meson.build
+@@ -2,7 +2,6 @@ if host_machine.system() != 'windows'
+   desktop = 'remote-viewer.desktop'
+
+   i18n.merge_file (
+-    desktop,
+     type: 'desktop',
+     input: desktop + '.in',
+     output: desktop,
+@@ -14,7 +13,6 @@ if host_machine.system() != 'windows'
+   mimetypes = 'virt-viewer-mime.xml'
+
+   i18n.merge_file (
+-    mimetypes,
+     type: 'xml',
+     input: mimetypes + '.in',
+     output: mimetypes,
+@@ -27,7 +25,6 @@ if host_machine.system() != 'windows'
+   metainfo = 'remote-viewer.appdata.xml'
+
+   i18n.merge_file (
+-    metainfo,
+     type: 'xml',
+     input: metainfo + '.in',
+     output: metainfo,
+--
+2.34.1
+
diff --git a/recipes-extended/virt-viewer/virt-viewer_11.0.bb b/recipes-extended/virt-viewer/virt-viewer_11.0.bb
new file mode 100644
index 0000000..a09f0cf
--- /dev/null
+++ b/recipes-extended/virt-viewer/virt-viewer_11.0.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Virtual Machine Viewer"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+# for librest support rest_0.7 would be needed
+DEPENDS = " \
+       desktop-file-utils-native \
+       glib-2.0 \
+       gtk+3 \
+       gtk-vnc \
+       libvirt \
+       libvirt-glib \
+       libxml2 \
+       spice-gtk \
+       spice-protocol \
+       vte \

These dependencies are the biggest "issue" with the recipe. meta-virtualization doesn't currently have a dependency on the layers that provide those packages. 

I'm always striving to keep our dependencies (in terms of layers) as small as possible. In particular, these dependencies imply that the target has support for graphics and some sort of desktop environment available.

To keep the dependency dynamic, we should check on an appropriate distro feature and raise a skiprecipe if the distro features aren't in place. See what we do with selinux/seccomp in a few other recipes. That allows us to not make the new layers as hard dependencies. If they do become hard dependencies of meta-virt, we need to update the layer.conf or we'll fail the yocto compatibility tests.

Cheers,

Bruce
 
+"
+
+SRC_URI = " \
+       git://gitlab.com/virt-viewer/virt-viewer.git;protocol=https;branch=master \
+       file://0001-data-meson.build-fix-for-recent-meson.patch \
+"
+
+SRCREV = "8d8923d259b79c7c9ad3560a49be81dc0f38b88b"
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig gtk-icon-cache mime mime-xdg gobject-introspection
+
+FILES:${PN} += "${datadir}"
+GIR_MESON_OPTION = ''
--
2.34.1






--
- Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


Markus Volk
 

Am Mo, 31. Okt 2022 um 12:04:37 -0400 schrieb Bruce Ashfield <bruce.ashfield@...>:
These dependencies are the biggest "issue" with the recipe. meta-virtualization doesn't currently have a dependency on the layers that provide those packages. 

Hi Bruce,

thanks for the review. I tried to follow your suggestions, but since I didn't know of a suitable distro feature that would ensure meta-gnome is included, I cleaned up the dependencies and used a configuration that doesn't include it by default. This way, the recipe hopefully doesn't have to be skipped and can be built with only the layers that README says are needed. (Assuming that spice-gtk, which is currently being tested in meta-networking master-next, will be good to merge).


Bruce Ashfield
 



On Tue, Nov 1, 2022 at 12:29 PM Markus Volk <f_l_k@...> wrote:
Am Mo, 31. Okt 2022 um 12:04:37 -0400 schrieb Bruce Ashfield <bruce.ashfield@...>:
These dependencies are the biggest "issue" with the recipe. meta-virtualization doesn't currently have a dependency on the layers that provide those packages. 

Hi Bruce,

thanks for the review. I tried to follow your suggestions, but since I didn't know of a suitable distro feature that would ensure meta-gnome is included, I cleaned up the dependencies and used a configuration that doesn't include it by default. This way, the recipe hopefully doesn't have to be skipped and can be built with only the layers that README says are needed. (Assuming that spice-gtk, which is currently being tested in meta-networking master-next, will be good to merge).
Thanks for the quick turnaround on the v2!

The packageconfig route solves the problem, and I'll pull these in for testing.

Bruce



--
- Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


Bruce Ashfield
 



On Wed, Nov 2, 2022 at 10:36 AM Bruce Ashfield via lists.yoctoproject.org <bruce.ashfield=gmail.com@...> wrote:


On Tue, Nov 1, 2022 at 12:29 PM Markus Volk <f_l_k@...> wrote:
Am Mo, 31. Okt 2022 um 12:04:37 -0400 schrieb Bruce Ashfield <bruce.ashfield@...>:
These dependencies are the biggest "issue" with the recipe. meta-virtualization doesn't currently have a dependency on the layers that provide those packages. 

Hi Bruce,

thanks for the review. I tried to follow your suggestions, but since I didn't know of a suitable distro feature that would ensure meta-gnome is included, I cleaned up the dependencies and used a configuration that doesn't include it by default. This way, the recipe hopefully doesn't have to be skipped and can be built with only the layers that README says are needed. (Assuming that spice-gtk, which is currently being tested in meta-networking master-next, will be good to merge).
Thanks for the quick turnaround on the v2!

The packageconfig route solves the problem, and I'll pull these in for testing.

During my test builds, I am seeing this QA warning:

NOTE: Executing Tasks

WARNING: virt-viewer-11.0+gitAUTOINC+1e99e5e4f4-r0 do_package_qa: QA Issue: File /usr/src/debug/virt-viewer/11.0+gitAUTOINC+1e99e5e4f4-r0/src/virt-viewer-enums.c in package virt-viewer-src contains reference to TMPDIR

File /usr/src/debug/virt-viewer/11.0+gitAUTOINC+1e99e5e4f4-r0/src/virt-viewer-enums.c in package virt-viewer-src contains reference to TMPDIR [buildpaths]

NOTE: Tasks Summary: Attempted 3632 tasks of which 3611 didn't need to be rerun and all succeeded.

but libvirt still has other TMPDIR QA warnings that still haven't been fixed, so I don't consider this an absolute blocker. I'll have a look and try to fix it.

Bruce

 

Bruce



--
- Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end
- "Use the force Harry" - Gandalf, Star Trek II






--
- Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


Markus Volk
 

Am Do, 3. Nov 2022 um 11:23:25 -0400 schrieb Bruce Ashfield <bruce.ashfield@...>:
but libvirt still has other TMPDIR QA warnings that still haven't been fixed, so I don't consider this an absolute blocker. I'll have a look and try to fix it.

Thanks for the help!

Markus


Bruce Ashfield
 

I had to put this aside for a bit, but am back looking at it.

The build paths QA failure comes from the use of glib-mkenums, which
definitely generates files with absolute paths. I don't see any
options available in its documentation for sysroot or relative
patches, so I'll need to come up with some sort of fixup.

I'm also now seeing a failure on the latest OE core master (and
master-next of meta-virt), like this:

nfig-domain-capabilities-os.c.o.d -o
libvirt-gconfig/libvirt-gconfig-1.0.so.0.4000.0.p/libvirt-gconfig-domain-capabilities-os.c.o
-c ../git/libvirt-gconfig/libvirt-gconfig-domain-capabilities-os.c
| In file included from
/opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/glib-2.0/glib.h:52,
| from
/opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/glib-2.0/gobject/gbinding.h:30,
| from
/opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/glib-2.0/glib-object.h:24,
| from ../git/libvirt-gconfig/libvirt-gconfig.h:27,
| from
../git/libvirt-gconfig/libvirt-gconfig-domain-capabilities-os.c:23:
| ../git/libvirt-gconfig/libvirt-gconfig-domain-capabilities-os.c: In
function 'search_firmwares':
| ../git/libvirt-gconfig/libvirt-gconfig-domain-capabilities-os.c:70:26:
error: pointer targets in passing argument 1 of 'strcmp' differ in
signedness [-Werror=pointer-sign]
| 70 | if (!g_str_equal(node->name, "enum"))
| /opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/glib-2.0/glib/ghash.h:165:39:
note: in definition of macro 'g_str_equal'
| 165 | #define g_str_equal(v1, v2) (strcmp ((v1), (v2)) == 0)
| | ^~
| In file included from
/opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/glib-2.0/glib/galloca.h:35,
| from
/opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/glib-2.0/glib.h:32:
| /opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/string.h:156:32:
note: expected 'const char *' but argument is of type 'const xmlChar
*' {aka 'const unsigned char *'}
| 156 | extern int strcmp (const char *__s1, const char *__s2)
| | ~~~~~~~~~~~~^~~~
| cc1: all warnings being treated as errors

If you have any cycles free, I'd be interested to know if this is
specific to my builders, or if others are seeing the same thing.

Bruce

On Fri, Nov 4, 2022 at 3:23 AM Markus Volk <f_l_k@...> wrote:

Am Do, 3. Nov 2022 um 11:23:25 -0400 schrieb Bruce Ashfield <bruce.ashfield@...>:

but libvirt still has other TMPDIR QA warnings that still haven't been fixed, so I don't consider this an absolute blocker. I'll have a look and try to fix it.


Thanks for the help!

Markus
--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


Markus Volk
 

After updating OE core master i was able to reproduce the issue. Looks like its related to the latest glib-2.0 update. I've sent a patch for it

Am Mi, 23. Nov 2022 um 09:09:47 -0500 schrieb Bruce Ashfield <bruce.ashfield@...>:

I had to put this aside for a bit, but am back looking at it. The build paths QA failure comes from the use of glib-mkenums, which definitely generates files with absolute paths. I don't see any options available in its documentation for sysroot or relative patches, so I'll need to come up with some sort of fixup. I'm also now seeing a failure on the latest OE core master (and master-next of meta-virt), like this: nfig-domain-capabilities-os.c.o.d -o libvirt-gconfig/libvirt-gconfig-1.0.so.0.4000.0.p/libvirt-gconfig-domain-capabilities-os.c.o -c ../git/libvirt-gconfig/libvirt-gconfig-domain-capabilities-os.c | In file included from /opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/glib-2.0/glib.h:52, | from /opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/glib-2.0/gobject/gbinding.h:30, | from /opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/glib-2.0/glib-object.h:24, | from ../git/libvirt-gconfig/libvirt-gconfig.h:27, | from ../git/libvirt-gconfig/libvirt-gconfig-domain-capabilities-os.c:23: | ../git/libvirt-gconfig/libvirt-gconfig-domain-capabilities-os.c: In function 'search_firmwares': | ../git/libvirt-gconfig/libvirt-gconfig-domain-capabilities-os.c:70:26: error: pointer targets in passing argument 1 of 'strcmp' differ in signedness [-Werror=pointer-sign] | 70 | if (!g_str_equal(node->name, "enum")) | /opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/glib-2.0/glib/ghash.h:165:39: note: in definition of macro 'g_str_equal' | 165 | #define g_str_equal(v1, v2) (strcmp ((v1), (v2)) == 0) | | ^~ | In file included from /opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/glib-2.0/glib/galloca.h:35, | from /opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/glib-2.0/glib.h:32: | /opt/poky/build/tmp/work/core2-64-poky-linux/libvirt-glib/4.0.0-r0/recipe-sysroot/usr/include/string.h:156:32: note: expected 'const char *' but argument is of type 'const xmlChar *' {aka 'const unsigned char *'} | 156 | extern int strcmp (const char *__s1, const char *__s2) | | ~~~~~~~~~~~~^~~~ | cc1: all warnings being treated as errors If you have any cycles free, I'd be interested to know if this is specific to my builders, or if others are seeing the same thing. Bruce On Fri, Nov 4, 2022 at 3:23 AM Markus Volk <f_l_k@...> wrote:
Am Do, 3. Nov 2022 um 11:23:25 -0400 schrieb Bruce Ashfield <bruce.ashfield@...>: but libvirt still has other TMPDIR QA warnings that still haven't been fixed, so I don't consider this an absolute blocker. I'll have a look and try to fix it. Thanks for the help! Markus
--
- Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end - "Use the force Harry" - Gandalf, Star Trek II


Bruce Ashfield
 

I finally managed to get enough time to look into this more, and I've
pushed my fix to master-next.

Everything should now build without QA errors, and I expect to have it
merged over the weekend.

Bruce

On Fri, Nov 4, 2022 at 3:23 AM Markus Volk <f_l_k@...> wrote:

Am Do, 3. Nov 2022 um 11:23:25 -0400 schrieb Bruce Ashfield <bruce.ashfield@...>:

but libvirt still has other TMPDIR QA warnings that still haven't been fixed, so I don't consider this an absolute blocker. I'll have a look and try to fix it.


Thanks for the help!

Markus
--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


Markus Volk
 

Great, thanks

Am Do, 1. Dez 2022 um 23:39:31 -0500 schrieb Bruce Ashfield <bruce.ashfield@...>:

I finally managed to get enough time to look into this more, and I've pushed my fix to master-next. Everything should now build without QA errors, and I expect to have it merged over the weekend. Bruce On Fri, Nov 4, 2022 at 3:23 AM Markus Volk <f_l_k@...> wrote:
Am Do, 3. Nov 2022 um 11:23:25 -0400 schrieb Bruce Ashfield <bruce.ashfield@...>: but libvirt still has other TMPDIR QA warnings that still haven't been fixed, so I don't consider this an absolute blocker. I'll have a look and try to fix it. Thanks for the help! Markus
--
- Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end - "Use the force Harry" - Gandalf, Star Trek II