Red Hat Training

A Red Hat training course is available for RHEL 8

4.6.3.2. Ejemplo de archivo RubyGems SPEC

Esta sección proporciona un archivo SPEC de ejemplo para construir gemas junto con una explicación de sus secciones particulares.

Un ejemplo de archivo SPEC de RubyGems

%prep
%setup -q -n  %{gem_name}-%{version}

# Modify the gemspec if necessary
# Also apply patches to code if necessary
%patch0 -p1

%build
# Create the gem as gem install only works on a gem file
gem build ../%{gem_name}-%{version}.gemspec

# %%gem_install compiles any C extensions and installs the gem into ./%%gem_dir
# by default, so that we can move it into the buildroot in %%install
%gem_install

%install
mkdir -p %{buildroot}%{gem_dir}
cp -a ./%{gem_dir}/* %{buildroot}%{gem_dir}/

# If there were programs installed:
mkdir -p %{buildroot}%{_bindir}
cp -a ./%{_bindir}/* %{buildroot}%{_bindir}

# If there are C extensions, copy them to the extdir.
mkdir -p %{buildroot}%{gem_extdir_mri}
cp -a .%{gem_extdir_mri}/{gem.build_complete,*.so} %{buildroot}%{gem_extdir_mri}/

En la siguiente tabla se explican los elementos específicos de un archivo SPEC de RubyGems:

Tabla 4.4. Especificaciones de las directivas SPEC de RubyGems

Directiva SPECEspecificaciones de RubyGems

%prep

RPM puede desempaquetar directamente archivos de gemas, por lo que puede ejecutar la comamnd gem unpack para extraer el código fuente de la gema. La macro %setup -n %{gem_name}-%{version} proporciona el directorio en el que se ha desempaquetado la gema. En el mismo nivel de directorio, se crea automáticamente el archivo %{gem_name}-%{version}.gemspec, que puede utilizarse para reconstruir la gema más tarde, para modificar el .gemspec, o para aplicar parches al código.

%build

Esta directiva incluye comandos o series de comandos para construir el software en código máquina. La macro %gem_install opera sólo en archivos gem, y la gema se recrea con la siguiente construcción de gem. El archivo gem que se crea es utilizado por %gem_install para construir e instalar el código en el directorio temporal, que es ./%{gem_dir} por defecto. La macro %gem_install construye e instala el código en un solo paso. Antes de ser instalado, las fuentes construidas se colocan en un directorio temporal que se crea automáticamente.

La macro %gem_install acepta dos opciones adicionales: -n <gem_file>, que permite anular la gema utilizada para la instalación, y -d <install_dir>, que podría anular el destino de instalación de la gema; no se recomienda utilizar esta opción.

La macro %gem_install no debe utilizarse para instalar en el %{buildroot}.

%instalación

La instalación se realiza en la jerarquía %{buildroot}. Puedes crear los directorios que necesites y luego copiar lo que se instaló en los directorios temporales en la jerarquía de %{buildroot}. Si esta gema crea objetos compartidos, se mueven a la ruta específica de la arquitectura %{gem_extdir_mri}.

Para más información sobre los archivos SPEC de RubyGems, véase Ruby Packaging Guidelines.