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