From: Chris Johns <ch...@contemporary.net.au> - Detect and use a virtual environment if present
- Supports MacOS with python.org in a venv Updates #4892 --- rtems/config/tools/rtems-gdb-13.1.cfg | 4 ++ source-builder/config/gdb-common-1.cfg | 58 ++++++++++++++++---------- 2 files changed, 39 insertions(+), 23 deletions(-) diff --git a/rtems/config/tools/rtems-gdb-13.1.cfg b/rtems/config/tools/rtems-gdb-13.1.cfg index 5766594..1fd0f1c 100644 --- a/rtems/config/tools/rtems-gdb-13.1.cfg +++ b/rtems/config/tools/rtems-gdb-13.1.cfg @@ -14,4 +14,8 @@ %hash sha512 gdb-13-freebsd-include.diff \ 2oKUpRyZIwXwyKHXn5lxXte+jV853Zvg5UHLKLfmVCW4QLrLMFsnO5LvPamIqjXnqPztB8IPEY18pdw8vOYaOw== +%patch add gdb -p1 --rsb-file=gdb-14067-python-config.diff https://sourceware.org/bugzilla/attachment.cgi?id=14783&format=raw +%hash sha512 gdb-14067-python-config.diff \ + HiCV0eQulk0W+G5uu1gCvUn5Ns6bF6RxqOO9kcSi8zpfEHOMzphlOv5cz0IDN5Q8m94na1kRVy++4z6qc43t3w== + %include %{_configdir}/gdb-common-1.cfg diff --git a/source-builder/config/gdb-common-1.cfg b/source-builder/config/gdb-common-1.cfg index 9d67da0..a52e64d 100644 --- a/source-builder/config/gdb-common-1.cfg +++ b/source-builder/config/gdb-common-1.cfg @@ -58,7 +58,7 @@ %define gdb-enable-python %(command -v python2 || true) %endif %if %{gdb-enable-python} == %{nil} - %define gdb-enable-python %(command -v python || true}) + %define gdb-enable-python %(command -v python || true}) %endif %endif %if %{gdb-enable-python} == %{nil} @@ -79,6 +79,9 @@ %endif %if %{gdb-python-config} == %{nil} %define gdb-python-config %(command -v %{gdb-enable-python}-config || true) + %if %{gdb-python-config} == %{nil} + %define gdb-python-config %(command -v %(basename %{gdb-enable-python})-config || true) + %endif %endif %define gdb-python-ver-mm %(%{gdb-enable-python} --version 2>&1 | sed -e 's/.* //g' | rev | cut -d'.' -f2- | rev) %define gdb-python-ver-major %(echo "%{gdb-python-ver-mm}" | sed -e 's/\..*//') @@ -100,30 +103,39 @@ %if %{gdb-python-header-check} == not-found && !%{_rsb_getting_source} %error "gdb: python: header file not found: %{gdb-python-ver-header}, please install" %endif -# -# Too hard to find on MacOS (darwin), the header is good enough. -# -%ifnos darwin - %if %{host_ldflags} == %{nil} - %define gdb-host-libs %{nil} - %else - %define gdb-host-libs -L '%{host_ldflags}' - %endif - %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-major} < 3 || \ - %{gdb-python-ver-major} == 3 && %{gdb-python-ver-minor} < 8 - %define gdb-python-config-lib-check-flags --ldflags - %else - %define gdb-python-config-lib-check-flags --ldflags --embed - %endif - %define gdb-python-config-libs %(%{gdb-python-config} %{gdb-python-config-lib-check-flags} | %{gdb-python-lib-filter}) - %define gdb-python-lib-check %(%{_sbdir}/sb/rtems-build-dep -c %{__cc} %{gdb-host-libs} -l %{gdb-python-config-libs}) +%if %{host_ldflags} == %{nil} + %define gdb-host-libs %{nil} +%else + %define gdb-host-libs -L '%{host_ldflags}' +%endif +%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)"\\*";}' + %define gdb-python-libpath-filter awk 'BEGIN{FS=" "}/python/{for(i=1;i<NF;++i)if(match($i,".*L.*")) print substr($i,3);}' + %if %{gdb-python-ver-major} < 3 || \ + %{gdb-python-ver-major} == 3 && %{gdb-python-ver-minor} < 8 + %define gdb-python-config-lib-check-flags --ldflags %else - %define gdb-python-lib-check %(%{_sbdir}/sb/rtems-build-dep -c %{__cc} %{gdb-host-libs} -l %{gdb-python-ver-lib}) + %define gdb-python-config-lib-check-flags --ldflags --embed %endif - %if %{gdb-python-lib-check} == not-found && !%{_rsb_getting_source} - %error "gdb: python: library file not found: %{gdb-python-ver-lib}, please install" + %define gdb-python-config-libs %(%{gdb-python-config} %{gdb-python-config-lib-check-flags} | %{gdb-python-lib-filter}) + %define gdb-python-config-libpath %(%{gdb-python-config} %{gdb-python-config-lib-check-flags} | %{gdb-python-libpath-filter} | uniq) + %define gdb-python-lib-check %(%{_sbdir}/sb/rtems-build-dep -c %{__cc} %{gdb-host-libs} -L %{gdb-python-config-libpath} -l %{gdb-python-config-libs}) +%else + %define gdb-python-lib-check %(%{_sbdir}/sb/rtems-build-dep -c %{__cc} %{gdb-host-libs} -l %{gdb-python-ver-lib}) +%endif +%if %{gdb-python-lib-check} == not-found && !%{_rsb_getting_source} + %error "gdb: python: library file not found: %{gdb-python-ver-lib}, please install" +%endif + +# +# If in a virtual environment use that as GDB will look 'bin/python' under it +# Supportted in GDB 13 and later. +# +%define gdb_version_major %(echo "%{gdb_version}" | sed -e 's/\..*//') +%if %{gdb_version_major} >= 13 + %define python-venv %(echo $VIRTUAL_ENV) + %if %{python-venv} != %{nil} + %define gdb-enable-python %{python-venv} %endif %endif -- 2.37.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel