Out of tree builds with waf?

Sebastian Huber sebastian.huber at embedded-brains.de
Thu Nov 5 18:02:44 UTC 2020


On 05/11/2020 18:27, Sebastian Huber wrote:

>
> On 05/11/2020 18:22, Sebastian Huber wrote:
>> On 05/11/2020 18:16, Andrew Butterfield wrote:
>>
>>>  I'm not a waf expert, but might this section in their book help?
>>>
>>> https://waf.io/book/#_fundamental_waf_commands 
>>> <https://waf.io/book/#_fundamental_waf_commands>
>>>
>>> Can variables `top` and `out` in the example there be manipulated to 
>>> do want you want?
>>
>> Yes, the --top and --out options works somehow, but I get a warning 
>> like this:
>>
>> Waf: Entering directory 
>> `/home/EB/sebastian_h/src/rtems-source-builder/tmp/build/sparc/erc32'
>> CWD /home/EB/sebastian_h/src/rtems-source-builder/tmp is not under 
>> /home/EB/sebastian_h/src/rtems, forcing --targets=* (run distclean?)
>>
>> Also the documentation says "Though Waf may be called from any folder 
>> containing a /wscript/ file,", so I am not sure if this is really 
>> supported what I am doing.
>
> What works is something like this:
>
> ./waf configure --out $PWD/tmp/xxx/build
>
> called from the source tree. However, this has some side-effects.
>
> 1. A .waf* directory is created in the source tree (this is an issue 
> with a read-only source tree).
>
> 2. Waf somehow remembers this configuration. You can call "./waf" to 
> build it. So, there must be some hidden state in the source tree. This 
> is not really an out of tree build. You cannot have multiple 
> independent build trees.

This happens if I use a read-only source tree:

~/tmp/out-of-tree > pwd
/home/EB/sebastian_h/tmp/out-of-tree
~/tmp/out-of-tree > ~/src/rtems/waf --top $HOME/src/rtems-read-only 
--out $PWD/build configure --rtems-config $PWD/config.ini
Setting top to                           : 
/home/EB/sebastian_h/src/rtems-read-only
Setting out to                           : 
/home/EB/sebastian_h/tmp/out-of-tree/build
Configure board support package (BSP)    : sparc/erc32
Checking for program 'sparc-rtems6-gcc'  : 
/opt/rtems/6/bin/sparc-rtems6-gcc
Checking for program 'sparc-rtems6-g++'  : 
/opt/rtems/6/bin/sparc-rtems6-g++
Checking for program 'sparc-rtems6-ar'   : /opt/rtems/6/bin/sparc-rtems6-ar
Checking for program 'sparc-rtems6-ld'   : /opt/rtems/6/bin/sparc-rtems6-ld
Checking for program 'ar'                : /opt/rtems/6/bin/sparc-rtems6-ar
Checking for program 'g++, c++'          : 
/opt/rtems/6/bin/sparc-rtems6-g++
Checking for program 'ar'                : /opt/rtems/6/bin/sparc-rtems6-ar
Checking for program 'gas, gcc'          : 
/opt/rtems/6/bin/sparc-rtems6-gcc
Checking for program 'ar'                : /opt/rtems/6/bin/sparc-rtems6-ar
Checking for program 'gcc, cc'           : 
/opt/rtems/6/bin/sparc-rtems6-gcc
Checking for program 'ar'                : /opt/rtems/6/bin/sparc-rtems6-ar
Checking for asm flags '-MMD'            : yes
Checking for c flags '-MMD'              : yes
Checking for cxx flags '-MMD'            : yes
Traceback (most recent call last):
   File 
"/home/EB/sebastian_h/src/rtems/.waf-2.0.20-36f5354d605298f6a89c09e0c7ef6c1d/waflib/Scripting.py", 
line 119, in waf_entry_point
     run_commands()
   File 
"/home/EB/sebastian_h/src/rtems/.waf-2.0.20-36f5354d605298f6a89c09e0c7ef6c1d/waflib/Scripting.py", 
line 182, in run_commands
     ctx=run_command(cmd_name)
   File 
"/home/EB/sebastian_h/src/rtems/.waf-2.0.20-36f5354d605298f6a89c09e0c7ef6c1d/waflib/Scripting.py", 
line 173, in run_command
     ctx.execute()
   File 
"/home/EB/sebastian_h/src/rtems/.waf-2.0.20-36f5354d605298f6a89c09e0c7ef6c1d/waflib/Configure.py", 
line 101, in execute
     env.store(os.path.join(Context.run_dir,Options.lockfile))
   File 
"/home/EB/sebastian_h/src/rtems/.waf-2.0.20-36f5354d605298f6a89c09e0c7ef6c1d/waflib/ConfigSet.py", 
line 146, in store
     Utils.writef(filename,''.join(buf))
   File 
"/home/EB/sebastian_h/src/rtems/.waf-2.0.20-36f5354d605298f6a89c09e0c7ef6c1d/waflib/Utils.py", 
line 160, in writef
     with open(fname,m)as f:
IOError: [Errno 13] Permission denied: 
'/home/EB/sebastian_h/src/rtems-read-only/.lock-waf_linux2_build'

-- 
embedded brains GmbH
Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber at embedded-brains.de
Phone: +49-89-18 94 741 - 16
Fax:   +49-89-18 94 741 - 08
PGP: Public key available on request.

embedded brains GmbH
Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier: https://embedded-brains.de/datenschutzerklaerung/



More information about the devel mailing list