On 05/11/2020 19:02, Sebastian Huber wrote:

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'

This error can be fixed with the "--no-lock-in-top --no-lock-in-run" options. The

CWD /home/EB/sebastian_h/src/rtems-source-builder/tmp is not under /home/EB/sebastian_h/src/rtems, forcing --targets=* (run distclean?)

warning can be avoided using "--targets=*". So, with a couple of extra options it seems to be possible to do an out of tree build with read-only sources.

--
embedded brains GmbH
Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@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/

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to