On Wed, Oct 25, 2017 at 9:33 AM Sandro Bonazzola <sbonazzo@redhat.com> wrote:
2017-10-20 20:05 GMT+02:00 Yaniv Kaul <ykaul@redhat.com>:


On Fri, Oct 20, 2017 at 7:56 PM, Nir Soffer <nsoffer@redhat.com> wrote:
On Fri, Oct 20, 2017 at 11:37 AM Sandro Bonazzola <sbonazzo@redhat.com> wrote:
Just an heads up we have improvement margin on vdsm spec file quality.

[sbonazzo@sbonazzo SPECS]$ rpmlint ./vdsm.spec /var/lib/mock/epel-7-x86_64/result/*rpm
vdsm.x86_64: E: explicit-lib-dependency libnl3

What is wrong with this?
 
vdsm.x86_64: E: explicit-lib-dependency libvirt-client
vdsm.x86_64: E: explicit-lib-dependency libvirt-daemon-config-nwfilter
vdsm.x86_64: E: explicit-lib-dependency libvirt-lock-sanlock
vdsm.x86_64: W: obsolete-not-provided vdsm-infra
vdsm.x86_64: E: no-binary

Ha?

The package should be of the noarch architecture because it doesn't contain
any binaries.

Vdsm has many arch specific requirements, and we have different requirements
on different platforms. Having a arch specific meta package was the solution
suggested by Fedora reviewers about 2 years ago.
 

 
 
vdsm.x86_64: W: conffile-without-noreplace-flag /var/log/vdsm/mom.log

This is not a conf file, we should probably change this
 
vdsm.x86_64: W: conffile-without-noreplace-flag /var/log/vdsm/supervdsm.log
vdsm.x86_64: W: conffile-without-noreplace-flag /var/log/vdsm/vdsm.log
vdsm.x86_64: W: non-conffile-in-etc /etc/NetworkManager/conf.d/vdsm.conf

Ha?

Perhaps:
%{_sysconfdir}/NetworkManager/conf.d/vdsm.conf

should be:
%config(noreplace) %{_sysconfdir}/NetworkManager/conf.d/vdsm.conf 


 
vdsm.x86_64: W: non-conffile-in-etc /etc/modprobe.d/vdsm-bonding-modprobe.conf
vdsm.x86_64: E: non-readable /etc/pki/vdsm/keys/libvirt_password 600
vdsm.x86_64: W: non-conffile-in-etc /etc/security/limits.d/99-vdsm.conf

Ha?

Same?
 
 
vdsm.x86_64: W: non-conffile-in-etc /etc/sudoers.d/50_vdsm
vdsm.x86_64: W: systemd-unit-in-etc /etc/systemd/system/libvirtd.service.d/unlimited-core.conf
vdsm.x86_64: W: non-conffile-in-etc /etc/systemd/system/libvirtd.service.d/unlimited-core.conf
vdsm.x86_64: E: zero-length /etc/vdsm/mom.d/01-parameters.policy
vdsm.x86_64: E: wrong-script-interpreter /usr/libexec/vdsm/kvm2ovirt /usr/bin/env python

This used to be the recommended way to write scripts, but it is easy to
replace with /usr/bin/python2.

It should be /usr/bin/python since python is under "alternatives" management

But most of the code is python2 only - we recently update (most) scripts to use
/usr/bin/python2.
 

 
 
vdsm.x86_64: E: wrong-script-interpreter /usr/libexec/vdsm/vm_migrate_hook.py /usr/bin/env python
vdsm.x86_64: E: wrong-script-interpreter /usr/share/vdsm/virt/vm_migrate_hook.py /usr/bin/env python
vdsm.x86_64: E: non-executable-script /usr/share/vdsm/virt/vm_migrate_hook.py 644 /usr/bin/env python
vdsm.x86_64: E: non-standard-dir-perm /var/lib/libvirt/qemu/channels 775
vdsm.x86_64: E: non-standard-dir-perm /var/log/core 1777
vdsm.x86_64: E: dir-or-file-in-var-run /var/run/vdsm

What is wrong with this?

"/var/run may be a temporary filesystem, so any directories or files needed there must be created dynamically at boot time."

We create these directories in runtime, not sure why we create them also 
during instillation.
 

Y. 
 
vdsm.x86_64: E: dir-or-file-in-var-run /var/run/vdsm/payload
vdsm.x86_64: E: dir-or-file-in-var-run /var/run/vdsm/sourceRoutes
vdsm.x86_64: E: dir-or-file-in-var-run /var/run/vdsm/trackedInterfaces
vdsm.x86_64: E: dir-or-file-in-var-run /var/run/vdsm/v2v
vdsm.x86_64: W: log-files-without-logrotate ['/var/log/core', '/var/log/vdsm']

We have logrotate configuration for vdsm, but we don't use the standard
configuration since we need more frequent rotation. 
 
vdsm.x86_64: W: dangerous-command-in-%pre rpm
vdsm.x86_64: W: dangerous-command-in-%post chmod
vdsm-api.noarch: E: wrong-script-interpreter /usr/lib/python2.7/site-packages/vdsm/api/vdsmapi.py /usr/bin/env python
vdsm-api.noarch: E: non-executable-script /usr/lib/python2.7/site-packages/vdsm/api/vdsmapi.py 644 /usr/bin/env python
vdsm-cli.noarch: W: non-conffile-in-etc /etc/bash_completion.d/vdsClient
vdsm-gluster.noarch: W: spelling-error %description -l en_US functionalities -> functionalists, functionality, functionalist
vdsm-gluster.noarch: W: no-documentation
vdsm-hook-allocate_net.noarch: W: summary-not-capitalized C random_network allocation hook for VDSM
vdsm-hook-allocate_net.noarch: W: spelling-error %description -l en_US vms -> vs, ms, ems
vdsm-hook-allocate_net.noarch: W: no-documentation
vdsm-hook-allocate_net.noarch: E: wrong-script-interpreter /usr/libexec/vdsm/hooks/before_device_create/10_allocate_net /usr/bin/env python
vdsm-hook-checkimages.noarch: W: no-documentation
vdsm-hook-checkips.x86_64: W: no-documentation
vdsm-hook-checkips.x86_64: E: wrong-script-interpreter /usr/libexec/vdsm/hooks/after_get_stats/10_checkips /usr/bin/env python
vdsm-hook-checkips.x86_64: E: non-executable-script /usr/libexec/vdsm/hooks/after_get_stats/checkips_utils.py 644 /usr/bin/python2 
vdsm-hook-diskunmap.noarch: W: spelling-error Summary(en_US) lun -> loon, lung, sun
vdsm-hook-diskunmap.noarch: W: no-documentation
vdsm-hook-diskunmap.noarch: E: wrong-script-interpreter /usr/libexec/vdsm/hooks/before_vm_start/50_diskunmap /usr/bin/env python2
vdsm-hook-ethtool-options.noarch: W: spelling-error Summary(en_US) nics -> incs, mics, nicks
vdsm-hook-ethtool-options.noarch: W: spelling-error %description -l en_US nics -> incs, mics, nicks
vdsm-hook-ethtool-options.noarch: W: no-documentation
vdsm-hook-ethtool-options.noarch: E: wrong-script-interpreter /usr/libexec/vdsm/hooks/after_network_setup/30_ethtool_options /usr/bin/env python
vdsm-hook-extnet.noarch: W: spelling-error Summary(en_US) vNIC -> Venice
vdsm-hook-extnet.noarch: W: spelling-error Summary(en_US) libvirt -> liberty, ovirt
vdsm-hook-extnet.noarch: W: spelling-error %description -l en_US vNIC -> Venice
vdsm-hook-extnet.noarch: W: spelling-error %description -l en_US libvirt -> liberty, ovirt
vdsm-hook-extnet.noarch: W: spelling-error %description -l en_US openvswitch -> switchboard
vdsm-hook-extnet.noarch: W: no-documentation
vdsm-hook-extra-ipv4-addrs.x86_64: W: summary-ended-with-dot C Set extra ipv4 addresses for vdsm networks.
vdsm-hook-extra-ipv4-addrs.x86_64: W: no-documentation
vdsm-hook-extra-ipv4-addrs.x86_64: E: wrong-script-interpreter /usr/libexec/vdsm/hooks/after_network_setup/40_extra_ipv4_addrs /usr/bin/env python
vdsm-hook-fakesriov.x86_64: W: spelling-error %description -l en_US hostdevListByCaps 
vdsm-hook-fakesriov.x86_64: W: spelling-error %description -l en_US sriov -> Rios
vdsm-hook-fakesriov.x86_64: W: spelling-error %description -l en_US conf -> con, cone, cons
vdsm-hook-fakesriov.x86_64: W: no-documentation
vdsm-hook-fakevmstats.noarch: W: spelling-error %description -l en_US vmstats -> stats
vdsm-hook-fakevmstats.noarch: W: spelling-error %description -l en_US conf -> con, cone, cons
vdsm-hook-fakevmstats.noarch: W: no-documentation
vdsm-hook-faqemu.noarch: W: spelling-error Summary(en_US) qemu -> emu, q emu
vdsm-hook-faqemu.noarch: W: spelling-error %description -l en_US kvm -> km
vdsm-hook-faqemu.noarch: W: spelling-error %description -l en_US conf -> con, cone, cons
vdsm-hook-faqemu.noarch: W: no-documentation
vdsm-hook-fcoe.noarch: W: no-documentation
vdsm-hook-fcoe.noarch: E: wrong-script-interpreter /usr/libexec/vdsm/hooks/before_network_setup/50_fcoe /bin/env python
vdsm-hook-fileinject.noarch: W: no-documentation
vdsm-hook-floppy.noarch: W: no-documentation
vdsm-hook-hostusb.noarch: W: no-documentation
vdsm-hook-hostusb.noarch: E: non-readable /etc/sudoers.d/50_vdsm_hook_hostusb 440
vdsm-hook-hostusb.noarch: W: non-conffile-in-etc /etc/sudoers.d/50_vdsm_hook_hostusb
vdsm-hook-httpsisoboot.noarch: W: spelling-error Summary(en_US) https -> HTTP
vdsm-hook-httpsisoboot.noarch: W: spelling-error %description -l en_US https -> HTTP
vdsm-hook-httpsisoboot.noarch: W: spelling-error %description -l en_US http -> HTTP
vdsm-hook-httpsisoboot.noarch: W: no-documentation
vdsm-hook-hugepages.noarch: W: summary-ended-with-dot C Huge pages enable user to handle VM with 2048KB page files.
vdsm-hook-hugepages.noarch: W: no-documentation
vdsm-hook-hugepages.noarch: E: non-readable /etc/sudoers.d/50_vdsm_hook_hugepages 440
vdsm-hook-hugepages.noarch: W: non-conffile-in-etc /etc/sudoers.d/50_vdsm_hook_hugepages
vdsm-hook-ipv6.noarch: W: no-documentation
vdsm-hook-ipv6.noarch: E: wrong-script-interpreter /usr/libexec/vdsm/hooks/before_network_setup/50_ipv6 /usr/bin/env python2
vdsm-hook-isolatedprivatevlan.noarch: W: spelling-error %description -l en_US ip -> pi, up, op
vdsm-hook-isolatedprivatevlan.noarch: W: spelling-error %description -l en_US filterref -> filter ref, filter-ref, filterer
vdsm-hook-isolatedprivatevlan.noarch: W: spelling-error %description -l en_US xml -> XML, ml, x ml
vdsm-hook-isolatedprivatevlan.noarch: W: no-documentation
vdsm-hook-isolatedprivatevlan.noarch: E: executable-marked-as-config-file /etc/libvirt/nwfilter/isolatedprivatevlan-vdsm.xml
vdsm-hook-isolatedprivatevlan.noarch: E: script-without-shebang /etc/libvirt/nwfilter/isolatedprivatevlan-vdsm.xml
vdsm-hook-localdisk.noarch: W: spelling-error %description -l en_US lvm -> lvi, lam, Lvov
vdsm-hook-localdisk.noarch: W: only-non-binary-in-usr-lib
vdsm-hook-localdisk.noarch: W: no-documentation
vdsm-hook-localdisk.noarch: E: non-readable /etc/sudoers.d/50_vdsm_hook_localdisk 440
vdsm-hook-localdisk.noarch: W: non-conffile-in-etc /etc/sudoers.d/50_vdsm_hook_localdisk
vdsm-hook-macbind.noarch: W: spelling-error Summary(en_US) vNIC -> Venice
vdsm-hook-macbind.noarch: W: spelling-error %description -l en_US vNIC -> Venice
vdsm-hook-macbind.noarch: W: no-documentation
vdsm-hook-macbind.noarch: E: wrong-script-interpreter /usr/libexec/vdsm/hooks/before_vm_start/50_macbind /usr/bin/env python2
vdsm-hook-macspoof.noarch: W: spelling-error %description -l en_US vnics -> conics
vdsm-hook-macspoof.noarch: W: no-documentation
vdsm-hook-nestedvt.noarch: W: spelling-error %description -l en_US virtualization -> visualization, actualization, vitalization
vdsm-hook-nestedvt.noarch: W: spelling-error %description -l en_US kvm -> km
vdsm-hook-nestedvt.noarch: W: no-documentation
vdsm-hook-nestedvt.noarch: W: non-conffile-in-etc /etc/modprobe.d/vdsm-nestedvt.conf
vdsm-hook-noipspoof.noarch: W: no-documentation
vdsm-hook-numa.noarch: W: spelling-error %description -l en_US xml -> XML, ml, x ml
vdsm-hook-numa.noarch: W: no-documentation
vdsm-hook-openstacknet.noarch: W: spelling-error Summary(en_US) vNICs -> conics
vdsm-hook-openstacknet.noarch: W: spelling-error %description -l en_US vNICs -> conics
vdsm-hook-openstacknet.noarch: W: no-documentation
vdsm-hook-openstacknet.noarch: E: non-readable /etc/sudoers.d/50_vdsm_hook_openstacknet 440
vdsm-hook-openstacknet.noarch: W: non-conffile-in-etc /etc/sudoers.d/50_vdsm_hook_openstacknet
vdsm-hook-openstacknet.noarch: E: wrong-script-interpreter /usr/libexec/vdsm/hooks/before_device_migrate_destination/50_openstacknet /usr/bin/env python2
vdsm-hook-pincpu.noarch: W: no-documentation
vdsm-hook-promisc.noarch: W: no-documentation
vdsm-hook-promisc.noarch: E: non-readable /etc/sudoers.d/50_vdsm_hook_promisc 440
vdsm-hook-promisc.noarch: W: non-conffile-in-etc /etc/sudoers.d/50_vdsm_hook_promisc
vdsm-hook-qemucmdline.noarch: W: spelling-error Summary(en_US) cmdline -> decline
vdsm-hook-qemucmdline.noarch: W: spelling-error %description -l en_US cmdline -> decline
vdsm-hook-qemucmdline.noarch: W: spelling-error %description -l en_US libvirt's -> liberty's
vdsm-hook-qemucmdline.noarch: W: spelling-error %description -l en_US qemu -> emu, q emu
vdsm-hook-qemucmdline.noarch: W: spelling-error %description -l en_US commandline -> command line, command-line, commandment
vdsm-hook-qemucmdline.noarch: W: spelling-error %description -l en_US xml -> XML, ml, x ml
vdsm-hook-qemucmdline.noarch: W: spelling-error %description -l en_US namespace -> name space, name-space, names pace
vdsm-hook-qemucmdline.noarch: W: no-documentation
vdsm-hook-qos.noarch: W: no-documentation
vdsm-hook-scratchpad.noarch: W: no-documentation
vdsm-hook-smbios.noarch: W: spelling-error Summary(en_US) libvirt -> liberty, ovirt
vdsm-hook-smbios.noarch: W: spelling-error %description -l en_US libvirt -> liberty, ovirt
vdsm-hook-smbios.noarch: W: no-documentation
vdsm-hook-spiceoptions.noarch: W: spelling-error Summary(en_US) vm -> cm, v, m
vdsm-hook-spiceoptions.noarch: W: no-documentation
vdsm-hook-vfio-mdev.noarch: W: summary-ended-with-dot C Hook to enable mdev-capable devices.
vdsm-hook-vfio-mdev.noarch: W: no-documentation
vdsm-hook-vhostmd.noarch: W: no-documentation
vdsm-hook-vhostmd.noarch: E: non-readable /etc/sudoers.d/50_vdsm_hook_vhostmd 440
vdsm-hook-vhostmd.noarch: W: non-conffile-in-etc /etc/sudoers.d/50_vdsm_hook_vhostmd
vdsm-hook-vmdisk.noarch: W: no-documentation
vdsm-hook-vmfex.noarch: W: summary-not-capitalized C vmfex support for VDSM
vdsm-hook-vmfex.noarch: W: no-documentation
vdsm-hook-vmfex-dev.noarch: W: spelling-error Summary(en_US) vNIC -> Venice
vdsm-hook-vmfex-dev.noarch: W: spelling-error %description -l en_US vNIC -> Venice
vdsm-hook-vmfex-dev.noarch: W: spelling-error %description -l en_US macvtap -> madcap
vdsm-hook-vmfex-dev.noarch: W: no-documentation
vdsm-jsonrpc.noarch: W: spelling-error %description -l en_US libvdsm -> liberalism
vdsm-jsonrpc.noarch: W: obsolete-not-provided vdsm-api
vdsm-jsonrpc.noarch: W: no-documentation
vdsm-python.noarch: E: non-executable-script /usr/lib/python2.7/site-packages/vdsm/tool/dummybr.py 644 /usr/bin/python2 
vdsm-python.noarch: E: non-executable-script /usr/lib/python2.7/site-packages/vdsm/tool/nwfilter.py 644 /usr/bin/python2 
vdsm-python.noarch: W: dangerous-command-in-%post rm
vdsm-tests.noarch: E: non-executable-script /usr/share/vdsm/tests/alignmentScanTests.py 644 /usr/bin/python2 

This looks easy, this is not a script
 
vdsm-tests.noarch: E: wrong-script-interpreter /usr/share/vdsm/tests/fake-ssh-add /usr/bin/env python
vdsm-tests.noarch: E: non-executable-script /usr/share/vdsm/tests/fake-ssh-add 644 /usr/bin/env python
vdsm-tests.noarch: E: wrong-script-interpreter /usr/share/vdsm/tests/fake-ssh-agent /usr/bin/env python
vdsm-tests.noarch: E: non-executable-script /usr/share/vdsm/tests/fake-ssh-agent 644 /usr/bin/env python
vdsm-tests.noarch: E: wrong-script-interpreter /usr/share/vdsm/tests/fake-virt-v2v /usr/bin/env python
vdsm-tests.noarch: E: non-executable-script /usr/share/vdsm/tests/fake-virt-v2v 644 /usr/bin/env python
vdsm-tests.noarch: E: script-without-shebang /usr/share/vdsm/tests/testValidation.py

This is also not a script, maybe wrong permissions?
 
vdsm-tests.noarch: E: zero-length /usr/share/vdsm/tests/toolTests_empty.conf

This is bogus error, but we can probably replace this with generated temporary file.
 
vdsm-xmlrpc.noarch: W: spelling-error %description -l en_US vdsmd 
vdsm-xmlrpc.noarch: W: spelling-error %description -l en_US vdsClient -> clientele
vdsm-xmlrpc.noarch: W: no-documentation
vdsm-yajsonrpc.noarch: W: no-documentation
48 packages and 1 specfiles checked; 49 errors, 120 warnings.

Sandro, can you help with adding a test to vdsm build, failing if the spec has
errors?

Some of the errors may be false positives, but if really needed I can help with the test.

 

This would also would be useful to other projects like ovirt-imageio.

Nir
 


--

SANDRO BONAZZOLA

ASSOCIATE MANAGER, SOFTWARE ENGINEERING, EMEA ENG VIRTUALIZATION R&D

Red Hat EMEA


_______________________________________________
Devel mailing list
Devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/devel

_______________________________________________
Devel mailing list
Devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/devel




--

SANDRO BONAZZOLA

ASSOCIATE MANAGER, SOFTWARE ENGINEERING, EMEA ENG VIRTUALIZATION R&D

Red Hat EMEA