[PATCH 3/6] waf: Fix freebsd-to-rtems.py.

Chris Johns chrisj at rtems.org
Mon Apr 9 08:46:05 UTC 2018


On 9/4/18 5:13 pm, Christian Mauderer wrote:
> Am 09.04.2018 um 03:36 schrieb Chris Johns:
>> On 06/04/2018 22:26, Christian Mauderer wrote:
>>> Update #3351
>>> ---
>>>  builder.py          | 3 +++
>>>  freebsd-to-rtems.py | 3 ++-
>>>  waf_libbsd.py       | 7 +++++--
>>>  3 files changed, 10 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/builder.py b/builder.py
>>> index 2faf98d0..ac199a9b 100755
>>> --- a/builder.py
>>> +++ b/builder.py
>>> @@ -677,3 +677,6 @@ class ModuleManager(object):
>>>      def generateBuild(self):
>>>          for m in self.getEnabledModules():
>>>              self.modules[m].generate()
>>> +
>>> +    def setGenerators(self):
>>> +        pass
>>> diff --git a/freebsd-to-rtems.py b/freebsd-to-rtems.py
>>> index c2f00f86..ec0fcc9a 100755
>>> --- a/freebsd-to-rtems.py
>>> +++ b/freebsd-to-rtems.py
>>> @@ -43,6 +43,7 @@ import getopt
>>>  
>>>  import builder
>>>  import libbsd
>>> +import waf_libbsd
>>
>> I am not comfortable with this happening.
>>
>> What functionality in waf_libbsd do you need here?
>>
>> Can it be moved to the builder class?
> 
> The first patch replaced
> 
>     wafGen = waf_generator.ModuleManager()
> 
> by
> 
>     build = builder.ModuleManager()
> 
> in freebsd_to_rtems.py. The ModuleManager class calls
> 
>     self.setGenerators()
> 
> during init. But the setGenerators() isn't defined in ModuleManager but
> only in the derived classes. Prior to the change from the first commit,
> that has been the waf_generator.ModuleManager. But you moved it to the
> builder. Therefore I used the waf_libbsd.Builder() instead.
> 
> If we want to avoid that change, we need the generators in the base
> class. I can move them if you want.
> 

I think it will be better. This way waf and the generate are connected.

The need for generators like they are is not as important now because we only
support waf.

>>
>>>  
>>>  isForward = True
>>>  isEarlyExit = False
>>> @@ -142,7 +143,7 @@ if isEarlyExit == True:
>>>      sys.exit(0)
>>>  
>>>  try:
>>> -    build = builder.ModuleManager()
>>> +    build = waf_libbsd.Builder()
>>>      libbsd.load(build)
>>>      build.generateBuild()
>>>      build.processSource(isForward)
>>> diff --git a/waf_libbsd.py b/waf_libbsd.py
>>> index eddfaf99..ae8a1ea0 100644
>>> --- a/waf_libbsd.py
>>> +++ b/waf_libbsd.py
>>> @@ -40,8 +40,6 @@ import tempfile
>>>  
>>>  import builder
>>>  
>>> -import rtems_waf.rtems as rtems
>>
>> I like this being here because it is loud and clear this is an RTEMS waf app.
> 
> Reason for that is the same as above: The derived Builder is now used in
> the freebsd-to-rtems.py. The rtems_waf.rtems imports waflib which isn't
> available in that context.

Sure.

Chris
> 
>>
>>> -
>>>  windows = os.name == 'nt'
>>>  
>>>  if windows:
>>> @@ -316,6 +314,11 @@ class Builder(builder.ModuleManager):
>>>          pass
>>>  
>>>      def build(self, bld):
>>> +        # This is only necessary for build. But it depends on the waflib which
>>> +        # is only available in a waf context. But we need the module manager for
>>> +        # freebsd_to_rtems.py too.
>>
>> If functionality is to be shared it should be moved to the base module.
>>
>> Chris
>>
>>> +        import rtems_waf.rtems as rtems
>>> +
>>>          #
>>>          # Localize the config.
>>>          #
>>>
> 



More information about the devel mailing list