[libvirt PATCH 2/2] ci: Call meson consistently

Martin Kletzander mkletzan at redhat.com
Thu Apr 8 10:56:05 UTC 2021


On Thu, Apr 08, 2021 at 11:39:55AM +0100, Daniel P. Berrangé wrote:
>On Thu, Apr 08, 2021 at 12:32:10PM +0200, Martin Kletzander wrote:
>> On Thu, Apr 01, 2021 at 03:43:11PM +0200, Andrea Bolognani wrote:
>> > On Wed, 2021-03-31 at 23:31 +0200, Martin Kletzander wrote:
>> > > On Fri, Mar 26, 2021 at 11:35:02AM +0100, Andrea Bolognani wrote:
>> > > > We should always pass --werror and display the contents of the
>> > > > log file in case of failure.
>> > >
>> > > Any reason why the lines are not in one place?  What I did in libnbd
>> > > (first draft, still up for review) is that I just took all the lines of
>> > > the script and put them inside `ci/build_script.sh` with only the most
>> > > basic conditionals to accommodate various types of runs.  That way
>> > > common things are in one place.  It could take a parameter (like what
>> > > ninja target to run) and you can run things after that (like `website`
>> > > and `potfiles` jobs do.  Just an idea.
>> >
>> > As is often the case, the raisins are mostly hysterical ;)
>> >
>> > I think the initial idea was to keep things as simple as possible,
>> > but I agree with you that when you have seven (!) build recipes, most
>> > of which are almost identical, it makes sense to think about
>> > consolidating them to a single location.
>> >
>>
>> So I took a look at the consolidation.  I went through few iterations
>> after which I ended with two scripts, one that does the meson part and
>> one that does the ninja part.  The first one does not need to take any
>> parameters, the other one would be nice if it took one, that's enough.
>> What's weird about it is the way I think of it.  The most understandable
>> way would be a `configure` that runs `meson ...` and then another one,
>> which runs `ninja ...` with parameter(s).
>>
>> At that point you can make the second one a Makefile and just do:
>>
>>   ./configure
>>   make
>>
>> most of the time.  But because we can just put the configure part into
>> the makefile we can also just have a makefile that does all of it.  It
>> might sound stupid, but it is the easiest way how to provide few targets
>> without extra scripting and everything around it.  On the other hand it
>> feels weird just suggesting that, although I cannot pinpoint why that
>> is.  Maybe that it would be too controversial?
>>
>> At this point I honestly do not know whether I went too far or it
>> actually makes sense and I am not capable of recognising the difference.
>
>I've not looked back at the full thread, but I'd say that if the answer
>to any problem involves the words  "configure" or "make", then we're
>likely approaching the problem in the wrong way, because we're really
>supposed to have removed use of make and autotools (or anything that
>pretends to look like a configure script),
>

It's only the name that suggested this, it could've been a
`ci/build_script.sh`, I just used the name because it, of course,
reminded me of the old ways.

Basically the whole point of this is to have the line:

   meson build --werror $MESON_OPTS || (cat build/meson-logs/meson-log.txt && exit 1)

only written in one place, and possibly similarly with some ninja
invocations.  It would be almost exclusively used by the CI, although it
could be also useful for some people.

>Regards,
>Daniel
>-- 
>|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
>|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
>|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
-------------- 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/libvir-list/attachments/20210408/16e1a49c/attachment-0001.sig>


More information about the libvir-list mailing list