RSB Issue with lexicographic comparison of python versions (shown on Ubuntu 22.04 LTS/python 3.10 platform).
Chris Johns
chrisj at rtems.org
Tue Apr 19 23:03:55 UTC 2022
On 19/4/2022 8:06 pm, Karel Gardas wrote:
>
> Chris,
>
> testing RSB on soon to be release Ubuntu 22.04 LTS. This distro provides python
> 3.10 and interestingly gdb compilation fails badly on it with:
>
> making dir:
> /home/karel/workspace/rtems-source-builder/rtems/build/tmp/gmp-6.1.0-x86_64-linux-gnu-1-1000/home/karel/workspace/rtems-tools/share/rtems/rsb
>
> reporting: devel/gmp-6.1.0.cfg -> gmp-6.1.0-x86_64-linux-gnu-1.xml
> making dir:
> /home/karel/workspace/rtems-source-builder/rtems/build/tmp/gmp-6.1.0-x86_64-linux-gnu-1-1000/home/karel/workspace/rtems-tools/share/rtems/rsb
>
> config: tools/rtems-gdb-11.2.cfg
> error: shell macro failed:
> /home/karel/workspace/rtems-source-builder/source-builder/sb/rtems-build-dep -c
> gcc -l : 2: error: no library (-l) provided
> Build Set: Time 0:01:01.843930
>
>
> The reason for this is wrong usage of probably lexicographic comparison of
> python versions in gdb-common-1.cfg:
>
> Let's apply this debug patch to it and see the output:
>
> diff --git a/source-builder/config/gdb-common-1.cfg
> b/source-builder/config/gdb-common-1.cfg
> index c7f3955..45e3b88 100644
> --- a/source-builder/config/gdb-common-1.cfg
> +++ b/source-builder/config/gdb-common-1.cfg
> @@ -110,6 +110,7 @@
> %if %{gdb-python-config} != %{nil}
> %define gdb-python-lib-filter awk 'BEGIN{FS="
> "}/python/{for(i=1;i<NF;++i)if(match($i,".*lpython.*")) print
> "lib"substr($i,3)"*";}'
> %if %{gdb-python-ver-mm} < 3.8
> + %error "not working, python is %{gdb-python-ver-mm} and yet we're in <
> 3.8 block!"
> %define gdb-python-config-lib-check-flags --ldflags
> %else
> %define gdb-python-config-lib-check-flags --ldflags --embed
>
>
>
> and the output is:
>
> Build Set: 6/rtems-arm
> config: tools/rtems-gdb-11.2.cfg
> error: config error: gdb-common-1.cfg:113: "not working, python is 3.10 and yet
> we're in < 3.8 block!"
> Build Set: Time 0:00:00.090733
>
> Sorry about the %error usage, have not found any way how to debug cfg files yet
> except of moving %error directive around...
>
> Do you have any idea how to make 3.10 to be bigger/higher than 3.8 in this
> comparison?
The number 3.8 is less than 3.10 so if we changed things so it was a numeric
check it would still fail.
I suggest %{gdb-python-ver-mm} is split into major and minor parts and each checked:
%define gdb-python-ver-major %(echo "%{gdb-python-ver-mm}" | sed -e 's/\..*//')
%define gdb-python-ver-minor %(echo "%{gdb-python-ver-mm}" | sed -e 's/.*\.//')
then:
%if %{gdb-python-ver-major} < 3 && %{gdb-python-ver-minor} < 8
Chris
More information about the devel
mailing list