all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: Eric Bavier <ericbavier@openmailbox.org>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH] WIP: Output linters
Date: Fri, 15 Jul 2016 16:19:21 +0200	[thread overview]
Message-ID: <87oa5z0ys6.fsf@gnu.org> (raw)
In-Reply-To: <20160714132726.617a2abc@openmailbox.org> (Eric Bavier's message of "Thu, 14 Jul 2016 13:27:26 -0500")

Eric Bavier <ericbavier@openmailbox.org> skribis:

> On Wed, 13 Jul 2016 12:32:48 +0200
> ludo@gnu.org (Ludovic Courtès) wrote:
>
>> Hi!
>> 
>> ericbavier@openmailbox.org skribis:
>> 
>> > The current patch just adds a simple check for the presence of build directory
>> > strings in the output, which may affect build reproducibility across machines.
>> > Other checks that might be useful might include checks:
>> >
>> > * for "recent" timestamps, which might indicate use of __DATE__ or `date`,
>> >
>> > * for presence of '.DIR' or other empty directories,
>> >
>> > * for proper placement of documentation,
>> >
>> > * for documentation that might best be moved to a "doc" output, or
>> >
>> > * for self-contained pkg-config files, etc.  
>> 
>> All good ideas!  This reminds me that Taylan had posted a .pc file
>> parser to check for dependencies that should be propagated; this could
>> be used as one of the checks.
>> 
>> > Any such checks obviously rely on the package outputs being in the store.  On
>> > the one hand both local builds and substitutes are expensive.  But on the
>> > other hand we'd like 'guix lint' to be run before someone submits a patch or
>> > pushes their commits.  Being a good submitter, they hopefully went through the
>> > trouble to test that the package builds, so the package outputs are mostly
>> > likely in the store anyhow, and 'guix lint' wouldn't have any extra work to
>> > do.
>> >
>> > I'd like to hear from others whether they think this WIP has enough merit to
>> > include in 'guix lint', and if so what other checks might be worth including.  
>> 
>> So far such checks were done as extra build phases: ‘validate-runpath’
>> and ‘validate-documentation-location’.  The advantage is that they
>> cannot be skipped unwillingly; the build succeeds if and only if all the
>> checks passed.  The downside is that adding or modifying such a phase
>> leads to a full rebuild.  Something that is both an advantage and a
>> downside is that you get to test the rules on all the packages, so you
>> can (have to :-)) make sure they work well.
>> 
>> I think I prefer keeping such checks as build phases, although perhaps
>> there are cases where this is inconvenient.
>
> I agree with putting as many checks into build phases as we can.
>
> Linter checks seem to be a good place for checking
> issues that are non-fatal or of an "FYI" nature.  I would put in that
> group checks for reproducibility issues, since currently we don't
> consider non-reproducible builds to be a fatal issue (i.e. we don't
> perform every build with --rounds=2). If we eventually declare that
> every package needs to build cleanly with --rounds=2, then we could move
> the relevant linter checks into build phases (to possibly catch issues
> sooner in the build process), or remove the checks altogether (since
> issues would presumably be caught with --rounds=2).

I see.

I think checking for “/tmp/guix-build” references could well be a build
phase, though we need to test to see how well it would work (for
instance, the “debug” outputs should be excluded by default from this
check since they embed source file names, which are in
/tmp/guix-build-*).

But yeah, maybe we can start with a lint “checker” and eventually
migrate it to a build phase if that seems doable.  So your patch is a
step in the right direction.

A question is whether the checker should build the thing or simply skip
the test if the result isn’t already in the store.

Also, we’re starting to have checkers of different severity, and with
different computational costs.  We might start categorizing them so that
one can run just the “cheap” and “important” tests, say.

Thoughts?

Thanks,
Ludo’.

      reply	other threads:[~2016-07-15 14:19 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-13  4:34 [PATCH] WIP: Output linters ericbavier
2016-07-13  4:34 ` [PATCH] gnu: lint: Check package outputs ericbavier
2016-07-13 10:32 ` [PATCH] WIP: Output linters Ludovic Courtès
2016-07-14 18:27   ` Eric Bavier
2016-07-15 14:19     ` Ludovic Courtès [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87oa5z0ys6.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=ericbavier@openmailbox.org \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.