$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.
Want to help? Learn how to contribute to Fedora Docs ›