Ebuilds são scripts de shell (scripts bash de fato). Então eles funcionam como scripts de shell, possuem variáveis e definem funções. Mas as ebuilds não são executadas diretamente - você as executa via emerge
(ou ebuild
às vezes diretamente) que conduz o processo de preparação, construção e instalação chamando as funções apropriadas da ebuild na sequência necessária.
Q1: What it means to ebuild to be sourced?
Q2: variables - how they can be interpreted?
Q5: scopes
O mesmo que para scripts de shell, usando o comando source
builtin (consulte man bash
para isso). Isso significa que o script (o ebuild nesse caso) é lido pelo shell atual (controlado por emerge
) e processado como se fosse parte do script de chamada.
Isso processa todas as definições de variáveis, adicionando-as ao ambiente do script de chamada e analisa todas as funções definidas na ebuild - mas não executa essas funções.
As variáveis podem ser muito simples, por exemplo:
DEPEND=">=dev-foo/bar-42"
que não precisa de interpretação ou pode conter referências a outras variáveis, por exemplo:
DEPEND=">=some-cat/related-${PV}"
que precisa de interpolação de variável, ou pode usar definições ainda mais complexas que exigem a execução de comandos incorporados bash ou programas externos a serem interpretados. Isso não é nada específico para ebuilds, mas scripts comuns.
Não há nada específico sobre o escopo em ebuilds, é a mesma coisa que em scripts comuns.
Q4: stages
Q3&6:src_compile
,pkg_setup
,${DEPEND}
O processo de instalação de um pacote a partir da fonte é decomposto em várias etapas, preparação aproximada (download, descompactação e configuração de fontes), compilação e, em seguida, tarefas de instalação e pós-instalação. Os mantenedores do Ebuild podem fornecer funções a serem executadas em cada estágio diferente para customizar a construção. Você pode encontrar a lista de estágios no Uso e descrição do EAPI do desenvolvedor. manual.
As variáveis predefinidas e ebuild são descritas na seção Variáveis desse mesmo manual. ${DEPEND}
é um deles.
src_compile
é uma das funções que um ebuild deve fornecer (direta ou indiretamente) se algo precisa ser feito para compilar as fontes antes de instalar o pacote. Nem todos os ebuilds precisam disso (por exemplo, poderiam instalar apenas ícones / temas / imagens que não precisam ser compilados), mas geralmente são necessários. É o trabalho do mantenedor ebuild para criar a função para que ele construa o pacote fonte corretamente.
pkg_setup
é uma das funções que serão chamadas em um estágio anterior na instalação.