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