Thomas Braun activity https://gitlab.com/t-b 2026-03-20T15:08:28Z tag:gitlab.com,2026-03-20:5226782842 Thomas Braun deleted project branch improve-docker-template at tango-controls / gitlab-ci-templates 2026-03-20T15:08:28Z t-b Thomas Braun [email protected]

Thomas Braun (c4148791) at 20 Mar 15:08

tag:gitlab.com,2026-03-20:5226782789 Thomas Braun closed issue #14: Enhancements ideas for Docker.gitlab-ci.yml at tango-controls / gitlab-ci-templates 2026-03-20T15:08:27Z t-b Thomas Braun [email protected]

The use case is https://gitlab.com/tango-controls/docker/ci/cpp/debian12 where we right now have different branches for each version. The reason is that only with this approach we can use the Docker.gitlab.yml because it requires the docker file to be Dockerfile and also only pushes to the a registry destination named like the branch.

We would like to move away from these multiple branches and just use one branch (main).

Then we would have multiple docker files a la

Dockerfile.main
Dockerfile.lts
...

and some customized CI on top of Docker.gitlab.yml:

build-image-main:
  extends: build-image
  variables:
    DOCKERFILE: "Dockerfile.main"
    DESTINATION: "cppTango_version_main"

build-image-lts:
  extends: build-image
  variables:
    DOCKERFILE: "Dockerfile.lts"
    DESTINATION: "cppTango_version_lts"
...

The build-image job should then also not complain that there is no Dockerfile.

@beenje Is that feasible?

tag:gitlab.com,2026-03-20:5226782729 Thomas Braun pushed to project branch main at tango-controls / gitlab-ci-templates 2026-03-20T15:08:27Z t-b Thomas Braun [email protected]

Thomas Braun (6ed43950) at 20 Mar 15:08

Merge branch 'improve-docker-template' into 'main'

... and 1 more commit

tag:gitlab.com,2026-03-20:5226782706 Thomas Braun accepted merge request !38: Add variables to docker template at tango-controls / gitlab-ci-templates 2026-03-20T15:08:26Z t-b Thomas Braun [email protected]

Allow to extend the build-image job to build images based on different Dockerfiles.

Fix #14

I tested with parallel here: https://gitlab.com/tango-controls/docker/tango-test/-/jobs/10976621086

Or with extend: https://gitlab.com/tango-controls/docker/tango-test/-/jobs/10976666940

If you want the job to run with the default values and add an extra job, I'd use extend. If you don't want the default values, parallel might be better.

Anyway, if DOCKERFILE doesn't exist, the job won't run. So you don't have to overwrite the default build-image if Dockerfile doesn't exist.

tag:gitlab.com,2026-03-20:5226782489 Thomas Braun commented on merge request !38 at tango-controls / gitlab-ci-templates 2026-03-20T15:08:23Z t-b Thomas Braun [email protected]

Yes sorry, this sunk too deep on the todo list. Yes let's merge now.

tag:gitlab.com,2026-03-20:5225896601 Thomas Braun commented on issue #134 at tango-controls / TangoTickets 2026-03-20T11:28:44Z t-b Thomas Braun [email protected]

I already added an entry to AOB for the next kernel meeting.

tag:gitlab.com,2026-03-20:5225887752 Thomas Braun commented on issue #134 at tango-controls / TangoTickets 2026-03-20T11:26:10Z t-b Thomas Braun [email protected]

@dlacoste-esrf And I'm glad to already found some supporter ;)

tag:gitlab.com,2026-03-20:5225870498 Thomas Braun commented on issue #134 at tango-controls / TangoTickets 2026-03-20T11:21:12Z t-b Thomas Braun [email protected]

Thanks for chiming in. The cpptango-dbg package holds the stripped off debug symbols, see https://github.com/conda-forge/cpptango-feedstock/blob/b467aa7b6828feb9dde44d4abe830b82427a2a88/recipe/build.sh#L21. The build prefix is only a minor issue and that can be worked around with gdb's solib-search-path.

tag:gitlab.com,2026-03-19:5224194551 Thomas Braun commented on merge request !1615 at tango-controls / cppTango 2026-03-19T23:08:10Z t-b Thomas Braun [email protected]

I can do it if you want or we squeeze it in this one and be done…

Feel free to squeeze it in here. This is also easy to test, see `catch2_tango_type_traits.cpp. Yes we really do have some unit tests.

tag:gitlab.com,2026-03-19:5224173719 Thomas Braun commented on issue #115 at tango-controls / TangoDatabase 2026-03-19T22:57:18Z t-b Thomas Braun [email protected]

I've created TangoTickets#134 with my learnings about getting symbol info for conda packages.

As to the crash this is in the mysql client library. So it looks like we are doing something wrong. I'll try to come up with a reproducer.

In the logs from 1 I see

Mar 18 09:29:58 tangohost01 start_Databaseds[69686]: 2026-03-18T09:29:58,491907+0100 ERROR (DatabaseConnectionPool.cpp:209) sys/database/2 DatabaseConnectionPool::GetDatabase: Error pinging the database with connection 0 with Lost connection to MySQL server during query
Mar 18 09:29:58 tangohost01 start_Databaseds[69686]: 2026-03-18T09:29:58,491914+0100 ERROR (DatabaseConnectionPool.cpp:211) sys/database/2 Trying reconnection now ...

and it might be the case that the connection recreation is somehow faulty.

tag:gitlab.com,2026-03-19:5224168144 Thomas Braun opened issue #134: How to generate debug symbols for a binary from a conda package at tango-controls / TangoTickets 2026-03-19T22:53:54Z t-b Thomas Braun [email protected] tag:gitlab.com,2026-03-19:5224072195 Thomas Braun commented on merge request !1615 at tango-controls / cppTango 2026-03-19T22:05:08Z t-b Thomas Braun [email protected]

What I mean is that the DevState check should be in is_enum_compatible and that used everywhere.

tag:gitlab.com,2026-03-19:5224034178 Thomas Braun commented on merge request !1615 at tango-controls / cppTango 2026-03-19T21:48:10Z t-b Thomas Braun [email protected]

We use get_ref_type for describe output in the matchers. If that also matches DevState then this needs fixing as also

$git grep DevState | grep enum
src/include/tango/server/Attribute.h:    template <class T, std::enable_if_t<std::is_enum_v<T> && !std::is_same_v<T, Tango::DevState>, T> * = nullptr>
src/include/tango/server/Attribute_templ.h:template <class T, std::enable_if_t<std::is_enum_v<T> && !std::is_same_v<T, Tango::DevState>, T> *>
src/include/tango/server/WAttribute.h:    template <class T, std::enable_if_t<std::is_enum_v<T> && !std::is_same_v<T, Tango::DevState>, T> * = nullptr>
src/include/tango/server/WAttribute_templ.h:template <class T, std::enable_if_t<std::is_enum_v<T> && !std::is_same_v<T, Tango::DevState>, T> *>
tests/catch2_test_dtypes.cpp:struct is_scalar_state_boolean_string_enum<Tango::DevState> : std::true_type

looks suspicous. But not here or?

tag:gitlab.com,2026-03-19:5223750838 Thomas Braun commented on issue #115 at tango-controls / TangoDatabase 2026-03-19T20:01:55Z t-b Thomas Braun [email protected]

Well generating a stacktrace when the binaries are from conda is ... fun ..

Stacktrace:

#0  0x00007f56189c53f9 in free_state_change_info(MYSQL_EXTENSION*) () from /home/thomas/micromamba/envs/database-115-repro/lib/libmysqlclient.so.24.1.0
#1  0x00007f56189d40a6 in mysql_send_query () from /home/thomas/micromamba/envs/database-115-repro/lib/libmysqlclient.so.24.1.0
#2  0x00007f56189d41b6 in mysql_real_query () from /home/thomas/micromamba/envs/database-115-repro/lib/libmysqlclient.so.24.1.0
#3  0x0000562b4577e50a in DataBase_ns::DataBase::simple_query (this=this@entry=0x562b6c9ba730, 
    sql_query={static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<std::__new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7f5598003a60 "SELECT exported,ior,version,pid,server,host,class FROM device WHERE name = 'dserver/bahrmannsteppermotorcontrol/17192821';"}, _M_string_length = 122, {_M_local_buf = "z\000\000\000\000\000\000\000{\000\000\000\000\000\000", _M_allocated_capacity = 122}}, method=method@entry=0x562b457975b3 "db_import_device()", 
    dch=@0x7f560cff7478: {m_dcp = {<std::__shared_ptr<DatabaseConnectionPool, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<DatabaseConnectionPool, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x562b6c9af870, _M_refcount = {_M_pi = 0x562b6c9af860}}, <No data fields>}, m_id = 0, m_db = 0x7f5600006a40}) at /usr/local/src/conda/tango-database-5.28/DataBaseUtils.cpp:463
#4  0x0000562b45781643 in DataBase_ns::DataBase::query (this=this@entry=0x562b6c9ba730, 
    sql_query={static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<std::__new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7f55980039d0 "SELECT exported,ior,version,pid,server,host,class FROM device WHERE name = 'dserver/bahrmannsteppermotorcontrol/17192821';"}, _M_string_length = 122, {_M_local_buf = "z\000\000\000\000\000\000\000\000'\266\025F\257\316\004", _M_allocated_capacity = 122}}, method=method@entry=0x562b457975b3 "db_import_device()", 
    dch=@0x7f560cff7478: {m_dcp = {<std::__shared_ptr<DatabaseConnectionPool, (__gnu_cxx::_Lock_policy)2>> = {<std::__shared_ptr_access<DatabaseConnectionPool, (__gnu_cxx::_Lock_policy)2, false, false>> = {<No data fields>}, _M_ptr = 0x562b6c9af870, _M_refcount = {_M_pi = 0x562b6c9af860}}, <No data fields>}, m_id = 0, m_db = 0x7f5600006a40}) at /usr/local/src/conda/tango-database-5.28/DataBaseUtils.cpp:500
#5  0x0000562b4574332d in DataBase_ns::DataBase::db_import_device (this=0x562b6c9ba730, argin=<optimized out>) at /usr/local/src/conda/tango-database-5.28/DataBase.cpp:5582
#6  0x0000562b4575f26c in DataBase_ns::DbImportDeviceClass::execute (this=0x562b6c9b5f10, device=0x562b6c9ba730, 
    in_any=@0x7f55980051a0: {pd_tc = 0x7f55980051d0, pd_mbuf = 0x7f5598005050, pd_data = 0x7f55980035c0, pd_marshal = 0x7f5618624500 <marshalString_fn(cdrStream&, void*)>, pd_destructor = 0x7f56186244f0 <deleteString_fn(void*)>})
    at /usr/local/src/conda/tango-database-5.28/DataBaseClass.cpp:1316
#7  0x00007f5619538150 in Tango::DeviceClass::command_handler(Tango::DeviceImpl*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, CORBA::Any const&) () from /home/thomas/micromamba/envs/database-115-repro/lib/libtango.so.10.1.2
#8  0x00007f56194e3c85 in Tango::DeviceImpl::command_inout(char const*, CORBA::Any const&) () from /home/thomas/micromamba/envs/database-115-repro/lib/libtango.so.10.1.2
#9  0x00007f56191e5370 in Tango::Device_2Impl::command_inout_2(char const*, CORBA::Any const&, Tango::DevSource) [clone .cold] () from /home/thomas/micromamba/envs/database-115-repro/lib/libtango.so.10.1.2
#10 0x00007f561952353d in Tango::Device_4Impl::command_inout_4(char const*, CORBA::Any const&, Tango::DevSource, Tango::ClntIdent const&) () from /home/thomas/micromamba/envs/database-115-repro/lib/libtango.so.10.1.2
#11 0x00007f5619400e61 in _0RL_lcfn_6fe2f94a21a10053_a3000000(omniCallDescriptor*, omniServant*) () from /home/thomas/micromamba/envs/database-115-repro/lib/libtango.so.10.1.2
#12 0x00007f56194ce9a9 in Tango::client_call_interceptor(omniCallDescriptor*, omniServant*) () from /home/thomas/micromamba/envs/database-115-repro/lib/libtango.so.10.1.2
#13 0x00007f56188c939a in omniCallHandle::upcall(omniServant*, omniCallDescriptor&) () from /home/thomas/micromamba/envs/database-115-repro/lib/libomniORB4.so.3.4
#14 0x00007f561941a250 in Tango::_impl_Device_4::_dispatch(omniCallHandle&) () from /home/thomas/micromamba/envs/database-115-repro/lib/libtango.so.10.1.2
#15 0x00007f56188c246f in omni::omniOrbPOA::dispatch(omniCallHandle&, omniLocalIdentity*) () from /home/thomas/micromamba/envs/database-115-repro/lib/libomniORB4.so.3.4
#16 0x00007f56188a26c4 in omniLocalIdentity::dispatch(omniCallHandle&) () from /home/thomas/micromamba/envs/database-115-repro/lib/libomniORB4.so.3.4
#17 0x00007f56188e73b4 in omni::GIOP_S::handleRequest() () from /home/thomas/micromamba/envs/database-115-repro/lib/libomniORB4.so.3.4
#18 0x00007f56188e7a31 in omni::GIOP_S::dispatcher() () from /home/thomas/micromamba/envs/database-115-repro/lib/libomniORB4.so.3.4
#19 0x00007f56188e5026 in omni::giopWorker::execute() () from /home/thomas/micromamba/envs/database-115-repro/lib/libomniORB4.so.3.4
#20 0x00007f5618895c1f in omniAsyncWorker::real_run() () from /home/thomas/micromamba/envs/database-115-repro/lib/libomniORB4.so.3.4
#21 0x00007f56188960be in omniAsyncPoolServer::workerRun(omniAsyncWorker*) () from /home/thomas/micromamba/envs/database-115-repro/lib/libomniORB4.so.3.4
#22 0x00007f5618895699 in omniAsyncWorker::mid_run() () from /home/thomas/micromamba/envs/database-115-repro/lib/libomniORB4.so.3.4
#23 0x00007f561968dc2c in Tango::Util::create_CORBA_objects()::{lambda(omni::omniInterceptors::createThread_T::info_T&)#1}::_FUN(omni::omniInterceptors::createThread_T::info_T&) () from /home/thomas/micromamba/envs/database-115-repro/lib/libtango.so.10.1.2
#24 0x00007f5618895b24 in omniAsyncWorker::run(void*) () from /home/thomas/micromamba/envs/database-115-repro/lib/libomniORB4.so.3.4
#25 0x00007f56187c40bd in omni_thread_wrapper () from /home/thomas/micromamba/envs/database-115-repro/lib/libomnithread.so.4.4
#26 0x00007f5618069ac3 in ?? ()
#27 0x0000000000000000 in ?? ()
tag:gitlab.com,2026-03-19:5223673817 Thomas Braun opened issue #1636: catch2_change_event.cpp: Add variants for scoped/unscoped enums at tango-controls / cppTango 2026-03-19T19:33:18Z t-b Thomas Braun [email protected] tag:gitlab.com,2026-03-19:5223494288 Thomas Braun commented on merge request !1615 at tango-controls / cppTango 2026-03-19T18:35:50Z t-b Thomas Braun [email protected]

@dlacoste-esrf Updated the MR. We now also test unscoped enums.

tag:gitlab.com,2026-03-19:5223492516 Thomas Braun pushed to project branch bugfix/use-correct-types-in-enum-test at tango-controls / cppTango 2026-03-19T18:35:14Z t-b Thomas Braun [email protected]

Thomas Braun (38ead1d8) at 19 Mar 18:35

tests/catch2_change_event.cpp: Add variant with unscoped enum as well

... and 2 more commits

tag:gitlab.com,2026-03-19:5223247240 Thomas Braun commented on merge request !1614 at tango-controls / cppTango 2026-03-19T17:19:16Z t-b Thomas Braun [email protected]

This is the best thing to do. Less code is less code to maintain and test.

tag:gitlab.com,2026-03-19:5222591223 Thomas Braun opened merge request !1615: catch2_change_event.cpp: Add variants for scoped/unscoped enums at tango-controls / cppTango 2026-03-19T14:48:27Z t-b Thomas Braun [email protected]

Close #1636

tag:gitlab.com,2026-03-19:5222586187 Thomas Braun pushed new project branch bugfix/use-correct-types-in-enum-test at tango-controls / cppTango 2026-03-19T14:47:37Z t-b Thomas Braun [email protected]

Thomas Braun (2436959b) at 19 Mar 14:47

tests/catch2_change_event.cpp: Prefer Enumeration values instead of...

... and 3 more commits