On 3/17/23 13:46, Andrey Drobyshev wrote:
> On 3/17/23 10:37, Laszlo Ersek wrote:
>> On 3/16/23 17:14, Andrey Drobyshev wrote:
>>> On 3/15/23 00:16, Richard W.M. Jones wrote:
>>>> On Tue, Mar 14, 2023 at 04:06:18PM +0200, Andrey Drobyshev wrote:
>>>>> Speaking of "make check": could you point out, for future reference,
>>>>> which particular sub-target you're referring to here?  I can see these:
>>>>> check-am, check-recursive, check-slow, check-TESTS, check-valgrind.  And
>>>>> none of them seems to refer to checking docs integrity.  Yet running
>>>>> entire "make check" might be quite time consuming.
>>>>
>>>> (FYI I'm on holiday at the moment, back 1st April)
>>>
>>> Hi Richard,
>>> Please enjoy your holiday, there's no urgency to answer this :)
>>>
>>>>
>>>> 'make check' runs the test suite and as Laszlo said is reasonably fast
>>>> (on my machine anyway!).  Well, it should be around 5-15 mins.  You
>>>> can add -j4 or -j`nproc` or similar to parallelise the tests.
>>>>
>>>> 'make check-valgrind' runs the same tests but with valgrind.  This is
>>>> highly unlikely to affect this patch series which only touches OCaml
>>>> code.
>>>>
>>>> 'make check-slow' runs an extra set of tests that as you might guess
>>>> are quite slow.  I wouldn't bother with this for a simple patch.  I
>>>> usually run it before major releases.
>>>>
>>>> The other targets you mention are internally generated by automake.
>>>>
>>>> Then you can run single tests, eg:
>>>>
>>>> $ make check -C docs TESTS=" test-v2v-docs.sh "
>>>
>>> Thanks for the detailed overview.  That is actually the answer to my
>>> original question: I was looking for a sub-target which would check the
>>> docs, and failed to see that instead there's a separate test for that
>>> purpose.  And the reason for that is I tried running the suite as root
>>> and without "--keep-going" option, thus causing the recursive "check"
>>> target to fail on tests/ before it gets to the docs/.
>>>
>>> This raises another question.  If we run the "make check" suite
>>> properly, i.e. as non-root, then:
>>>
>>> 1. libvirt is being chosen as the default input method;
>>
>> I don't understand this. "Input method" is set with the "-i" option.
>>
>> Did you mean "default libguestfs backend"?
> 
> Sorry, you're right, I seem to have missed the terms here.  I meant the
> libguestfs backend, which of course has nothing to do with v2v's input
> method.
> 
>>
>> But even in that case, I don't understand. The default libguestfs
>> backend is supposed to be "direct".
>>
>> If you have LIBGUESTFS_BACKEND permanently set to libvirt in your
>> environment, for various reasons, I'd suggest simply unsetting
>> LIBGUESTFS_BACKEND before running "make check".
> 
> No, I don't have this set in my environment.  But here's the thing: in
> RHEL, CentOS (and in other RHEL-like distros, I presume) libguestfs is
> being built with the option "--with-default-backend=libvirt" set:
> 
> https://gitlab.com/redhat/centos-stream/rpms/libguestfs/-/blob/5089358fe5/libguestfs.spec#L744

correct...

> 
> And if you don't put extra effort in linking your freshly built v2v with
> libguestfs also built from source, but rather link it against the
> libguestfs present in the system -- then the issue still exists and the
> question remains.

... and that must be why I'm not seeing this issue on my RHEL-9.1
system, even with LIBGUESTFS_BACKEND unset: I had made it a "sticking
point" to build all libguestfs-related projects from source, and to
ensure they'd consume each other.

(... Except for augeas, because... well, let me not finish that sentence.)

It's not trivial at all; I've been referring to this dependency diagram
(constructed with Rich's help):

                       libvirt-ocaml ---------
                                              \
                       libnbd <--> nbdkit---   \
                                            \   \
  hivex    ----> libguestfs  --------------------> virt-v2v -> virt-p2v
              /              \                  /
   supermin --                -> guestfs-tools -

(And this diagram doesn't even show the libguestfs-common submodule,
which is shared by libguestfs, guestfs-tools and virt-v2v. If you want
to test common submodule changes, you need to play with superproject
patches like

diff --git a/.gitmodules b/.gitmodules
index 1343142128f6..7b1a84418c2b 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,4 @@
 [submodule "common"]
        path = common
-       url = https://github.com/libguestfs/libguestfs-common
+       url = file:///home/lacos/src/v2v/libguestfs-common
+       branch = .

and commands like "git submodule sync". Very cumbersome.)

Building and running *all* the projects, from upstream checkouts, had
not even been possible ~1.5 years ago; that was why I started my
contributions to these projects with patches that would enable said
building/running, covering the *entire* project set.)

... So, I would propose to just set LIBGUESTFS_BACKEND=direct for
running the test suite :)

> 
> I'm wondering how do you happen to avoid this issue, supposing that
> you're also doing your development on a RHEL-like OS?

See above :)

> Am I missing
> something here?  And having all that said: wouldn't it be beneficial and
> more robust to explicitly set libguestfs backend when running the test
> suite?

Yes, I think that LIBGUESTFS_BACKEND=direct makes sense as a built-in
default for the test suite, but we'll have to wait for Rich's opinion on
that.

Laszlo

_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to