3.2.5. Um arquivo SPEC de exemplo para um programa escrito em Python
Esta seção mostra um arquivo SPEC de exemplo para o programa pello escrito na linguagem de programação Python. Para maiores informações sobre pello, veja Seção 2.1.1, “Exemplos de código fonte”.
Um arquivo SPEC de exemplo para o programa pello escrito em Python
Name: pello Version: 0.1.1 Release: 1%{?dist} Summary: Hello World example implemented in Python License: GPLv3+ URL: https://www.example.com/%{name} Source0: https://www.example.com/%{name}/releases/%{name}-%{version}.tar.gz BuildRequires: python Requires: python Requires: bash BuildArch: noarch %description The long-tail description for our Hello World Example implemented in Python. %prep %setup -q %build python -m compileall %{name}.py %install mkdir -p %{buildroot}/%{_bindir} mkdir -p %{buildroot}/usr/lib/%{name} cat > %{buildroot}/%{_bindir}/%{name} <←EOF #!/bin/bash /usr/bin/python /usr/lib/%{name}/%{name}.pyc EOF chmod 0755 %{buildroot}/%{_bindir}/%{name} install -m 0644 %{name}.py* %{buildroot}/usr/lib/%{name}/ %files %license LICENSE %dir /usr/lib/%{name}/ %{_bindir}/%{name} /usr/lib/%{name}/%{name}.py* %changelog * Tue May 31 2016 Adam Miller <maxamillion@fedoraproject.org> - 0.1.1-1 - First pello package
O programa pello é escrito em uma linguagem interpretada por bytes. Portanto, o shebang não é aplicável porque o arquivo resultante não contém a entrada.
Como o shebang não é aplicável, você pode querer aplicar uma das seguintes abordagens:
- Criar um script de shell não compilado em bytes que chamará o executável.
- Fornecer um pouco do código Python que não seja compilado por bytes como ponto de entrada para a execução do programa.
Estas abordagens são úteis especialmente para grandes projetos de software com muitos milhares de linhas de código, onde o aumento de desempenho do código pré-compilado é considerável.
A diretiva BuildRequires
, que especifica as dependências de tempo de construção para o pacote, inclui dois pacotes:
-
O pacote
python
é necessário para realizar o processo de compilação de byte-compilação -
O pacote
bash
é necessário para executar o pequeno roteiro do ponto de entrada
A diretiva Requires
, que especifica as dependências de tempo de execução para o pacote, inclui apenas o pacote python
. O programa pello
requer o pacote python
para executar o código compilado pelo byte em tempo de execução.
A seção %build
, que especifica como construir o software, corresponde ao fato de que o software é compilado por bytes.
Para instalar pello
, você precisa criar um roteiro de embalagem porque o shebang não é aplicável em linguagens compiladas por bytes. Existem múltiplas opções para realizar isto, como por exemplo:
-
Fazendo um roteiro separado e usando-o como uma diretriz separada
SourceX
. - Criação do arquivo em linha no arquivo da SPEC.
Este exemplo mostra a criação de um roteiro de embalagem em linha no arquivo SPEC para demonstrar que o próprio arquivo SPEC é scriptable. Este script de invólucro executará o código Python compilado por bytes, usando um documento here
.
A seção %install
neste exemplo também corresponde ao fato de que você precisará instalar o arquivo compilado pelo byte em um diretório de biblioteca no sistema, de modo que ele possa ser acessado.