, чтобы простым копированием приводить систему в нулевое состояние.
Так вот, поставил все с нуля по инструкции — и сборка прошла успешно. ОК.
Даю челу — а у него фига — нихрена не работает. После разбирательств выяснилось, что важно не только наличие нужных пакетов, но так же и чтобы не было установлено лишних пакетов
А конкретно, какой-то CMake-файл проверяет установлена ли либа и если установлена — то пропускает ее сборку и использует ее. А третья библиотека нуждается в этих h-файлах, которые должны были быть скопированы, но не скопировались т.к. был пропущен шаг.
И это же внешние CMake, которых десятки и в которых сотни строк кода — стараюсь туда не лазить без надобности.
Но как с этим можно жить? Как потом знать почему у кого-то не собирается?
S>а если мне надо посмотреть кусок сгенерированного видео как это в докере сделать ?
Маунт или маппинг вольюма на хост и смотреть с хоста. Вот тут подробнее https://docs.docker.com/storage/volumes/.
Здравствуйте, sergey2b, Вы писали:
S>а если мне надо посмотреть кусок сгенерированного видео как это в докере сделать ? S>докер под вин и linux работает по разному
Здравствуйте, sergey2b, Вы писали:
S>>Для этого придумали докер — у всех всё будет собираться в одинаковом окружении...
S>а если мне надо посмотреть кусок сгенерированного видео как это в докере сделать ? S>докер под вин и linux работает по разному
Надо сначала собрать библиотеку, потом скопировать её на хостовую систему и использовать уже без докера.
Если компилируется библиотека для windows, то использовать докер для windows.
Здравствуйте, sambl74, Вы писали:
S>Для этого придумали докер — у всех всё будет собираться в одинаковом окружении...
То есть применение пакетных систем привело к необходимости использования докера. Фееричненько.
Здравствуйте, pagid_, Вы писали:
_>То есть применение пакетных систем привело к необходимости использования докера. Фееричненько.
Меня в пакетных системах всегда веселило, что для того чтобы собрать маленькую либо — выкачивалось пакетов на порядок больше размером. Зато при сборке были весёлые разноцветные буковки в логе...
Здравствуйте, Shmj, Вы писали:
vsb>>Надо собирать всё в докер контейнерах. Чтобы было зафиксированное стабильное окружение.
S>А вот, кстати, какие-то докер-образы с MacOS вроде есть. Но как? Это же проприетарная ОС. Или эти образы можно запускать только на MacOS?
Думаю, это просто запуск эмулятора (qemu).
S>Получается можно скачать этот образ и даже на Windows работать с эти образом, не запуская MacOC?
Если и получится, то проще просто в virtualbox запускать макось.
Докер нативно поддерживает линукс и винду, макось нативно не поддерживает.
Здравствуйте, vsb, Вы писали:
S>>Получается можно скачать этот образ и даже на Windows работать с эти образом, не запуская MacOC?
vsb>Если и получится, то проще просто в virtualbox запускать макось. vsb>Докер нативно поддерживает линукс и винду, макось нативно не поддерживает.
Так у меня вопрос как раз под МакОсь то. Есть GitHub Actions разве что, но это как бы нельзя повторить локально. А так особо больше ничего нет.
Здравствуйте, Shmj, Вы писали:
S>Так у меня вопрос как раз под МакОсь то. Есть GitHub Actions разве что, но это как бы нельзя повторить локально. А так особо больше ничего нет.
Макось, конечно, самая неудобная ОС для подобных задач.
Я тут вижу три подхода:
1. Использовать виртуальную машину. Программа должна собираться в только что установленной макоси определённой версии. Скриптом установить нужные пакеты (xcode, sdk) и всё, остальное уже в исходниках приложения. Ну и сказать людям, чтобы использовали виртуальную машину, а не свою хостовую систему. Если на хосте макось, запускать гостевую макось — варианты есть, как платные, так и бесплатные.
2. Настроить билд так, чтобы он использовал системные пакеты по минимуму. Ну xcode, sdk наверное из системы надо брать, а все остальные библиотеки чтобы даже не смотрел, что там в системе установлено. Я про cmake ничего не знаю, но вряд ли там это нельзя настроить. Но, конечно, надо в нём разобраться хорошо. Ну и в любом случае хотя бы xcode должен быть зафиксированной версии, а не какой попало.
3. Использовать кросс-компиляцию. Если речь не идёт о разработке каких-то GUI-приложений, а просто о какой-то библиотеке, это должно быть осуществимо. Ну а компилировать уже с линукса.
Здравствуйте, Shmj, Вы писали:
S>Вопрос такой.
S>Вот, промучался несколько дней, пока некая либа у меня таки собиралась под iOS. Тщательно записывал все шаги.
S>Потом повторил все с нуля, как вы знаете я для этого приобрел коробочку с SSD
, чтобы простым копированием приводить систему в нулевое состояние.
S>Так вот, поставил все с нуля по инструкции — и сборка прошла успешно. ОК.
S>Даю челу — а у него фига — нихрена не работает. После разбирательств выяснилось, что важно не только наличие нужных пакетов, но так же и чтобы не было установлено лишних пакетов
S>А конкретно, какой-то CMake-файл проверяет установлена ли либа и если установлена — то пропускает ее сборку и использует ее. А третья библиотека нуждается в этих h-файлах, которые должны были быть скопированы, но не скопировались т.к. был пропущен шаг.
S>И это же внешние CMake, которых десятки и в которых сотни строк кода — стараюсь туда не лазить без надобности.
S>Но как с этим можно жить? Как потом знать почему у кого-то не собирается?
Зачем вообще это кому-то давать? Достаточно что бы собиралось на нужном ранере который прописан в вашем ci/cd сервере, т.е. вся информация по проекту хранится в одном месте.
Здравствуйте, sambl74, Вы писали:
S>Меня в пакетных системах всегда веселило, что для того чтобы собрать маленькую либо — выкачивалось пакетов на порядок больше размером. Зато при сборке были весёлые разноцветные буковки в логе...
Ага, красненькие сообщения об ошибках в туевой хуче этих самых зависимостей
Здравствуйте, Shmj, Вы писали:
S>А конкретно, какой-то CMake-файл проверяет установлена ли либа и если установлена — то пропускает ее сборку и использует ее. А третья библиотека нуждается в этих h-файлах, которые должны были быть скопированы, но не скопировались т.к. был пропущен шаг.
А сборка завязана прям на операционку и всё в ней? Либы ищет в, условно, /usr/lib, заголовки в /usr/include?
Я бы вот это менял.
Или настройками окружения — все пути не системные, а локальные, или можно попробовать помудрить с chroot, например.