Сборка с использованием debhelper - часть 3
# This is the debhelper compatibility version to use. export DH_COMPAT=3
# These are used for cross-compiling and for saving the configure script # from having to guess our platform (since we know it already) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
В следующие строки дают возможность указав в переменной окружения DEB_BUILD_OPTIONS debug и/или nostrip собрать пакет с отладочной информацией.
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) CFLAGS += -g endif ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) INSTALL_PROGRAM += -s endif
Правило для конфигурации. Не является обязательным, требуется из обязателного build. Исли пакет использует GNU autoconf (как тот, что я взял для примера), то вставит и вызов configure. В данном случае указано, что для построения файла config.status необходим файл configure и осуществить указанные действия.
Скрипт dh_testdir пытается проверить в нужном ли каталоге мы находимся (проверяет существование файлов debian/control и других)
config.status: configure dh_testdir
# Add here commands to configure the package. ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info
От себя добавлю, что в большинстве случаев эта строчка не является целиком корректной. Необходимо в большинстве случаев добавлять -sysconfdir=/etc (аналогичная ситуация с /var)
Проверяем правило build-stamp, которое в свою очередь проверяет config-status. Этим добиваемся того, чтобы не производить перекомпиляцию пакета, если не было его переконфигурации.
build: build-stamp
build-stamp: config.status dh_testdir
# Add here commands to compile the package.
Собственно, сама сборка. Если необходимы дополнительные команды либо параметры make, их можно добавить сюда.
$(MAKE) #/usr/bin/docbook-to-man debian/package.sgml > mc.1
touch build-stamp
Правило очистки от предыдущей сборки dh_testroot проверяет, от рута ли мы собираем (используем fakeroot), dh_clean чистит дерево сборки от всевозможных core, backup'ов ...