$RPM_SOURCE_DIR oder %{_sourcedir}

Pakete, die Dateien verwenden, die als Source#-Dateien aufgelistet sind, müssen auf diese Dateien mit ihrem Makronamen %{SOURCE#} verweisen und dürfen nicht $RPM_SOURCE_DIR oder %{_sourcedir} verwenden, um auf diese Dateien zu verweisen.

Dies geschieht, um sicherzustellen, dass Fedora-SRPMS ordnungsgemäß generiert werden. Wenn ein Source#-Element umbenannt wird, kann eine Spec-Datei, die auf den alten Namen verweist, lokal OK sein (da sich die Datei zusammen mit der neuen Datei noch in %{_sourcedir} befindet), aber die richtige Datei wird nicht in das SRPM aufgenommen.

Inkorrekte Verwendung:

Source: php.conf
Source: php.ini
Source: 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

Korrekte Verwendung:

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

Ausnahmen

Wenn eine Liste mit zusätzlichen Quelldateien verfügbar ist, ist es zulässig, diese Liste in Verbindung mit „%{_sourcedir}“ zu verwenden, um Aktionen mit diesen zusätzlichen Quelldateien zu vereinfachen.

Ein Beispiel dazu aus dem Paket lde-l10n:

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

wobei Source1000: subdirs-kde-l10n eine vom Upstream-Projekt bereitgestellte Liste aller unterstützten Sprachen ist. Es gibt etwa 50 SourceN:-Tags, die von Version zu Version unterschiedlich sein können, aber mit den in Source1000 aufgeführten Sprachen für die vom Upstream-Projekt bereitgestellten Tarballs übereinstimmen.