Waf + gccdeps on Mingw64/MSYS2?

Sebastian Huber sebastian.huber at embedded-brains.de
Mon Dec 2 06:27:46 UTC 2019


On 02/12/2019 01:24, Chris Johns wrote:
> On 2/12/19 11:10 am, Chris Johns wrote:
>> On 28/11/19 5:55 pm, Sebastian Huber wrote:
>>> Hello,
>>>
>>> I encountered this error on a Mingw64 and MSYS2 system:
>>>
>>> Waf: Leaving directory `/c/rtems/home/rtems-5/build/powerpc/qoriq_e6500_32'
>>> Build failed
>>> Traceback (most recent call last):
>>>    File
>>> "/c/rtems/home/rtems-5/.waf3-2.0.18-96675f149f50dab16c9e2e6aaf5e787b/waflib/Task.py",
>>> line 190, in process
>>>      self.post_run()
>>>    File "/c/rtems/home/rtems-5/gccdeps.py", line 144, in post_run
>>>      raise ValueError('could not find %r for %r' % (x, self))
>>> ValueError: could not find
>>> 'c:\\rtems\\home\\rtems-5\\bsps\\shared\\dev\\clock\\clockimpl.h' for
>>>          {task 7696547476648: c clock-config.c -> clock-config.c.13.o}
>>
>> Tried to build sparc/erc32 on Windows MSYS2 using the eng.pdf quick start guide
>> and the build locked up with ...
>>
>> [1706/4038] Compiling build/sparc/erc32/testsuites/libtests/dl06/dl06-pre.exe
>> [1707/4038] Compiling build/sparc/erc32/testsuites/libtests/dl07/dl07-pre.exe
>> [1708/4038] Compiling build/sparc/erc32/testsuites/libtests/dl08/dl08-pre.exe
>> [1709/4038] Compiling build/sparc/erc32/testsuites/libtests/dl09/dl09-pre.exe
>> [1710/4038] Compiling build/sparc/erc32/testsuites/libtests/dl10/dl10-pre.exe
>> Unhandled exception in thread started by <bound method Thread._bootstrap of
>> <Consumer(Thread-1712, started daemon 25777509536)>>
>> Traceback (most recent call last):
>>    File "/usr/lib/python3.7/threading.py", line 522, in set
>>      self._cond.notify_all()
>>    File "/usr/lib/python3.7/threading.py", line 365, in notify_all
>>      self.notify(len(self._waiters))
>>    File "/usr/lib/python3.7/threading.py", line 346, in notify
>>      raise RuntimeError("cannot notify on un-acquired lock")
>> RuntimeError: cannot notify on un-acquired lock
>>
>> During handling of the above exception, another exception occurred:
>>
>> Traceback (most recent call last):
>>    File "/usr/lib/python3.7/threading.py", line 890, in _bootstrap
>>      self._bootstrap_inner()
>>    File "/usr/lib/python3.7/threading.py", line 915, in _bootstrap_inner
>>      self._started.set()
>>    File "/usr/lib/python3.7/threading.py", line 522, in set
>>      self._cond.notify_all()
>>    File "/usr/lib/python3.7/threading.py", line 244, in __exit__
>>      return self._lock.__exit__(*args)
>> RuntimeError: release unlocked lock
>>
> 
> I updated MSYS2 to the latest and this error did not appear however I am now
> seeing ...
> 
> [1867/4038] Processing testsuites/libtests/tar01/init.o:
> testsuites/libtests/tar01/init.c
> build/sparc/erc32/testsuites/libtests/tar01/tar01-tar.h
> build/sparc/erc32/testsuites/libtests/tar01/tar01-tar-gz.h
> build/sparc/erc32/testsuites/libtests/tar01/tar01-tar-xz.h ->
> build/sparc/erc32/testsuites/libtests/tar01/init.o
> In file included from D:/opt/rtems/rtems.seb/testsuites/libtests/tar01/init.c:26:0:
> testsuites/libtests/tar01/tar01-tar.h:7:12: warning: extra tokens at end of
> #ifndef directive
>   #ifndef
> __D:_opt_rtems_rtems_seb_build_sparc_erc32_testsuites_libtests_tar01_tar01_tar_h
>              ^
> testsuites/libtests/tar01/tar01-tar.h:8:12: warning: ISO C99 requires whitespace
> after the macro name
>   #define
> __D:_opt_rtems_rtems_seb_build_sparc_erc32_testsuites_libtests_tar01_tar01_tar_h
>              ^
> In file included from D:/opt/rtems/rtems.seb/testsuites/libtests/tar01/init.c:27:0:
> testsuites/libtests/tar01/tar01-tar-gz.h:7:12: warning: extra tokens at end of
> #ifndef directive
>   #ifndef
> __D:_opt_rtems_rtems_seb_build_sparc_erc32_testsuites_libtests_tar01_tar01_tar_gz_h
>              ^
> D:/opt/rtems/rtems.seb/testsuites/libtests/tar01/init.c: In function
> 'test_untar_unzip_tgz':
> D:/opt/rtems/rtems.seb/testsuites/libtests/tar01/init.c:44:26: error:
> 'tar01_tar_gz' undeclared (first use in this function); did you mean
> 'tar01_tar_size'?
>   #define TARFILE_GZ_START tar01_tar_gz
>                            ^
> D:/opt/rtems/rtems.seb/testsuites/libtests/tar01/init.c:198:26: note: in
> expansion of macro 'TARFILE_GZ_START'
>     char *buffer = (char *)TARFILE_GZ_START;
>                            ^~~~~~~~~~~~~~~~
> D:/opt/rtems/rtems.seb/testsuites/libtests/tar01/init.c:44:26: note: each
> undeclared identifier is reported only once for each function it appears in
>   #define TARFILE_GZ_START tar01_tar_gz
>                            ^
> D:/opt/rtems/rtems.seb/testsuites/libtests/tar01/init.c:198:26: note: in
> expansion of macro 'TARFILE_GZ_START'
>     char *buffer = (char *)TARFILE_GZ_START;
>                            ^~~~~~~~~~~~~~~~
> D:/opt/rtems/rtems.seb/testsuites/libtests/tar01/init.c:45:26: error:
> 'tar01_tar_gz_size' undeclared (first use in this function); did you mean
> 'tar01_tar_size'?
>   #define TARFILE_GZ_SIZE  tar01_tar_gz_size
>                            ^
> D:/opt/rtems/rtems.seb/testsuites/libtests/tar01/init.c:199:19: note: in
> expansion of macro 'TARFILE_GZ_SIZE'
>     size_t buflen = TARFILE_GZ_SIZE;
>                     ^~~~~~~~~~~~~~~

I think this revealed two issues.

1. The file name sanitation in bin2c was not really good. I fixed it 
like this:

https://git.rtems.org/rtems-tools/commit/?id=83b8f1f2a5838a5d56e15c70d44348e3e393e3f7

2. The custom commands use a lot of node.abspath(). I have this pattern 
from the Waf book. However, the standard .c file to .o rule uses a mix 
of relative and absolute paths, e.g.:

'../../../testsuites/samples/ticker/init.c'

'-o/build/git-rtems-5/build/arm/xilinx_zynq_a9_qemu/testsuites/samples/ticker/init.c.87.o'

Do you have a preference?

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.


More information about the devel mailing list