rpm-4.0 - skrypt installplatform

Jakub Bogusz qboosh at prioris.mini.pw.edu.pl
Mon Dec 25 22:04:19 CET 2000


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/
-------------- next part --------------
--- 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, at RPMRC_OPTFLAGS@,$RPMRC_OPTFLAGS," \
-	-e "s, at RPMRC_ARCH@,$base_arch," \
+	-e "s, at RPMRC_ARCH@,$arch," \
 	-e "s, at LIB@,$LIB," \
 	-e "s, at ARCH_INSTALL_POST@,$ARCH_INSTALL_POST," \
 	-e "s, at DEFAULTDOCDIR@,$DEFAULTDOCDIR," \


More information about the pld-devel-pl mailing list