RSB Issue with lexicographic comparison of python versions (shown on Ubuntu 22.04 LTS/python 3.10 platform).

Karel Gardas karel at functional.vision
Tue Apr 19 10:06:21 UTC 2022


   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?

Thanks,
Karel


More information about the devel mailing list