Red Hat Training
A Red Hat training course is available for RHEL 8
3.2.5. Un ejemplo de archivo SPEC para un programa escrito en Python
Esta sección muestra un archivo SPEC de ejemplo para el programa pello escrito en el lenguaje de programación Python. Para más información sobre pello, véase Sección 2.1.1, “Ejemplos de código fuente”.
Un archivo SPEC de ejemplo para el programa pello escrito en 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
El programa pello está escrito en un lenguaje interpretado compilado en bytes. Por lo tanto, el shebang no es aplicable porque el archivo resultante no contiene la entrada.
Como el tinglado no es aplicable, puede aplicar uno de los siguientes enfoques:
- Cree un script de shell no compilado que llame al ejecutable.
- Proporcionar un pequeño trozo de código Python que no esté compilado en bytes como punto de entrada a la ejecución del programa.
Estos enfoques son útiles sobre todo para grandes proyectos de software con muchos miles de líneas de código, donde el aumento de rendimiento del código precompilado es considerable.
La directiva BuildRequires
, que especifica las dependencias en tiempo de compilación del paquete, incluye dos paquetes:
-
El paquete
python
es necesario para realizar el proceso de compilación de bytes -
El paquete
bash
es necesario para ejecutar el pequeño script de entrada
La directiva Requires
, que especifica las dependencias en tiempo de ejecución del paquete, incluye sólo el paquete python
. El programa pello
requiere el paquete python
para ejecutar el código compilado en bytes en tiempo de ejecución.
La sección %build
, que especifica cómo construir el software, corresponde al hecho de que el software está compilado en bytes.
Para instalar pello
, es necesario crear un script envolvente porque el shebang no es aplicable en los lenguajes compilados en bytes. Hay múltiples opciones para lograr esto, como:
-
Hacer un script separado y utilizarlo como una directiva separada
SourceX
. - Creación del archivo en línea en el archivo SPEC.
Este ejemplo muestra la creación de un script envolvente en línea en el archivo SPEC para demostrar que el archivo SPEC en sí mismo es scriptable. Este script envolvente ejecutará el código compilado en bytes de Python utilizando un documento here
.
La sección %install
en este ejemplo también corresponde al hecho de que tendrá que instalar el archivo compilado en bytes en un directorio de la biblioteca en el sistema de tal manera que se pueda acceder a él.