Назад в раздел
Итак, все оказалось не так уж и просто, и порт потребовал
некоторых модификаций для того, чтобы заставить его работать.
В этом разделе мы расскажем, шаг за шагом, как его
модифицировать, чтобы он работал с нашей системой портов.
Во-первых, когда пользователь дает в своем каталоге с
портом команду make, происходит
целая череда событий. Во время чтения этого текста может
оказаться полезным иметь файл
bsd.port.mk открытым в другом окне, что сильно поможет
в их понимании.
Но не волнуйтесь сильно, если вы не до конца понимаете,
что делается в bsd.port.mk, не
так уж много людей его понимает...
:->
-
Запускается цель
fetch. Цель fetch
отвечает за то, что архив исходных текстов имеется в
наличии локально в каталоге
DISTDIR. Если цель
fetch не может найти требуемые файлы в каталоге
DISTDIR, то он будет
искаться по указателю URL
MASTER_SITES, который устанавливается в
Makefile, а также на нашем основном ftp-сервере по
адресу
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/,
куда мы по возможности помещаем дистрибутивные файлы
для архива. Затем она попытается сгрузить указанный
файл с помощью FETCH,
полагая, что запрашивающая машина имеет прямое
подключение к Интернет. Если файл скачается удачно,
то он будет помещен в каталог
DISTDIR для последующего использования и
обработки.
-
Выполняется цель
extract. Она ищет дистрибутивный файл порта (как
правило, tar-архив gzip) в каталоге DISTDIR и распаковывает его во
временный каталог, задаваемый переменной WRKDIR (по умолчанию work).
-
Выполняется цель
patch. Во-первых, применяются все патчи,
заданные переменной
PATCHFILES. Во-вторых, если какие-либо файлы с
патчами, носящие имена patch-*, имеются в
подкаталоге PATCHDIR (по
умолчанию это каталог
files), то они применяются в этот момент в
алфавитном порядке.
-
Запускается цель
configure. Здесь может выполняться любая из
многих различных вещей.
-
Если существует скрипт
scripts/configure, то он запускается.
-
Если задана переменная
HAS_CONFIGURE или
GNU_CONFIGURE, то запускается скрипт
WRKSRC/configure.
-
Если задана переменная
USE_IMAKE, то запускается команда XMKMF (по умолчанию это xmkmf -a).
-
Выполняется цель
build. Она отвечает за переход в собственный
рабочий каталог порта (WRKSRC) и его построение. Если задана
переменная USE_GMAKE, будет
использоваться GNU-версия утилиты make, в противном случае будет
использована системная утилита
make.
Выше перечислены стандартные действия. Кроме того, вы
сами можете определить цели pre-что-то или post-что-то, или создать скрипты
с такими именами в подкаталоге
scripts, и они будут запущены до или после выполнения
действий по умолчанию.
Например, если у вас есть цель
post-extract, определенная в вашем файле Makefile и
файл pre-build в подкаталоге scripts, то после выполнения обычных
действий по распаковке, будет вызвана цель post-extract а скрипт pre-build будет выполнен перед запуском
стандартных правил построения. Рекомендуется использовать
цели из Makefile, если действия
достаточно просты, потому что в дальнейшем будет проще
определить, какие нестандартные действия требует порт.
Действия по умолчанию выполняются целями do-что-то из bsd.port.mk. Например, команды для
распаковки порта находятся в цели
do-extract. Если вам не хватает цели по умолчанию, вы
можете ее исправить, переопределив цель do-something в вашем файле Makefile.
Note: ``Основные'' цели (к примеру, extract, configure, и тд.) не делают ничего
больше, чем проверяют успешность завершения всех
предыдущих шагов и вызывают настоящие цели или скрипты,
и их не нужно менять. Если вам нужно изменить
распаковку, исправляйте
do-extract, но никогда не трогайте extract!
Теперь вы представляете, что происходит, когда
пользователь набирает команду
make, теперь давайте пройдемся через рекомендуемые для
создания настоящего порта шаги.
По вопросам связанным с системой портов для FreeBSD, пишите по
адресу <ports@freebsd.org>.
По вопросам связанным с этом документацией, пишите по адресу
<doc@freebsd.org>.
|
|
|
|