Skip to content

Commit

Permalink
virt-manager: add package
Browse files Browse the repository at this point in the history
virt-manager is a graphical tool for managing virtual machines via
libvirt. By default, virt-manager is compiled with GUI dependency using
`gui` flag.
Build tested on aarch64 and x86-64 machines, with both with and without
gui PACKAGECONFIG flag.

This commit was cherry-picked from meta-virtualization layer commit
a7ca71f70b39cd44fe6719af6cf0cc624d4c6743.

Signed-off-by: Paul Le Guen de Kerneizon <[email protected]>
Signed-off-by: Bruce Ashfield <[email protected]>
Signed-off-by: Mathieu Dupré <[email protected]>
  • Loading branch information
Paullgk authored and dupremathieu committed Jul 2, 2024
1 parent 39dd112 commit eab285d
Show file tree
Hide file tree
Showing 2 changed files with 133 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
From bcdb3555b924573e85039b54d63d6173ad99b846 Mon Sep 17 00:00:00 2001
From: Paul Le Guen de Kerneizon <[email protected]>
Date: Wed, 28 Feb 2024 10:24:00 +0100
Subject: [PATCH] setup.py: move global args to install args

Presently, during the installation process, global arguments such as
`no-update-icon-cache` and `no-compile-schemas` are utilized to
prevent the installation of specific graphical components. These
arguments are essential, for instance, when installing virt-manager
without any GUI dependencies on the target system. However, these
global arguments must be set before the install command, yet they only
take effect during the execution of the command.

Since the Yocto `setuptools3_legacy` class parses arguments after the
command, this commit aims to make these arguments applicable locally to
the install command.

Signed-off-by: Paul Le Guen de Kerneizon <[email protected]>
---
setup.py | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/setup.py b/setup.py
index cd6cd83e..faca546a 100755
--- a/setup.py
+++ b/setup.py
@@ -242,6 +242,16 @@ class my_egg_info(setuptools.command.install_egg_info.install_egg_info):


class my_install(setuptools.command.install.install):
+ setuptools.command.install.install.user_options += [
+ ("no-update-icon-cache", None, "Don't run gtk-update-icon-cache"),
+ ("no-compile-schemas", None, "Don't compile gsettings schemas"),
+ ]
+
+ def initialize_options(self):
+ setuptools.command.install.install.initialize_options(self)
+ self.no_update_icon_cache = None
+ self.no_compile_schemas = None
+
"""
Error if we weren't 'configure'd with the correct install prefix
"""
@@ -266,12 +276,12 @@ class my_install(setuptools.command.install.install):
def run(self):
setuptools.command.install.install.run(self)

- if not self.distribution.no_update_icon_cache:
+ if not self.no_update_icon_cache:
print("running gtk-update-icon-cache")
icon_path = os.path.join(self.install_data, "share/icons/hicolor")
self.spawn(["gtk-update-icon-cache", "-q", "-t", icon_path])

- if not self.distribution.no_compile_schemas:
+ if not self.no_compile_schemas:
print("compiling gsettings schemas")
gschema_install = os.path.join(self.install_data,
"share/glib-2.0/schemas")
@@ -421,14 +431,8 @@ class CheckPylint(setuptools.Command):


class VMMDistribution(setuptools.dist.Distribution):
- global_options = setuptools.dist.Distribution.global_options + [
- ("no-update-icon-cache", None, "Don't run gtk-update-icon-cache"),
- ("no-compile-schemas", None, "Don't compile gsettings schemas"),
- ]

def __init__(self, *args, **kwargs):
- self.no_update_icon_cache = False
- self.no_compile_schemas = False
setuptools.dist.Distribution.__init__(self, *args, **kwargs)


--
2.34.1

57 changes: 57 additions & 0 deletions recipes-extended/virt-manager/virt-manager_4.1.0.bb
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# SPDX-License-Identifier: Apache-2.0
# Imported from meta-virtualization a7ca71f70b39cd44fe6719af6cf0cc624d4c6743

DESCRIPTION = "virt-manager is a graphical tool for managing virtual machines via libvirt"
HOMEPAGE = "https://virt-manager.org/"
LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
DEPENDS += "python3-docutils-native"
SRCREV = "6710ca6969b7d9c4e8344acd0fe3d50b24adc8ec"

SRC_URI = " \
git://github.com/virt-manager/virt-manager;branch=main;protocol=https \
file://0001-setup.py-move-global-args-to-install-args.patch \
"

S = "${WORKDIR}/git"

PACKAGECONFIG ??= "gui"
PACKAGECONFIG[gui] = ",--no-update-icon-cache --no-compile-schemas,python3-pygobject"

inherit ${@bb.utils.contains('PACKAGECONFIG', 'gui', 'gtk-icon-cache', '', d)}
inherit bash-completion gettext pkgconfig setuptools3_legacy

PACKAGES += " \
${PN}-common \
${PN}-install \
"

RDEPENDS:${PN}-common += " \
libvirt-python \
libosinfo \
"

RDEPENDS:${PN} = "${PN}-common"
RDEPENDS:${PN}-install = "${PN}-common"

SETUPTOOLS_INSTALL_ARGS += "${PACKAGECONFIG_CONFARGS}"

FILES:${PN} = " \
${bindir}/virt-manager \
${datadir}/icons/* \
"

FILES:${PN}-common = " \
${libdir}/* \
${libdir}/python3.10/* \
${datadir}/applications \
${datadir}/virt-manager \
${datadir}/glib-2.0/* \
${datadir}/metainfo/* \
"

FILES:${PN}-install = " \
${bindir}/virt-clone \
${bindir}/virt-install \
${bindir}/virt-xml \
"

0 comments on commit eab285d

Please sign in to comment.