Создаем порт для FreeBSD своими руками. Часть II :: Ачилов Рашид
Страница: 4 из 7 | |||
| ||||||||||||||
| ||||||||||||||
КАТЕГОРИИ КНИГПОСЛЕДНИЕ ОТЗЫВЫ О КНИГАХМихаил (19.04.2017 - 06:11:11) Антихрист666 (18.04.2017 - 21:05:58) Ладно, теперь поспешили вы... (18.04.2017 - 20:50:34) Роман (18.04.2017 - 18:12:26) АНДРЕЙ (18.04.2017 - 16:42:55) СЛУЧАЙНОЕ ПРОИЗВЕДЕНИЕВходят Дункан, Малькольм, Дональбайн и Ленокс со свитой. 13.05.10 - 08:05 Хотите чтобы ваше произведение или ваш любимый стишок появились здесь? добавьте его! |
При этом, если подмишень do-something не описана, будет выполняться стандартная системная обработка. Обратите внимание, что, если мишень do-something описана, она замещает стандартную мишень и вся ответственность за выполнение данного шага ложится на майнтайнера порта, то есть, например, даже если в Makefile, идущем с программой, есть мишень install, то при наличии в Makefile порта подмишени do-install мишень install из Makefile программы не будет выполнена никогда!
Дополнение стандартных мишеней очень широко используется для вывода различных сообщений в процессе сборки порта, создания каких-либо файлов и т. д. Например: pre-extract: @$ "" @$ "For debugging information support you should specify" @$ "WITH_DEBUG=yes (press Ctrl-C here and start make WITH_DEBUG=yes)" @$ "" @sleep 2 post-deinstall: @$ "" @$ "Do not forget delete filter description from /etc/mail/freebsd.mc" @$ "and rebuild sendmail.cf file!" @$ "" pre-configure: .if defined(WITHOUT_RC_NG) @$ -e "s=%%PREFIX%%=$=" $/milter-sid.sh \ > $/milter-sid.sh .endif Заменять обработчики мишеней (создавать секции do-something) [2] не рекомендует, но тем не менее это единственный путь для установки программ с закрытым исходным кодом, а также скриптов и программ, упакованных нестандартным образом. Например, мне встречалась программа, дистрибутив которой был упакован в архив формата ZIP, внутри котрого находился архив .tar.bz2 и файл сигнатуры .sig. Для распаковки нужно было сначала распаковать архив ZIP, потом проверить сигнатуру, а только потом – распаковывать .tar.bz2. Но довольно теории. Рассмотрим в качестве примеров два порта, которые были мной созданы в разное время – порт для скрипта монтирования сетевых ресурсов Windows при входе в систему mountsmb2 и доработка к порту OpenOffice 1.1.4. Mountsmb2 Набор скриптов mountsmb2 (там их три) был написан мной достаточно давно и преследовал тольк одну цель – автоматически монтировать SMB/CIFS-сетевые ресурсы от других Samba-серверов и компьютеров под управлением Windows. Поскольку это скрипт, написанный на языке командной оболочки sh, то никакой сборки порта не требуется и именно поэтому этот порт будет рассмотрен в качестве примера. PORTNAME= mountsmb2 PORTVERSION= 0.90.1 CATEGORIES= sysutils net MASTER_SITES= ftp://ftp.granch.ru/pub/other/ MAINTAINER= [email protected] COMMENT= SMB/CIFS shares mounting scripts to do it at login RUN_DEPENDS= findsmb:$/net/samba3 \ sudo:$/security/sudo \ gawk:$/lang/gawk USE_BZIP2= yes NO_BUILD= yes .include do-install: .for i in smb2awk smb2nsmbrc mountsmb2 $ $/$ $/bin .endfor -@${MKDIR } $ .for i in sudoers .login .nsmbrc .mssmbrc $ $/$ $ .endfor -@${MKDIR } $ $ $/README.FreeBSD $ @$ -e "s,%%EXAMPLESDIR%%,$,g" -i .old $ @$ $ @$ -f $ @$ $.old $ .include В RUN_DEPENDS перечисляются все порты, от которых зависит данный скрипт, а именно GNU AWK, sudo и Samba, из которой на самом деле нужна только программа findsmb. «USE_BZIP2=yes» указывает на то, что дистрибутив упакован программой bzip2. «NO_BUILD=yes» указывает на то, что программа не требует сборки. Если этого не указать, то система будет пытаться выполнить команду make в каталоге порта, не найдет Makefile и аварийно завершится. Инсталляцией порт управляет самостоятельно – в Makefile присутствует заменяющая подмишень do-install. Здесь хорошо видно, как можно организовать цикл, который установит несколько файлов, перечисленных в списке, в указанное место. После первого цикла, который устанавливает собственно скрипты идет команда создания каталога для документации – система сама не будет делать ничего, все необходимые каталоги должны быть созданы портом. Такая странная форма записи команды означает что: • если команда завершается неудачно, например, такой каталог уже существует, то make не прекращает работу (минус перед командой); • команда не отображается на терминале (знак @ перед командой). |
ИНТЕРЕСНОЕ О ЛИТЕРАТУРЕ
ТОП 20 КНИГ
ТОП 20 АВТОРОВ
| ||||||||||||
|