Eu preciso colocar os cabeçalhos do kernel em um local não padrão, e quero fazê-lo automaticamente com yum
, então baixei o rpm correspondente aos cabeçalhos atuais na versão mais recente do CentOS e fiz o seguinte SPEC arquivo:
%global PKG_NAME linux-headers
%global SRC_NAME kernel-headers
%global RISE_DISTRIBUTED_PATH /opt/distributed_tools
%global SRC_PATH %{_sourcedir}
%global BUILD_PATH %{_builddir}
%global INSTALL_PATH %{_buildrootdir}%{DISTRIBUTED_PATH}
%global PKG_VER %(uname -r | sed 's/-/\./g')
Name: distributed_kernel_headers
Version: %{PKG_VER}
Release: 1%{?dist}
Summary: The Linux kernel Headers
License: GPLv2
Group: System Environment/Kernel
URL: http://www.kernel.org/
Source: kernel.rpm
BuildRequires: yum-utils, sed, rpmdev-tools
Provides: distributed_headers
%description
Kernel-headers includes the C header files that specify the interface
between the Linux kernel and userspace libraries and programs. The
header files define structures and constants that are needed for
building most standard programs and are also needed for rebuilding the
glibc package.
%prep
cd %{BUILD_PATH}
mkdir %{PKG_NAME}
%build
cd %{BUILD_PATH}/%{PKG_NAME}
rpm2cpio %{SRC_PATH}/%(SRC_NAME)* | cpio -idvm --owner=$(whoami) &> /dev/null
%install
##rm -rf %{buildroot}
mkdir -pv %{INSTALL_PATH}/%{PKG_NAME}"-$(uname -r)"
mkdir -pv %{INSTALL_PATH}/include/%{PKG_NAME}/
cp -R %{BUILD_PATH}/%{PKG_NAME}/usr/include/* %{INSTALL_PATH}/%{PKG_NAME}"-$(uname -r)"
# ln -s %{INSTALL_PATH}/%{PKG_NAME}"-$(uname -r)"/* %{INSTALL_PATH}/include/%{PKG_NAME}/
%files
%defattr(-,root,root,-)
/opt/
%clean
rm -Rf %{BUILD_PATH} %{_buildrootdir}
%changelog
Tudo funciona bem com rpmbuild -ba
até a seção do arquivo, na qual aparece o seguinte erro:
error: File not found by glob: /home/make_toolchain/rpmbuild/BUILDROOT/distributed_kernel_headers-3.10.0.693.21.1.el7.x86_64-1.el7.centos.x86_64/opt
De acordo com tudo que eu li, a seção do arquivo procura os arquivos em %{_buildrootdir}
, mas neste caso isso não está acontecendo, e eu não sei o que está causando esse erro.
Além disso, não há nenhuma variável especial definida para o ambiente rpmbuild. E todo arquivo é escrito para %{_builrootdir}/opt/distributed_tools/