Hi Kenneth,

Thanks for the feedback.

Meanwhile I got the run_cmd_qa problem solved.  I needed an easyblock
because the configuration step prompts to agree with the license.  I could
have sidestepped the issue by patching that out of the configuration
script, but that seems a bit unethical ;)  The package is Qt, and it is a
prerequisite for UNIFY.

Adding the basic stuff to toolchains seems like a good idea.

Best regards, -gjb-




On Tue, Jun 25, 2013 at 6:56 PM, Kenneth Hoste <[email protected]>wrote:

> Hi Geert-Jan,
>
> On 25 Jun 2013, at 16:51, Geert Jan BEX wrote:
>
> > Hi Easybuilders,
> >
> > A couple of questions:
> >       • I'm running into trouble using run_cmd_qa in a custom easyblock.
>  The command's output is pretty huge, and after a while, the maximum
> hitCount is exceeded.  As I understand the inner workings of run_cmd_qa, it
> keeps on reading bits of stdout/stderr from the command it is executing,
> and it tries to match with the questions, answering them when found.
>  Failing that, it will check for matches in the no_qa list, and when
> finding one, it resets hitCount, incrementing it otherwise.
> > So if I get this right, I've to provide sufficient no_qa elements so
> that the whole of the output of the command is "covered", i.e., making sure
> that there is a no_qa match very n lines?
>
>
> Your view on it is close to correct, but not fully.
> The hit count is only increased if the output remains the same and no
> question could be matched against the end of the output.
>
> As soon as the output changes, the hitCount is reset (if not, it's a bug),
> because progress was detected without needing to provide an answer.
> So, if some operation is taking a while, run_cmd_qa assumes it's a
> question (i.e., the command is waiting for input), and will try to match a
> question to the output. If it can't, it will die assuming something is
> wrong.
>
> So, basically, yes, you'll have to try and come up with no_qa entries
> (which can be regex patterns b.t.w.) that match any operation that is
> printed at the end of the output for a while, but is not an actual question
> (e.g. a compile or copy command). Up until now, we've never run into a
> procedure in which this proves impractical (i.e. usually the no_qa list can
> be kept quite small).
>
> Can you share an example of what you're running into?
>
> Also, out of curiosity: what is the custom easyblock for?
>
>
> >       • There are a number of modules that are really basic, e.g., git,
> CMake...  Perhaps it would make sense to define a very minimal toolchain
> (even one that simply uses the resident gcc) for these kind of modules?
>  That would allow to really minimize dependencies.  Just a question, maybe
> it is a dumb idea.
>
> That's one way, yes, but then you're depending on the system-provided
> tools again, which is one of the things we want to avoid.
> Encouraging to provide modules for all dependencies makes reproducibility
> more likely, both across different systems/OSs, and on the same system with
> one or multiple minor/major OS updates in between.
>
> Relying on whatever (version of) tools the system provides is too likely
> to change, which may result into builds that suddenly break (we've all seen
> that).
>
> That being said, more stuff should be part of compiler toolchains, yes.
> There is a ticket open for exactly that. Because tools/libs like zlib,
> ncurses, binutils (ld, ar, ...) are (very) commonly dependencies, they
> should be (and will be) part of the compiler toolchains we define. See
> https://github.com/hpcugent/easybuild-framework/issues/644 . Maybe also
> tar/gzip should be included.
>
>
> regards,
>
> Kenneth
>
>


-- 
- Geert Jan BEX
- HPC analyst/consultant Hasselt University & University of Leuven
- email:                [email protected]
- homepage:         http://alpha.uhasselt.be/~gjb/
- PGP public key: http://alpha.uhasselt.be/~gjb/pgp.txt
---------------------------------------------------------

Reply via email to