$RPM_SOURCE_DIR ou %{_sourcedir}

Pacotes que usam arquivos discriminados como arquivos Source#, devem referir-se a esses arquivos pelo nome da macro Source# e não devem usar $RPM_SOURCE_DIR ou %{sourcedir} para se referir a esses arquivos.

Isso é feito para garantir que os SRPMS do Fedora sejam gerados corretamente. Se um item Source# for renomeado, uma especificação que se refere ao seu nome antigo pode ter sucesso localmente (porque o arquivo ainda está em %{_sourcedir} junto com o novo arquivo), mas o arquivo apropriado não será incluído no SRPM.

Uso incorreto:

Source1: php.conf
Source2: php.ini
Source3: macros.php

...

install -m 644 $RPM_SOURCE_DIR/php.conf $RPM_BUILD_ROOT/etc/httpd/conf.d
sed -e "s/@PHP_APIVER@/%{apiver}/;s/@PHP_ZENDVER@/%{zendver}/;s/@PHP_PDOVER@/%{pdover}/" \
    < $RPM_SOURCE_DIR/macros.php > macros.php

Uso correto:

Source1: php.conf
Source2: php.ini
Source3: macros.php

...

install -m 644 %{SOURCE1} $RPM_BUILD_ROOT/etc/httpd/conf.d
sed -e "s/@PHP_APIVER@/%{apiver}/;s/@PHP_ZENDVER@/%{zendver}/;s/@PHP_PDOVER@/%{pdover}/" \
    < %{SOURCE3} > macros.php

Exceções

Quando houver uma lista disponível de arquivos fonte suplementares, é permitido usar esta lista em conjunto com %{sourcedir} para simplificar as operações nesses arquivos fonte suplementares.

Um exemplo disso do pacote kde-l10n:

for i in $(cat %{SOURCE1000}) ; do
  echo $i | grep -v '^#' && \
  bzip2 -dc %{_sourcedir}/%{name}-$i-%{version}.tar.bz2 | tar -xf -
done

sendo Source1000:subdirs-kde-l10n uma lista fornecida pelo upstream de todos os idiomas suportados, e há cerca de 50 SourceN:tags, que podem variar de versão para versão, mas correspondem aos idiomas listados em Source1000, para os tarballs fornecidos pelo upstream.