Problems with omniorb4 when installing Tango 9.3.4 on Ubuntu 20.04.5

I’ve tried installing Tango 9.3.4 on Ubuntu 20.04.5 following https://tango-controls.readthedocs.io/en/latest/installation/tango-on-linux.html#debian-ubuntu

Unfortunately,

./configure --enable-java=yes --enable-mariadb=yes --enable-dbserver=yes --enable-dbcreate=yes --with-mysql-admin=root --with-mysql-admin-passwd='mypassword' --prefix=/usr/local/tango

fails with

checking omniORB4/CORBA.h usability... no
checking omniORB4/CORBA.h presence... no
checking for omniORB4/CORBA.h... no
checking for omniORB4... no
configure: error: Package requirements (omniORB4 >= 4.1.2) were not met:

No package 'omniORB4' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables omniORB4_CFLAGS
and omniORB4_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

But libomniorb4-dev has been installed with apt-get at the beginning.

Can I point ./configure manually to the omniorb paths? If so, how can I find out which those are?

Hi,

It’s indeed strange that it does not find omniORB4 if you installed libomniorb4-dev package.
Is pkg-config installed on your host?

What does

pkg-config --list-all | grep omni

return?

Here is the filelist of the libomniorb4-dev package for amd64: Ubuntu – Error

Hoping this helps,
Reynald

Thanks for the quick reply!

pkg-config –list-all | grep omni

returns nothing, nor does

pkg-config –-list-all

But pkg-config is installed, as verified by

pkg-config --help
find /usr/ -iname "*omni*.pc*"

gives

/usr/lib/x86_64-linux-gnu/pkgconfig/omniORB4.pc

,
among others.

But even after

export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig

no packages are listed by

pkg-config –-list-all

I have the files which are listed under the link, so I assume libomniorb4-dev is fully installed.

Very strange behaviour. It should work with the export PKG_CONFIG_PATH environment variable as you’ve set it…
And the --list-all option should return some packages, even when PKG_CONFIG_PATH is not set.
It looks like you have a problem with your pkg-config installation.

Could it be a file permission problem?
Can you read the content of /usr/lib/x86_64-linux-gnu/pkgconfig/omniORB4.pc?

Could it be that you have a dummy or degraded version of pkg-config or you are using another script or binary named pkg-config?

which pkg-config

to know which exe or script you’re using.

What does

sudo apt list --installed | grep pkg-config

return for you?

I’ve just setup a new ubuntu 20.04 virtual machine and followed the steps at https://tango-controls.readthedocs.io/en/latest/installation/tango-on-linux.html#debian-ubuntu. Worked like a charm.

@kfrank: Did you install all required packages as required? There are multiple omniORB packages required.

And in case you are not tied to 9.3.4 specially we also have a more recent 9.3.5. And a new 9.4.1. All at Releases · tango-controls / TangoSourceDistribution · GitLab.

@Reynald:

I can read /usr/lib/x86_64-linux-gnu/pkgconfig/omniORB4.pc.

which pkg-config

yields

/software/opt/focal/x86_64/python/3.9-2021.11/bin/pkg-config
sudo apt list --installed | grep pkg-config

yields only

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

but no packages (but sudo apt list --installed lists many packages).

@t-b:

I’ve followed the same steps and installed the packages as required

sudo apt-get install g++ openjdk-8-jdk mariadb-server libmariadb-dev zlib1g-dev libomniorb4-dev libcos4-dev omniidl libzmq3-dev make

If I repeat this now, I get

Reading package lists... Done
Building dependency tree
Reading state information... Done
g++ is already the newest version (4:9.3.0-1ubuntu2).
make is already the newest version (4.2.1-1.2).
libcos4-dev is already the newest version (4.2.2-0.9build4).
libomniorb4-dev is already the newest version (4.2.2-0.9build4).
libzmq3-dev is already the newest version (4.3.2-2ubuntu1).
omniidl is already the newest version (4.2.2-0.9build4).
zlib1g-dev is already the newest version (1:1.2.11.dfsg-2ubuntu1.5).
libmariadb-dev is already the newest version (1:10.3.37-0ubuntu0.20.04.1).
mariadb-server is already the newest version (1:10.3.37-0ubuntu0.20.04.1).
openjdk-8-jdk is already the newest version (8u352-ga-1~20.04).
The following packages were automatically installed and are no longer required:
  apt-config-icons-large apt-config-icons-large-hidpi fprintd fwupd-signed libabw-0.1-1 libandroid-json-java
  libcdr-0.1-1 libcfitsio-dev libcfitsio-doc libclucene-contribs1v5 libclucene-core1v5 libcmis-0.5-5v5
  libdap-dev libdapserver7v5 libe-book-0.1-1 libeot0 libepsilon-dev libepubgen-0.1-1 libetonyek-0.1-1
  libexttextcat-2.0-0 libfprint-2-2 libfreexl-dev libfwupd2 libfwupdplugin5 libfyba-dev libgcab-1.0-0
  libgeotiff-dev libgl2ps-dev libglazedlists-java libhttpasyncclient-java libhttpmime-java
  libjava-string-similarity-java libjcat1 libjcip-annotations-java libjempbox-java libjgoodies-forms-java
  libjhlabs-filters-java libjson-c-dev libjsoncpp-dev libjuh-java libjurt-java libkml-dev libkmlconvenience1
  libkmlregionator1 libkmlxsd1 liblangtag-common liblangtag1 libmbim-glib4 libmbim-proxy libmicroba-java
  libminizip-dev libmwaw-0.3-3 libnetcdf-cxx-legacy-dev libodfgen-0.1-1 libogdi-dev libopenjp2-7-dev
  liborcus-0.15-0 libpam-fprintd libpoppler-dev libpoppler-private-dev libpotrace0 libqmi-glib5 libqmi-proxy
  libreoffice-style-colibre libreoffice-style-tango libridl-java libsmbios-c2 libsnapd-qt1 libspatialite-dev
  libspin-java libtheora-dev libunirest-java-java libuno-cppu3 libuno-cppuhelpergcc3-3
  libuno-purpenvhelpergcc3-3 libuno-sal3 libuno-salhelpergcc3-3 libunoil-java libunoloader-java
  liburiparser-dev libvisio-0.1-1 libvtk7-java libvtk7-jni libwps-0.4-4 libxerces-c-dev libxmlb2 libxmlsec1
  libxmlsec1-nss qttools5-dev qttools5-private-dev tcl-dev tcl-vtk7 tk-dev uno-libs-private ure vtk7
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 174 not upgraded.

I think this is fine but I’m doubtful about the pkg-config.

I agree with you. This is very suspicious that you get it from a python 3.9 related directory.

What does

pkg-config --version

return?

On my Ubuntu 20.04, it returns 0.29.1.

Did you try to reinstall pkg-config package?

sudo apt update; sudo apt install pkg-config

Kind regards,
Reynald

pkg-config --version

returns 0.29.2.
After reinstalling it I get past the omniORB4 error, but now ./configure gets stuck at

checking for LIBZMQ... yes
basename: missing operand
Try 'basename --help' for more information.
basename: missing operand
Try 'basename --help' for more information.
checking for zmq.hpp... no
configure: error: Couldn't find a compatible zmq.hpp

But

find /usr/include -name "zmqpp.hpp"

returns

/usr/include/zmqpp/zmqpp.hpp

I think I need the zmqpp.hpp from cppzmq. So far I tried building it from source and installing it with conda, but I think I don’t have the necessary permissions. I’ll keep trying.

I’ve managed to install it, finally. The trick was to use a bash with anaconda deactivated

conda deactivate

since then all the paths pointed to the correct C compilers.
Now the only thing that’s missing is Jive. The procedure did not install jive in /usr/local/tango/bin/
Can I install this manually? The download link here https://tango-controls.readthedocs.io/en/latest/tools-and-extensions/built-in/jive/index.html?highlight=jive seems to be invalid.

Configure tries to search for java, I think 8 in this case, and only if that could be found, the java tools are installed. What does configure output?