Boost logo

Boost-Build :

Subject: Re: [Boost-build] Question about calling rules from within a generator
From: Tom Brown (tabsoftwareconsulting_at_[hidden])
Date: 2019-04-02 01:36:02

On 4/1/19 5:39 PM, Steven Watanabe via Boost-build wrote:
> On 4/1/19 3:11 PM, Tom Brown via Boost-build wrote:
>> On 4/1/19 4:44 PM, Steven Watanabe via Boost-build wrote:
>>> On 4/1/19 2:31 PM, Thomas Brown via Boost-build wrote:
>>>> I was trying to use the assert module to check various assumptions
>>>> within my custom generator class when I found it is not possible to
>>>> call those rules.  This is also true of other user-defined rules
>>>> within the same file as the generator.  Is this expected?
>>>    You need to import them inside the class.
>>> Rules from the outer module are not automatically
>>> visible within the class.  A class is an independent
>>> module that has no semantic relationship to the
>>> context in which it is defined.

I now understand what you meant by this. The import has to happen
within the class, not within the rule within the class. That was my

>> Thanks for your help!  This worked for `errors` in my example, but not
>> for `assert`.
> I don't see `errors` anywhere in the code you posted?

I tried that after your first reply (incorrectly, it happens).

>>   It looks like `errors` only imports `sequence` within a
>> single rule,
> How is that relevant?

It's not, I was trying to understand why assert and error might work
differently when imported (but they don't work differently, they work
exactly the same).

> You're not using assert correctly in g.jam.
> It takes a rule to call, not just a list.

This is true, but the real mistake I made was that I was importing
assert either at the beginning of the file or within a rule within a
class, not within the class.

You've helped me understand better what's going on. I'm still not very
sure where an import can be done and what its scope is, but I can at
least continue what I was trying to.


Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at