virt-manager 'dist' build OK in local pyenv; 'rpm' build FAILs @ check for *distro* pkgs ?

Pavel Hrdina phrdina at redhat.com
Tue May 5 10:02:25 UTC 2020


On Mon, May 04, 2020 at 01:51:13PM -0700, PGNet Dev wrote:
> a local dist build of virt-manager
> 
> 	cd virt-manager
> 	git log | head
> 	      1 commit f34f73622d0feab451dd22d7ca38c8fac8587c22 (HEAD -> master, origin/master, origin/HEAD)
> 	      2 Author: Han Han <hhan at redhat.com>
> 	      3 Date:   Sun Apr 19 21:39:02 2020 +0800
> 	      4
> 	      5     rng: add builtin rng backend model
> 	      6
> 	      7     The builtin rng backend uses getrandom syscall to generate random, no
> 	      8     external rng source needed, introduced from libvirt v6.1.0.
> 	      9
> 	     10     Reviewed-by: Cole Robinson <crobinso at redhat.com>
> 	     11     Signed-off-by: Han Han <hhan at redhat.com>
> 
> with a local pyenv-installed python,
> 
> 	pyenv global
> 		3.8-dev
> 	python -V
> 		Python 3.8.2+
> 
> completes/execs ok
> 
> 	python setup.py build
> 	python setup.py install
> 	virt-manager --version
> 		2.2.1
> 
> OTOH, an 'rpm' build FAILS,
> 
> 	python setup.py build rpm
> 		Creating tar archive
> 		removing 'virt-manager-2.2.1' (and everything under it)
> 		error: Failed build dependencies:
> 		        python3-devel is needed by virt-manager-2.2.1-1.noarch
> 
> as its checking for a distro-packaged 'python3-devel' rather than the pyenv's installed/available modules/deps

In order to build RPM packages you need to have RPM dependencies listed
in spec file installed.

> not sure this qualifies as a 'bug' ... 
> 
> but, since there's apparently no 'setup.py uninstall' available, cleaning's a bit of a mess.

I'm telling this to everyone, you usually don't want to mix distribution
packages together with projects installed directly from sources as it
usually requires additional work to make it right and to not mess up
your system with conflicting files.

> it'd be quite useful to have the rpm buildable, installable -- and UNinstallable.

You already have that, but you have to use RPM dependencies as well.

> a functional 'setup.py' would be a useful alternative.

This basically works like it should as well because the uninstall
feature cannot know if the files were modified or replaced by different
project as it cannot track what's happening on the system.  That's why
we have package managers.

May I ask what is your distribution and reason to use upstream package
in your distribution?

The simplest solution is to use virt-manager directly from unpacked
tarball or git repository if the distribution version is not good
enough or you want to just test a newer virt-manager.

I was about to suggest some options but once I've tried them it would
require a lot of other work to achieve it:

    - Install all required dependencies using RPM, if the distribution
      doesn't provide the versions you would like to use, create RPM
      packages for these dependencies as well (this will probably take a
      lot of time).

    - Using pip to install virt-manager but when I tried it, it doesn't
      work with virt-manager, most likely because we are using distutils
      instead of setuptools.

    - Use python virtualenv and install virt-manager into it, but it
      would require to install all virt-manager python dependencies into
      the virtualenv as well.  To uninstall it, you can just remove the
      whole virtualenv directory.

Pavel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20200505/37c3f7a5/attachment.sig>


More information about the virt-tools-list mailing list