Выполняйте двоичные файлы / тесты на хосте, которые построены не-хост-инструментарием - PullRequest
1 голос
/ 07 апреля 2020

Сценарий:

  • Мы хотели бы построить наши источники с помощью внешнего / hermeti c набора инструментов, чтобы все входящие в него компоненты, библиотеки и инструменты хоста игнорировались
  • Для этого в Bazel-Configuration введен новый набор инструментов. >>> работает хорошо
  • При использовании -Wl,-rpath=$ORIGIN/%{runtime_library_search_directories}/... определяется относительный путь от бинарника к библиотекам, который должен быть загружен во время выполнения >>> Работает довольно хорошо
  • При выполнении bazel run Двоичный файл выполняется, но используется LD хоста
  • Чтобы избавиться от этого, оболочка (записанная в Bash) вводится с помощью --run_under. >>> грязный обходной путь

Проблема:

--run_under можно использовать только один раз. Нам также нужна эта опция для выполнения тестов в определенной среде c, и поэтому эта опция для нас не является предпочтительной. ИМХО, это тоже немного грязный обходной путь.

Мы также пытались использовать -Wl,--dynamic-linker=<<PATH_TO_LD>>. Но мы не смогли получить ни относительный, ни абсолютный путь к LD при связывании исполняемого файла.

Вопросы:

Есть ли ...

  • ... есть ли способ получить абсолютный / относительный путь к LD при компоновке?
  • ... есть ли другой способ запуска двоичного файла на хосте с помощью цепочки инструментов?
  • ... возможность делать песочницу / ch root, чтобы автоматически использовать правильный LD цепочки инструментов?

Sidenotes:

  • Используется Bazel 1.1.0
  • набор инструментов - сборка GCC8 из источников
  • хост - образ Ubuntu 18.04.1, работающий в docker
...