[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: pygnulib: progress and some questions (func_emit_autoconf_snippets)

From: Bruno Haible
Subject: Re: pygnulib: progress and some questions (func_emit_autoconf_snippets)
Date: Thu, 28 Dec 2017 02:35:04 +0100
User-agent: KMail/5.1.3 (Linux/4.4.0-101-generic; KDE/5.18.0; x86_64; ; )

Hi Dmitry,

> 1. At line 4260, what's the place where $modules variable gets assigned?

Indeed the comments for function func_emit_autoconf_snippets are misleading:
This functions receives two module lists:
  $modules (implicit),
  $1 (explicit: first argument).

Where does $modules come from?
  - For the invocation in func_import, line 5640 and 5659
    it is set at line 5298. But I'm not sure this was intended this way, maybe
    another list should be used instead of "$main_modules"?
  - For the invocation in func_create_testdir, line 6288 and 6290 and 6402 and 
6404 and 6417
    it does not appear to be set in a consistent and correct way.
    (It is set differently if $single_configure and ! $single_configure.)
    This is probably a bug.
The set of modules that _ought_ to be used here is the set of modules
being used for the current configure file. That's my current understanding.
But I'd really need to look at a couple of test cases in order to
firmly answer the question.

> 2. What's the logic for dependencies processing, starting at line 4298?

First the code intersects $deps with $modules. This matters for two cases:
  - when --avoid is used: we don't want to invoke the initialization code for
    a module that is not present because the user has required it to be avoided.
  - when ! $single_configure and we are generating the configure file for the 
    directory: we may have a dependency from a module in $tests_modules to a 
    in $main_modules, but since the $main_modules are in a different directory
    they should be all treated like --avoid'ed modules here.

Then the test
    if func_cond_module_p "$dep"; then
is based on the consideration that the unconditional modules have their
initialization code already emitted (unconditionally) by lines 4261..4271.

Then comes the conditional invocation of the initialization code
                echo "      if $condition; then"
                echo "        $shellfunc"
                echo '      fi'
with a trivial optimization for the (frequent) case that $condition = "true".

> 3. Do you have an idea how could the algorithm mapped to the described API

You need db.dependencies($module) here. db.demanders(...) is not used here.
db.demanders(...) will be useful, in order to implement a new command-line
option --extract-reverse-dependencies.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]