Construir RPM usando el directorio fuente, no tarball

13

En mi organización, implementamos todo nuestro software en nuestras máquinas de producción usando RPM. Nuestro proceso de compilación (que está automatizado) implica verificar la fuente desde el control de versiones, dividir ese directorio de origen y luego ejecutar rpmbuild usando ese tarball de origen. rpmbuild solo usa ese tarball para descomprimir las fuentes para trabajar en ellas. Por lo tanto, parece que todo el negocio de taring y untaring es solo un paso adicional innecesario en el proceso de construcción. ¿Hay alguna manera de especificar el directorio de origen en el archivo de especificaciones, evitando esos pasos adicionales?

Eddie
fuente

Respuestas:

5

Si tu puedes hacerlo. No enumere ningún Sources. En la %prepsección no use la %setupmacro (que desestima la fuente); más bien, solo mira la fuente.

Tenga en cuenta que no podrá crear SRPM si hace esto.

Mark Wagner
fuente
Esto lo hace. Solo necesito modificar el procedimiento de compilación para verificar las cosas en el directorio rpm BUILD. ¡Gracias!
Eddie
10

Esta pregunta es un poco antigua, pero en caso de que otras personas la encuentren en la búsqueda, hay una forma más correcta de hacerlo que también permite la creación de un SRPM.

En la sección de preparación, en lugar de utilizar la macro de configuración , debe escribir lo que quiere que haga, es decir, copiar el directorio de origen de FUENTES a CONSTRUIR, en lugar de desempaquetar un archivo. Descubrí que también debes agregar un CD en tu directorio de origen en las secciones de compilación e instalación.

Fragmento de ejemplo

%prep
# Don't use the setup macro anymore, replace it with typed-out commands
#%setup -q -n myapp-%{version}
cd %{_topdir}/BUILD
rm -rf myapp-%{version}
cp -rf %{_topdir}/SOURCES/myapp-%{version} .
cd myapp-%{version}
/usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .

%patch1 -p1 -b .cert-config
%patch2

%build
cd myapp-%{version}

%install
cd myapp-%{version}
tdimmig
fuente
Debe %{_topdir}/SOURCESser %{_sourcedir}? ¿Y %{_topdir}/BUILDpodría ser %{buildroot}? (Por otro lado, para situaciones similares pero diferentes en las que intenta agregar archivos adicionales para anular los extraídos de %setup, los documentos de Fedora recomiendan usar %{SOURCE2}etc - fedoraproject.org/wiki/Packaging:RPM_Source_Dir )
IBBoard