autoconf - как создать шаблон и скопировать его в соответствующий каталог - PullRequest
0 голосов
/ 07 октября 2019

Я использую autoconf & automake в C-проекте. Я хотел бы создать пакет .deb, поэтому у меня есть следующий файл control.in:

Source: myproject
Section: misc
Priority: optional
Maintainer: Paul Walker <pwalk@test.it>
Build-Depends: debhelper (>=9), autotools-dev@MORE_DEPENDENCIES@
Standards-Version: 1.0.0
Homepage: https://www.my-website.it/

...

Я хотел бы настроить этот файл с помощью autoconf, поскольку в некоторых случаях может быть MORE_DEPENDENCIESЯ установил флаг времени настройки.

Этот файл control.in находится в папке stubs/, после замены переменной MORE_DEPENDENCIES я также хотел бы скопировать полученный файл control вконечная папка назначения debian/ для создания пакета .deb.

Поэтому, по сути, я пытаюсь, чтобы autoconf сделал следующее:

  1. Включите {srcdir}/stubs/ в качестве входной папки в порядкечтобы заменить макросы в файле .in, находящемся там
  2. Сконфигурируйте заглушку {srcdir}/stubs/control.in, замените там любой макрос, сгенерируйте файл {srcdir}/stubs/control с замененными макросами
  3. Копируйте {srcdir}/stubs/controlв конечную папку назначения {srcdir}/debian/control

Я искал примеры или в официальной документации, но все еще не могу найти, как настроить файл .in вне корневой папки источника.

Относительно того, какчтобы скопировать окончательный файл в папку debian / ', полагаю, я мог бы использовать символическую ссылку ? Есть ли лучший способ?

1 Ответ

0 голосов
/ 07 октября 2019

Это проблема top-of-the-foodchain.

Инструменты упаковки Debian предназначены для того, чтобы быть инструментом верхнего уровня для сборки пакетов Debian, и файл управления должен оставаться неизменным длявесь прогон сборки пакета. Вы, вероятно, можете обдумать это, если хотите создавать только двоичные пакеты, но тогда нет смысла изменять зависимости сборки, потому что они оцениваются раньше.

Обычный процесс сборки будет distcleanпостроить дерево, чтобы записать изменения в исходном пакете, затем перезапустить configure и собрать. Если вы обновите debian / control на этом этапе, результаты будут неопределенными.

Если вам нужно обновлять debian / control программно, используйте отдельный механизм, который недоступен при обычной сборке пакета. Если у вас есть обычные выпуски, а не вырезающие пакеты из разрабатываемых версий, возможно, имеет смысл рассматривать упаковку как отдельную.

...