fileutils-4.0.33 - cp: ... are the same file (jeszcze raz)
Jakub Bogusz
qboosh w prioris.mini.pw.edu.pl
Pon, 25 Gru 2000, 21:38:25 CET
Ten cp ma ciekawy "feature": jeżeli zostanie wywołany z parametrem -r
lub -R, natomiast bez -L, plik źródłowy jest symlinkiem (nieważne do
czego), plik docelowy istnieje i nie jest symlinkiem - zgłasza błąd
typu:
cp: `libcrypto.so' and `/tmp/openssl-0.9.6-root-comp/usr/lib/libcrypto.so' are the same file
Opcja -f nie ma tu znaczenia. To, czy zawartość pliku źródłowego (tzn.
pliku wskazywanego przez symlink) oraz pliku docelowego się różni -
także nie ma znaczenia.
"Feature" ten wynika to z nieobsłużenia takiej sytuacji w funkcji
same_file_ok() (plik copy.c w źródłach fileutils).
Przez to nie budują się pakiety openssl i postgresql.
W tym pierwszym przypadku:
+ install libRSAglue.a libcrypto.a libssl.a /tmp/openssl-0.9.6-root-comp/usr/lib
+ install libcrypto.so.0.9.6 libssl.so.0.9.6 /tmp/openssl-0.9.6-root-comp/usr/lib
+ cp -df libcrypto.so libssl.so /tmp/openssl-0.9.6-root-comp/usr/lib
cp: `libcrypto.so' and `/tmp/openssl-0.9.6-root-comp/usr/lib/libcrypto.so' are the same file
cp: `libssl.so' and `/tmp/openssl-0.9.6-root-comp/usr/lib/libssl.so' are the same file
Bad exit status from /var/tmp/rpm-tmp.63121 (%install)
W tym drugim:
+ cd src/include
+ cp -rf * $RPM_BUILD_ROOT%{_includedir}/pgsql
cp: `os.h' and `/tmp/postgresql-7.0.3-root-comp/usr/include/pgsql/os.h' are the same file
Workaround to:
* w przypadku openssl - dopisanie linii przed feralnym cp:
+rm -f $RPM_BUILD_ROOT%{_libdir}/{libcrypto.so,libssl.so}
cp -df lib*.so $RPM_BUILD_ROOT%{_libdir}
* w przypadku postgresql - dodanie -L do opcji cp (w tym przypadku
nawet uprości to speca - parę następnych linii można wyciąć):
( cd src/include
- cp -rf * $RPM_BUILD_ROOT%{_includedir}/pgsql
+ cp -Lrf * $RPM_BUILD_ROOT%{_includedir}/pgsql
)
-# replace symlinks to header fiels by files
-rm -f $RPM_BUILD_ROOT%{_includedir}/pgsql/dynloader.h
-rm -f $RPM_BUILD_ROOT%{_includedir}/pgsql/os.h
-
-install src/backend/port/dynloader/linux.h $RPM_BUILD_ROOT%{_includedir}/pgsql/dynloader.h
-install src/include/port/linux.h $RPM_BUILD_ROOT%{_includedir}/pgsql/os.h
W drugim przypadku workaround ma sens; w pierwszym nie powinien być
konieczny - uważam to za błąd w fileutils...
--
Jakub Bogusz
http://prioris.mini.pw.edu.pl/~qboosh/
Więcej informacji o liście dyskusyjnej pld-devel-pl