Можно ли кросс-компилировать файлы.deb с помощью debhelper? Как?

У меня есть пакет (драйверы Dymo CUPS в данном случае), который мне нужно скомпилировать в файл.deb для включения в репозитории частной сети. Сам исходный код достаточно независим от архитектуры, поэтому он будет компилироваться как в 32-разрядных, так и в 64-разрядных системах. я использую debhelper собрать пакеты и успешно скомпилировать пакет для нативной архитектуры.

Большинство машин работают на Precise 64-битной, но некоторые работают на Precise 32-битной. Текущая сборочная машина является 64-битной. То, что я хочу сделать, это "кросс-компилировать" пакет и генерировать 32-битные пакеты из 64-битных пакетов.

Что я пробовал:

  • Добавление флагов "-a" или "--architecture" к fakeroot debian/rules binary - терпит неудачу, потому что не понимает аргумент (я должен был скопировать его из dpkg или другой команды)
  • добавлять override_dh_auto_configure в debian/rules что поставляет -m32 для CFLAGS и т. д. - строится как 32-битная, но упаковывает и определяет зависимости как 64-битную
  • Установка dpkg-cross и работает fakeroot debian/rules binary-cross (основано на идее из этих инструкций по кросс-компиляции) - терпит неудачу, потому что бинарный кросс не существует как стандарт dh команда

Вещи, которые я не могу попробовать:

  • Launchpad / PPA / любой другой внешний сервис сборки - все должно быть частью нашей инфраструктуры

Есть ли способ сделать debhelper создавать 32-битные файлы.deb на 64-битной машине? И если да, то как?

1 ответ

debuild -ai386 должен все настроить правильно, но это зависит от наличия установленных многоархитектных зависимостей сборки; это проще с недавней версией sbuild (боюсь, более поздний, чем точный), и это зависит от того, все ли библиотеки, которые вы используете, были преобразованы в многоархивную. Смотрите https://wiki.ubuntu.com/CrossBuilding для деталей.

Другие вопросы по тегам