Ошибка при сборке приложения Qt в недавнем Docker - PullRequest
0 голосов
/ 27 мая 2019

Я создаю приложение Qt c ++ в Docker на Travis.Я пытаюсь обновить базовый образ Docker с Cosmic до Disco.

Я сделал эти обновления: Travis dist: Trusty => Образ Xenial Docker: Cosmic => Disco

Теперь я получаю эту ошибкупри сборке:

clang: error: no such file or directory: 'src/native/moc_qgsnative.cpp'

Кажется, это известная проблема в Qt 5.10+, которая требует вызовов statx:

Из заметок о выпуске Qt :

Qt использует системный вызов statx (2) для получения информации о файлах в ядрах 4.12 и новее.Некоторые старые контейнерные системы устанавливают правила защиты системных вызовов, которые не включают этот системный вызов.Если у вас возникают проблемы с запуском приложений Qt внутри контейнеров (например, отчет о файле, который не существует, когда он существует), убедитесь, что statx (2) разрешен в конфигурации контейнера.

Я нашел некоторую информациюговоря, что это можно решить с помощью привилегированного режима при выполнении Docker.Но в нашем случае сборка выполняется в сборке Docker (а не в Docker).Из документации Docker кажется, что здание обладает полными возможностями.

1 Ответ

0 голосов
/ 29 мая 2019

Это действительно из-за вызовов statx.

Это было исправлено в 18.04 (хост).

Для 16.04 можно установить более позднюю версию libseccomp иэто решает проблему:

wget https://launchpad.net/ubuntu/+archive/primary/+files/libseccomp2_2.4.1-0ubuntu0.16.04.2_amd64.deb
sudo dpkg -i libseccomp2_2.4.1-0ubuntu0.16.04.2_amd64.deb
sudo apt-get install -f
...