Skip to content

Remove log4tango from tango.pc & makefiles; add dummy liblog4tango.so

As discussed during meeting at ESRF, following changes has to be made after log4tango has been removed (#30 (closed)):

  • assets/lib/cpp/tango.pc.in - remove log4tango as tango dependency from pkg-config file. This file is used by templates generated by Pogo on linux
  • assets/cppserver/*/Makefile.am - remove -llog4tango linker option from all device servers. NOTE: in each device server source repository there is another makefile which should be aligned as well (but this is out of scope of this change)
  • provide dummy liblog4tango.so that exports no symbols at all but is left in 9.3.3 for backwards compatibility. It shall be removed in 9.4.0.

I've tried to install tango with these changes in an empty docker container (so there were no liblog4tango from previous installation). It compiles and installs fine.

Such libraries are generated:

root@472df231a8e6:/tango/tango-9.3.3# tree /prefix/lib/
/prefix/lib/
|-- liblog4tango.a
|-- liblog4tango.la
|-- liblog4tango.so -> liblog4tango.so.5.0.1
|-- liblog4tango.so.5 -> liblog4tango.so.5.0.1
|-- liblog4tango.so.5.0.1
|-- libtango.a
|-- libtango.la
|-- libtango.so -> libtango.so.9.3.3
|-- libtango.so.9 -> libtango.so.9.3.3
|-- libtango.so.9.3.3
`-- pkgconfig
    |-- log4tango.pc
    `-- tango.pc

1 directory, 12 files
root@472df231a8e6:/tango/tango-9.3.3# nm -g /prefix/lib/libtango.so.9.3.3 | grep -i log4tango  | wc -l
267
root@472df231a8e6:/tango/tango-9.3.3# nm -g /prefix/lib/liblog4tango.so.5.0.1 | grep -i log4tango | wc -l
0

Swapping liblog4tango with a dummy one works without a need to recompile the program:

$ g++ -I/usr/local/include/tango main.cpp -ltango -llog4tango -lomniDynamic4 -lCOS4 -lomniORB4 -lomnithread -lzmq; echo $?
0

$ ./a.out; echo $?
0

$ sudo rm /usr/local/lib/liblog4tango.*

$ ./a.out; echo $?
./a.out: error while loading shared libraries: liblog4tango.so.5: cannot open shared object file: No such file or directory
127

$ sudo cp ~/TangoSourceDistribution/build/lib/liblog4tango.* /usr/local/lib/

$ ./a.out; echo $?
./a.out: symbol lookup error: /usr/local/lib/libtango.so.9: undefined symbol: _ZTIN9log4tango14LayoutAppenderE
127

$ sudo rm /usr/local/lib/libtango.*
$ sudo cp ~/TangoSourceDistribution/build/lib/libtango.* /usr/local/lib/

$ ./a.out; echo $?
0

Merge request reports