On Mon, Dec 2, 2019 at 8:33 PM Andrea Bolognani <abologna@xxxxxxxxxx> wrote: > > On Mon, 2019-12-02 at 16:41 +0100, Fabiano Fidêncio wrote: > > Jim, > > > > Firstly, sorry it took so long for me to give it a try in your patch. > > > > Now, comments inline ... > > > > On Tue, Nov 26, 2019 at 1:52 AM Jim Fehlig <jfehlig@xxxxxxxx> wrote: > > > This change adds support for the latest openSUSE Leap and > > > openSUSE Tumbleweed guests. > > > > > > Signed-off-by: Jim Fehlig <jfehlig@xxxxxxxx> > > > --- > > > > > > This version of the patch overcomes the 'lci build' issues noted in V1 > > > and works well for openSUSE Leap 15.1 and Tumbleweed. I'm still of the > > > opinion of only supporting the latest Leap since there is only a six > > > month support overlap between versions. Version x-1 is only supported > > > six months after x is released. > > > > I will leave this up to you and Andrea. I'd say, whatever floats your boat. :-) > > That won't work if, as you said earlier, you can't seamlessly move > from eg. 15.1 to 15.2: either you can move from one minor version to > the next with a simple upgrade, as is the case for CentOS and Debian, > or you need to consider the two as separate entities, as is the case > for Fedora, otherwise libvirt-opensuse-15 will mean vastly different > things depending on whether you installed in the 15.1 timeframe or > in the 15.2 timeframe... > > It's annoying, but I'm afraid we're going to have to include the > minor version number in the name even though we're only likely to > ever support one 42.x and one 15.x at any given time. > > One more note about naming: I just remembered why I decided for > libvirt-ubuntu-18 instead of the more obvious libvirt-ubuntu-18.04 > back then: the guest name is also used as the hostname, and I wanted > to avoid having extra dots in the latter. Perhaps that's overzealous > of me, but assuming we want to stick with that principle then we > should call this libvirt-opensuse-151, and later rename the > aforementioned to libvirt-ubuntu-1804 to be consistent. > > > > 'lci update ... libvirt' fails in task "Configure hostname": > > > > > > fatal: [libvirt-opensuse-tumbleweed]: FAILED! => {"changed": false, "msg": "hostname module cannot be used on platform Linux (Opensuse-tumbleweed)"} > > > > It seems to be an Ansible bug: https://github.com/ansible/ansible/issues/42726 > > Is it possible that this failed simply because the hostname command > is not available? You mention this below. No. When testing this patch I was already installing "hostname" in the box. > > > > Not sure why that is the case. But more importantly, even though it > > > doesn't fail, the "Update installed packages" task doesn't install any > > > of the packages required to build libvirt. > > That step merely updates the packages that are already installed. > > > > I suppose that agrees with > > > guests/REAMDME, but how then are the packages required to build $project > > > installed? How/when is the list of packages required to build $project > > > conveyed to $package_manager? > > That happens later[1]. > > > > 'lcitool build libvirt-opensuse-tumbleweed libvirt' fails in the > > > "Gathering Facts" task: > > > > > > fatal: [libvirt-opensuse-tumbleweed]: UNREACHABLE! => {"changed": false, "msg": "Invalid/incorrect password: ", "unreachable": true} > > > > I didn't get this far, I'd firstly try to get the first part fixed as > > this whole thing is sequential ... > > We can add Leap 15.1 first, and worry about tumbleweed later. It's > probably a good idea to add them in separate commits anyway. > > > > Passing --debug to the command didn't help with determining what needed > > > the password. ssh? I can't find where the "Gathering Facts" task is > > > defined. > > That's not a custom task, but rather something that Ansible does > automatically when it connects to a host. > > > > The $root_password_file passed to /usr/bin/ansible-playbook > > > contains the correct password for the root user. /me needs to figure > > > out how to better debug this stuff :-). > > I'm pretty sure 'lcitool build' failed simply because 'lcitool > update' failed before it, and more specifically didn't manage to get > far enough to set up a regular user to use for builds. > > I agree debugging this kind of issue is not exactly trivial... > Unfortunately there's no easy solution to the problem either :( > > > > +++ b/guests/configs/autoinst.xml > > > @@ -0,0 +1,75 @@ > > > +<?xml version="1.0"?> > > > +<!DOCTYPE profile> > > > +<profile > > > + xmlns="http://www.suse.com/1.0/yast2ns" > > > + xmlns:config="http://www.suse.com/1.0/configns"> > > > + <general> > > > + <mode> > > > + <confirm config:type="boolean">false</confirm> > > > > Here, please, also add: > > <second_stage config:type="boolean">false</second_stage> > > > > It'll avoid an unnecessary reboot in the VM. > > I didn't test this, but it sounds reasonable. I'll give it an actual > go tomorrow :) > > [...] > > > + <software> > > > + <install_recommended config:type="boolean">false</install_recommended> > > > + <products config:type="list"> > > > + <product>openSUSE</product> > > > + </products> > > > + <patterns config:type="list"> > > > + <pattern>base</pattern> > > > + <pattern>minimal_base</pattern> > > > + <pattern>yast2_basis</pattern> > > > + </patterns> > > > + <packages config:type="list"> > > > > Here, please, also add: > > <package>hostname</package> > > > > Seems that lcitools rely on having hostname installed in the machine > > and "hostname" is used before actually installing the packages. Or, > > IOW, trying to install the package afterwards wouldn't work. (I gave > > it a try). > > This also sounds good. > > > > +++ b/guests/host_vars/libvirt-opensuse-15/docker.yml > > > @@ -0,0 +1,2 @@ > > > +--- > > > +docker_base: opensuse/leap:15 > > This should point to > > opensuse/leap:15.1 > > instead. > > > > +++ b/guests/host_vars/libvirt-opensuse-15/main.yml > > > @@ -0,0 +1,22 @@ > > > +--- > > > +projects: > > > + - libosinfo > > > + - libvirt > > > + - libvirt-cim > > > + - libvirt-dbus > > > + - libvirt-glib > > > + - libvirt-perl > > > + - libvirt-python > > > + - libvirt-sandbox > > > + - libvirt-tck > > > + - osinfo-db > > > + - osinfo-db-tools > > > + - virt-manager > > > + - virt-viewer > > Since right now we're only aiming at building libvirt, we should only > list that project: it's a good starting point, and we can add more as > we make sure we can actually 'lcitool build' them successfully. > > > > +package_format: 'rpm' > > > +package_manager: 'zypper' > > > +os_name: 'OpenSUSE' > > > +os_version: '15' > > os_version should be '151' if we follow the naming scheme outlined > earlier. > > [...] > > > +++ b/guests/lcitool > > > - name: Clean up packages after update > > > shell: '{{ package_manager }} clean packages -y && {{ package_manager }} autoremove -y' > > > args: > > > warn: no > > > when: > > > - package_format == 'rpm' > > > + - not os_name == "OpenSUSE" > > This should be > > os_name != 'OpenSUSE' > > [...] > > > +++ b/guests/vars/mappings.yml > > > perl-Archive-Tar: > > > deb: perl > > > pkg: perl5 > > > rpm: perl-Archive-Tar > > > + OpenSUSE: perl-Archive-Tar-Wrapper > > This doesn't look right: > > [test@libvirt-fedora-31 ~]$ rpm -ql perl-Archive-Tar > /usr/bin/ptar > /usr/bin/ptardiff > /usr/bin/ptargrep > /usr/share/doc/perl-Archive-Tar > /usr/share/doc/perl-Archive-Tar/CHANGES > /usr/share/doc/perl-Archive-Tar/README > /usr/share/man/man1/ptar.1.gz > /usr/share/man/man1/ptardiff.1.gz > /usr/share/man/man1/ptargrep.1.gz > /usr/share/man/man3/Archive::Tar.3pm.gz > /usr/share/man/man3/Archive::Tar::File.3pm.gz > /usr/share/perl5/vendor_perl/Archive > /usr/share/perl5/vendor_perl/Archive/Tar > /usr/share/perl5/vendor_perl/Archive/Tar.pm > /usr/share/perl5/vendor_perl/Archive/Tar/Constant.pm > /usr/share/perl5/vendor_perl/Archive/Tar/File.pm > [test@libvirt-fedora-31 ~]$ > > [test@libvirt-opensuse-15 ~]$ rpm -ql perl-Archive-Tar-Wrapper > /usr/lib/perl5/vendor_perl/5.26.1/Archive > /usr/lib/perl5/vendor_perl/5.26.1/Archive/Tar > /usr/lib/perl5/vendor_perl/5.26.1/Archive/Tar/Wrapper.pm > /usr/lib/perl5/vendor_perl/5.26.1/x86_64-linux-thread-multi > /usr/share/doc/packages/perl-Archive-Tar-Wrapper > /usr/share/doc/packages/perl-Archive-Tar-Wrapper/Changes > /usr/share/doc/packages/perl-Archive-Tar-Wrapper/README > /usr/share/man/man3/Archive::Tar::Wrapper.3pm.gz > [test@libvirt-opensuse-15 ~]$ > > > > python2-setuptools: > > > CentOS7: python2-setuptools > > > + OpenSUSE: python2-setuptools > > We might be able to get away without installing Python 2 packages; > they certainly shouldn't be necessary to build libvirt. > > > > python3-pip: > > > CentOS7: python3-pip > > > Debian9: python3-pip > > > + OpenSUSE: python3-pip > > > Ubuntu16: python3-pip > > > Ubuntu18: python3-pip > > Installing pip isn't necessary either, since openSUSE Leap 15.1 > contains Meson. > > > > wireshark: > > > deb: wireshark-dev > > > Fedora: wireshark-devel > > > + OpenSUSE: wireshark-devel > > > cross-policy-deb: skip > > This now makes more sense as > > wireshark: > deb: wireshark-dev > rpm: wireshark-devel > CentOS: > cross-policy-deb: skip > > > > xen: > > > Fedora: xen-devel > > > + OpenSUSE: xen-devel > > > x86_64-deb: libxen-dev > > > armv7l-deb: libxen-dev > > > aarch64-deb: libxen-dev > > Same as above. > > > Apart from the comments inline, I had to add the following patch in > > order to get Leap working: > > > > ``` > > diff --git a/guests/playbooks/build/jobs/defaults.yml > > b/guests/playbooks/build/jobs/defaults.yml > > index 48cf643..eb4dfd5 100644 > > --- a/guests/playbooks/build/jobs/defaults.yml > > +++ b/guests/playbooks/build/jobs/defaults.yml > > @@ -10,6 +10,7 @@ all_machines: > > - libvirt-freebsd-11 > > - libvirt-freebsd-12 > > - libvirt-freebsd-current > > + - libvirt-opensuse-15 > > - libvirt-ubuntu-16 > > - libvirt-ubuntu-18 > > rpm_machines: > > diff --git a/guests/playbooks/build/projects/libvirt.yml > > b/guests/playbooks/build/projects/libvirt.yml > > index 4b3dfdf..3e3dbba 100644 > > --- a/guests/playbooks/build/projects/libvirt.yml > > +++ b/guests/playbooks/build/projects/libvirt.yml > > @@ -19,6 +19,7 @@ > > - libvirt-fedora-30 > > - libvirt-fedora-31 > > - libvirt-fedora-rawhide > > + - libvirt-opensuse-15 > > - libvirt-ubuntu-16 > > - libvirt-ubuntu-18 > > - include: '{{ playbook_base }}/jobs/autotools-check-job.yml' > > These changes are only necessary to make 'lcitool build' work, and > should go in a separate commit. > > > diff --git a/guests/playbooks/update/tasks/paths.yml > > b/guests/playbooks/update/tasks/paths.yml > > index 770680e..c258ad2 100644 > > --- a/guests/playbooks/update/tasks/paths.yml > > +++ b/guests/playbooks/update/tasks/paths.yml > > @@ -17,7 +17,7 @@ > > - su > > > > - name: 'Look for files' > > - shell: 'find /etc /usr/local/etc -name {{ item }} 2>/dev/null' > > + shell: 'find /usr/local/etc -name {{ item }} 2>/dev/null || find > > /etc -name {{ item }} 2>/dev/null' > > register: find > > with_items: > > - sudoers > > diff --git a/guests/playbooks/update/tasks/users.yml > > b/guests/playbooks/update/tasks/users.yml > > index 0470686..bf149da 100644 > > --- a/guests/playbooks/update/tasks/users.yml > > +++ b/guests/playbooks/update/tasks/users.yml > > @@ -18,12 +18,18 @@ > > line: 'PermitRootLogin without-password' > > state: present > > > > +- name: '{{ flavor }}: Ensure group exists' > > + group: > > + name: '{{ flavor }}' > > + state: present > > + > > - name: '{{ flavor }}: Create user account' > > user: > > name: '{{ flavor }}' > > comment: '{{ flavor }}' > > password: '*' > > shell: '{{ bash }}' > > + group: '{{ flavor }}' > > > > - name: '{{ flavor }}: Set password' > > user: > > ``` > > > > I know Andrea suggested to change the way we deal with finding sudoers > > but, IMHO, it shouldn't be a blocker for your patches. However, I'm > > *not* the maintainer of the project. :-) > > I've posted these separately in > > https://www.redhat.com/archives/libvir-list/2019-December/msg00065.html > > and Fabiano already reviewed them! So consider them merged :) > > > So, with those changes, Leap works and we can build libvirt. > > > > What I'd suggest: > > - Submit a patch just adding Leap (and then you'll have to have an > > agreement with Andrea about whether we'll support 15 or 15.x); > > - After that, let's try to figure out the issue with Tumbleweed and, > > only then, try to have it merged; > > > > Does that make sense? Andrea, Jim, are we on the same page here? > > Yeah, we should get Leap 15.1 working first, and only then worry > about Tumbleweed. > > > Speaking of which: I've run into a fairly major problem with > the Leap 15.1 support enabled by this patch: while unattended > installation works as expected on my laptop (Fedora 31), when I try > the same steps on the CentOS CI production environment (CentOS 7.5) > it doesn't seem to find or recognize the autoinst.xml file: instead, > I get a "please make sure your installation medium is available" > message and the chance to input the information manually, which is > obviously not what we want :) I'll try to figure out what's going > wrong tomorrow. > > > [1] guests/playbooks/update/tasks/packages.yml > -- > Andrea Bolognani / Red Hat / Virtualization > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list