Capítulo 4. Port Lento

Índice
4.1. Como as Coisas Funcionam
4.2. Obtendo os Fontes Originais
4.3. Modificando o Port
4.4. Patching
4.5. Configurando
4.6. Manipulando a Entrada do Usuário

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.

4.1. Como as Coisas Funcionam

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...:-)

  1. 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á.

  2. 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).

  3. 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.

  4. O target configure é executado. Ele pode fazer qualquer uma de muitas coisas diferentes.

    1. Se existir, scripts/configure é executado.

    2. E se HAS_CONFIGURE ou GNU_CONFIGURE está definido, WRKSRC/configure é executado.

  5. O target build é executado. Ele é responsável por mudar para o diretório de trabalho privado do port (WRKSRC) e compila-lo.

  6. 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.

  7. 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.

  8. 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-something ou post-something, ou insira scripts com esses nomes no subdiretório 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-something do 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-something no Makefile.

Nota:

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>.