Можно ли кросс-компилировать файлы .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-битной машине? И если да, то как?

3
задан 16 August 2012 в 17:01

1 ответ

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

0
ответ дан 16 August 2012 в 17:01

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

Похожие вопросы: