rpm-4.0 - skrypt installplatform
Jakub Bogusz
qboosh w prioris.mini.pw.edu.pl
Pon, 25 Gru 2000, 22:04:19 CET
Czy mógłby mi ktoś wyjaśnić, co właściwie miał robić skrypt
installplatform przy budowaniu rpm?
Nie bardzo wiem, co autor miał na myśli, bo skrypt działa inaczej dla
każdego x86 w %_target... Dla i386-linux działał najbardziej sensownie,
dlatego uznałem to za podstawę dla poprawki - jednak nie wiem, czy o to
chodziło, więc wolę się spytać, zanim popsuję... (załączam to, co chcę
zmienić).
Oryginalny skrypt dla %_target=i586-linux zrobił coś takiego
(podkatalogi w $RPM_BUILD_ROOT/usr/lib/rpm):
plik i386-pld-linux/macros (definicje dla i386)
plik i486-pld-linux/macros (definicje dla *i586*)
symlink i586-pld-linux -> i686-pld-linux (!)
plik i686-pld-linux/macros (definicje dla i686)
Ten ostatni katalog nie trafił do wynikowego rpm (BTW: właściwie
dlaczego? można sobie wyobrazić sytuację budowania na maszynie i586
pakietów dla i686... jedynie moduły crt* nie mogłyby być zoptymalizowane
dla 686), więc miałem tylko unresolved symlink i586-pld-linux .
Efekt działania skryptu dla i686 też jest dziwny, ale akurat do pliku
i686-pld-linux/macros trafiają definicje dla i686.
Po mojej poprawce powstają pliki i${x}86-pld-linux/macros z definicjami
dla ${x}86 oraz symlinki i${x}86-linux -> i${x}86-pld-linux - czy o to
chodziło?
Jest jeszcze jedna sprawa z tymi katalogami - trzeba chyba dopisać
BuildConflicts: redhat-release, bo w przypadku, kiedy istnieje plik
/etc/redhat-release te katalogi nazywają się ix86-redhat-linux - przez
co pakiet się nie buduje. (zresztą u mnie dodatkowo musiał istnieć plik
/etc/pld-release, bo stary rpm podawał i586-redhat-linux jako target dla
%configure).
Na koniec pytanie o użycie makra %lang - powinno być %lang(pl) czy
%lang(pl_PL) ?
%lang(pl_PL) pojawia się przy budowaniu glibc (jest wrzucane do pliku
glibc.lang) - przez co musiałem dopisać pl_PL (oprócz pl) do %_install_langs,
żeby się zainstalowały polskie locale...
--
Jakub Bogusz
http://prioris.mini.pw.edu.pl/~qboosh/
-------------- następna część ---------
--- rpm-4.0/installplatform.orig Wed Sep 13 19:57:58 2000
+++ rpm-4.0/installplatform Sun Dec 24 20:57:16 2000
@@ -21,11 +21,12 @@
RPM="./rpm --rcfile $TEMPRC"
-arch="`$RPM --eval '%{_arch}'`"
+CHARCH='s_i.86_i386_;s_sparc.*_sparc_;s_alpha.*_alpha_'
+arch="`$RPM --eval '%{_arch}' | sed -e $CHARCH`"
VENDOR="`$RPM --eval '%{_vendor}'`"
OS="`$RPM --eval '%{_os}'`"
-target_platform="`$RPM --eval '%{_target_platform}'`"
-target="`$RPM --eval '%{_target}'`"
+target_platform="`$RPM --eval '%{_target_platform}' | sed -e $CHARCH`"
+target="`$RPM --eval '%{_target}' | sed -e $CHARCH`"
rm -f ${DESTDIR}/${pkglibdir}/noarch-${VENDOR}-${OS}
ln -s ${arch}-${VENDOR}-${OS} ${DESTDIR}/${pkglibdir}/noarch-${VENDOR}-${OS}
@@ -38,7 +39,6 @@
sparc*) SUBSTS='s_sparc\(64\|v9\)_sparc_ s_sparc64_sparcv9_;s_sparc\([^v]\|$\)_sparcv9\1_ s_sparcv9_sparc64_;s_sparc\([^6]\|$\)_sparc64\1_' ;;
*) SUBSTS=y___ ;;
esac
-base_arch=`echo $arch | sed -e 's_i?86_i386_;s_sparc.*_sparc_;s_alpha.*_alpha_'`
for SUBST in $SUBSTS ; do
ARCH=`echo $arch | sed -e $SUBST`
@@ -70,7 +70,7 @@
cat $PLATFORM | \
sed -e "s, w RPMRC_OPTFLAGS@,$RPMRC_OPTFLAGS," \
- -e "s, w RPMRC_ARCH@,$base_arch," \
+ -e "s, w RPMRC_ARCH@,$arch," \
-e "s, w LIB@,$LIB," \
-e "s, w ARCH_INSTALL_POST@,$ARCH_INSTALL_POST," \
-e "s, w DEFAULTDOCDIR@,$DEFAULTDOCDIR," \
Więcej informacji o liście dyskusyjnej pld-devel-pl