Certo, então não foi tão simples e o port precisou de algumas modificações para poder funcionar. Nesta seção, vamos explicar passo a passo como modificá-lo para que funcione com o paradigma do ports.
Primeiro, esta é a sequência de eventos que ocorre quando o usuário executa make
no diretório do port. Ter o bsd.port.mk
aberto em outra janela enquanto lê esta seção realmente irá ajudar a entender melhor.
Mas não se preocupe, não são muitas as pessoas que entendem exatamente como o bsd.port.mk
funciona...:-)
O target fetch
é executado. O target fetch
é responsável por garantir que o tarball exista localmente em DISTDIR
. Se o fetch
não puder encontrar os arquivos necessários no DISTDIR
ele procurará a URL na variável MASTER_SITES
, definida no Makefile, assim como nos nossos mirrors FTP nos quais colocamos os distfiles como backup. Em seguida, ele tentará buscar o arquivo de distribuição nomeado com FETCH
, assumindo que o site solicitante tem acesso direto à Internet. Se isso for bem sucedido, ele salvará o arquivo em DISTDIR
para uso futuro e continuará.
O target extract
é executado. Ele procura pelo arquivo de distribuição do port (normalmente um tarball compactado) em DISTDIR
e irá descompactá-lo em um subdiretório temporário especificado por WRKDIR
(padrão é work
)
O target patch
é executado. Primeiro, quaisquer patches definidos em PATCHFILES
são aplicados. Segundo, se arquivos de patch nomeados patch-
forem encontrados em *
PATCHDIR
(padrão para o subdiretório files
), eles serão aplicados neste momento em ordem alfabética.
O target configure
é executado. Ele pode fazer qualquer uma de muitas coisas diferentes.
Se existir, scripts/configure
é executado.
E se HAS_CONFIGURE
ou GNU_CONFIGURE
está definido, WRKSRC/configure
é executado.
O target build
é executado. Ele é responsável por mudar para o diretório de trabalho privado do port (WRKSRC
) e compila-lo.
O target stage
é executado. Este coloca o conjunto final de arquivos construídos em um diretório temporário (STAGEDIR
, Veja Seção 6.1, “Staging”). A hierarquia deste diretório espelha a do sistema no qual o pacote será instalado.
O target package
é executado. Ele cria um pacote usando os arquivos do diretório temporário criado durante o target stage
e o pkg-plist
do port.
O target install
é executado. Este instala o pacote criado durante o target package
no host.
As ações acima são padrão. Além disso, defina os targets pre-
ou something
post-
, ou insira scripts com esses nomes no subdiretório something
scripts
, e eles serão executados antes ou depois das ações padrão serem executadas.
Por exemplo, se houver um target post-extract
definido no Makefile
e um arquivo pre-build
no subdiretório scripts
, o target post-extract
será chamado após as ações de extração regulares e pre-build
será executado antes que as regras de compilação padrão sejam feitas. Recomenda-se usar targets no Makefile
se as ações forem simples, porque será mais fácil para alguém descobrir que tipo de ação não padrão o port necessita.
As ações padrão são feitas pelos targets do-
do something
bsd.port.mk
. Por exemplo, os comandos para extrair um port estão no target do-extract
. Se o target padrão não fizer o trabalho direito, redefina o target do-
no something
Makefile
.
O target “principal” (por exemplo, extract
, configure
, etc.) fazem nada mais do que certificar-se de que todos os estágios até aquele estão concluídos e chamar os targets ou scripts reais, e eles não pretendem ser alterados. Para consertar a extração, corrija do-extract
, mas nunca mude a forma como extract
opera! Além disso, o target post-deinstall
é inválido e não é executado pela infraestrutura de ports.
Agora que o que acontece quando o usuário digita make install
é melhor entendido, vamos seguir as etapas recomendadas para criar o port perfeito.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.