Important: Please read the Qt Code of Conduct -

moc gets stuck when running in a docker container

  • I am trying to compile a code which uses Qt inside a docker container. The container runs Ubuntu 20.04 with Qt 5.12.5 from official repository, and the host machine CentOS 7. Compilation gets stuck at running moc on on a parameter file:

    /usr/lib/qt5/bin/moc @/HERD/software/source/

    which produces no output on screen and remains running forever, and I have to kill moc with ctrl+c. The content of the parameter file is ok: moc runs fine on it outside the container, and also putting the content of the file directly on the moc command line works in the container. So it seems a problem related with file access/processing by moc from inside the container. Indeed, running moc on any other file (also non-parameters one) leads to a halt without any message; the only sign of life appears when passing a non existent file:

    $ /usr/lib/qt5/bin/moc @nonexistent.file
    moc: Cannot open options file specified with @

    In this thread on StackOverflow I found that Qt >= 5.10 makes use of statx calls when compiled with kernel >= 4.12, which is the case of the Ubuntu Qt package I installed in my container, while the host CentOS system has kernel 3.10 by default. So I updated the CentOS kernel of the host machine to 5.6.2 vial elrepo, to no avail.

    Does anybody have a clue? Thanks.

Log in to reply