Создаем порт для FreeBSD своими руками. Часть II | страница 6



Дополнение стандартных мишеней очень широко используется для вывода различных сообщений в процессе сборки порта, создания каких-либо файлов и т. д. Например:


pre-extract:

@${ECHO_MSG} ""

@${ECHO_MSG} "For debugging information support you should specify"

@${ECHO_MSG} "WITH_DEBUG=yes (press Ctrl-C here and start make WITH_DEBUG=yes)"

@${ECHO_MSG} ""

@sleep 2

post-deinstall:

@${ECHO_MSG} ""

@${ECHO_MSG} "Do not forget delete filter description from /etc/mail/freebsd.mc"

@${ECHO_MSG} "and rebuild sendmail.cf file!"

@${ECHO_MSG} ""

pre-configure:

if defined(WITHOUT_RC_NG)

@${SED} — e "s=%%PREFIX %%=${PREFIX}=" ${FILESDIR}/milter-sid.sh \

> ${WRKSRC}/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= shelton@granch.ru

COMMENT= SMB/CIFS shares mounting scripts to do it at login

RUN_DEPENDS= findsmb:${PORTSDIR}/net/samba3 \

sudo:${PORTSDIR}/security/sudo \

gawk:${PORTSDIR}/lang/gawk

USE_BZIP2= yes

NO_BUILD= yes

include

do-install:

for i in smb2awk smb2nsmbrc mountsmb2

${INSTALL_SCRIPT} ${WRKSRC}/${i} ${PREFIX}/bin

endfor

-@${MKDIR} ${EXAMPLESDIR}

for i in sudoers.login.nsmbrc.mssmbrc

${INSTALL_DATA} ${WRKSRC}/${i} ${EXAMPLESDIR}

endfor

-@${MKDIR} ${DOCSDIR}

${INSTALL_DATA} ${WRKSRC}/README.FreeBSD