Mozilla (rc1) i java

Tomasz Kłoczko kloczek w rudy.mif.pg.gda.pl
Nie, 21 Kwi 2002, 16:15:15 CEST


On Sun, 21 Apr 2002, Artur Flinta wrote:

> Witam!
> 
> Mnie tam java zarówno 1.3.1 jkak i 1.4.0 ładnie z mozillą rc1 działa :-)
> Tyle, że kompilowana jeszcze gcc 2.95.4 :-)                 Pozdrawiam
>                        Artur

Kilkadziesiąt minut temu udało mi się skompilować mozillę tak żeby nie 
używała libstdc++:

Provides: mozilla-embedded = 1.0.rc1 libaccessibility.so 
[..]
PreReq: rpmlib(VersionedDependencies) <= 3.0.3-1 /bin/sh /sbin/ldconfig 
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(interp): /bin/sh /sbin/ldconfig
Requires(rpmlib): rpmlib(VersionedDependencies) <= 3.0.3-1 
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(post): /bin/sh
Requires(postun): /sbin/ldconfig
Requires: nss >= 3.4 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) 
libc.so.6(GLIBC_2.1.3) libdl.so.2(GLIBC_2.0) libm.so.6(GLIBC_2.0) 
libpthread.so.0(GLIBC_2.0) libpthread.so.0(GLIBC_2.1) libc.so.6 libdl.so.2 
libgdk-1.2.so.0 libglib-1.2.so.0 libgmodule-1.2.so.0 libgtk-1.2.so.0 
libjpeg.so.62 libm.so.6 libnspr4.so libnss3.so libplc4.so libplds4.so 
libpng.so.2 libpthread.so.0 libsmime3.so libsoftokn3.so libssl3.so 
libX11.so.6 libXext.so.6 libXi.so.6 libXp.so.6 libXt.so.6 libz.so.1 glib 
glibc gtk+ libjpeg libpng nspr nss XFree86-libs zlib
Obsoletes: mozilla-embedded mozilla-irc
Processing files: mozilla-mailnews-1.0.rc1-1
Finding  Provides: (using /usr/lib/rpm/find-provides)...
Finding  Requires: (using /usr/lib/rpm/find-requires)...
Provides: libabsyncsvc.so libabsyncsvc.so(EXPORTED) 
[..]
Requires(interp): /bin/sh /sbin/ldconfig
Requires(rpmlib): rpmlib(VersionedDependencies) <= 3.0.3-1 
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(post): /bin/sh
Requires(postun): /sbin/ldconfig
Requires: nss >= 3.4 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) 
libc.so.6(GLIBC_2.1.3) libdl.so.2(GLIBC_2.0) libm.so.6(GLIBC_2.0) 
libpthread.so.0(GLIBC_2.0) libpthread.so.0(GLIBC_2.1) libc.so.6 libdl.so.2 
libgdk-1.2.so.0 libglib-1.2.so.0 libgmodule-1.2.so.0 libgtk-1.2.so.0 
libjpeg.so.62 libm.so.6 libnspr4.so libnss3.so libplc4.so libplds4.so 
libpng.so.2 libpthread.so.0 libsmime3.so libsoftokn3.so libssl3.so 
libX11.so.6 libXext.so.6 libXi.so.6 libXp.so.6 libXt.so.6 libz.so.1 glib 
glibc gtk+ libjpeg libpng nspr nss XFree86-libs zlib
Obsoletes: mozilla-embedded mozilla-irc
Processing files: mozilla-mailnews-1.0.rc1-1
Finding  Provides: (using /usr/lib/rpm/find-provides)...
Finding  Requires: (using /usr/lib/rpm/find-requires)...
Provides: libabsyncsvc.so libabsyncsvc.so(EXPORTED) 
[..]
PreReq: /bin/sh /sbin/ldconfig rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(interp): /bin/sh /sbin/ldconfig
Requires(rpmlib): rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(post): /bin/sh
Requires(postun): /sbin/ldconfig
Requires: mozilla = 1.0.rc1 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) 
libc.so.6(GLIBC_2.1.3) libpthread.so.0(GLIBC_2.0) libc.so.6 libdl.so.2 
libmozjs.so libm.so.6 libnspr4.so libplc4.so libplds4.so libpthread.so.0 
libxpcom.so glibc mozilla nspr
Obsoletes: mozilla-mail
Processing files: mozilla-devel-1.0.rc1-1
Finding  Provides: (using /usr/lib/rpm/find-provides)...
Finding  Requires: (using /usr/lib/rpm/find-requires)...
Provides: mozilla-embedded-devel = 1.0.rc1
PreReq: rpmlib(VersionedDependencies) <= 3.0.3-1 
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(rpmlib): rpmlib(VersionedDependencies) <= 3.0.3-1 
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: mozilla = 1.0.rc1 nspr-devel
Obsoletes: mozilla-embedded-devel
Zapisano: /home/users/kloczek/rpm/SRPMS/mozilla-1.0.rc1-1.src.rpm
Zapisano: /home/users/kloczek/rpm/RPMS/mozilla-1.0.rc1-1.i686.rpm
Zapisano: /home/users/kloczek/rpm/RPMS/mozilla-mailnews-1.0.rc1-1.i686.rpm
Zapisano: /home/users/kloczek/rpm/RPMS/mozilla-devel-1.0.rc1-1.i686.rpm

I tak linkowan mozilla chodzi poprawnie.

Jeżeli dodanie do speca linijki:

%define		__cxx		%{__cc}

i kompilacja na nowym gcc 3.x też sie uda to załatwione zostanie library 
clash jaki tu mam miejsce i to z jakim libstdc++ jest linkowany plugin
będzie miało zerowe znaczenie. Prośba do osób mających na pokładzie nowe 
gcc żeby to wypróbowali.

Przy okazji z racji braku koniecznosci relokacji symboli dla libstdc++
mozilla powinna się ładować szybciej co ciężko mi było stwierzic przy
próbach bo sam uzywam galeona. Różnica powinna być mierzalna, a może i
nawet odczuwalna. Także galeon czy inne aplikacje korzysytrające z gecko
nie bendą przez to powiązane z libstdc++.

O ile nie będzie jakieś innych pzreciwskazań to na pewno coś takiego waro
będzie wdrożyć ASAP.

Tak wogóle to przydałoby sie jakieś narządko które analizowałoby nagłówek
ELF binarki i sprawdzało czy wszystki biblioteki z jakimi dany kawałek
kodu został zlinkowany są rzeczywiście potrzebne i wypisywał choć stosowne
ostrzeżenie, a jeszcze lepiej usuwał takową bibliotekę z nagłówka. Swoja
droga tego typu zachowanie powinno być wbudowane bezposrednio w linker (aż
dzw że nikt tego do tej pory nie zrobił). Możnaby coś takiego uruchamiać w
%install_post przy budowaniu pakietów. Coś takiego powinno w mniejszym czy
też większym stopniu z czasem wpływać na czas uruchomienia programów.
Ergo: otrzymalibyśmy zbiór pakietów który byłby tutaj poprawnie właściwie
spasowany (przez co konkretne prormy byłyby szybsze przy uruchamianiu).  
Cześciowo także zmniejszyłaby się gęstość powiazań między pakietami.

Kolejna sprawa to jednak przydąłoby się wydzielić z mozilli ta część którą 
używa galeon i spółka. Pzrecież wyodrębnienie tego nie powinno być trune. 
Wystarczy uzyć pmapa żeby sprawdzić które biblioteki są potzrebne. W tej 
chwili wychodzi mi coś takiego:

$ pmap <pid_galeona> | awk '{print $7}' | grep lib | sort | uniq | grep mozilla
/usr/X11R6/lib/libgtkembedmoz.so-RPMDELETE
/usr/X11R6/lib/libmoz_art_lgpl.so-RPMDELETE
/usr/X11R6/lib/libmozjs.so-RPMDELETE
/usr/X11R6/lib/mozilla/components/libaccessproxy.s
/usr/X11R6/lib/mozilla/components/libappcomps.so-R
/usr/X11R6/lib/mozilla/components/libcaps.so-RPMDE
/usr/X11R6/lib/mozilla/components/libchardet.so-RP
/usr/X11R6/lib/mozilla/components/libchrome.so-RPM
/usr/X11R6/lib/mozilla/components/libcookie.so-RPM
/usr/X11R6/lib/mozilla/components/libdocshell.so-R
/usr/X11R6/lib/mozilla/components/libeditor.so-RPM
/usr/X11R6/lib/mozilla/components/libembedcomponen
/usr/X11R6/lib/mozilla/components/libgfx2.so-RPMDE
/usr/X11R6/lib/mozilla/components/libgfx_gtk.so-RP
/usr/X11R6/lib/mozilla/components/libgkcontent.so-
/usr/X11R6/lib/mozilla/components/libgklayout.so-R
/usr/X11R6/lib/mozilla/components/libgkplugin.so-R
/usr/X11R6/lib/mozilla/components/libgkview.so-RPM
/usr/X11R6/lib/mozilla/components/libhtmlpars.so-R
/usr/X11R6/lib/mozilla/components/libimggif.so-RPM
/usr/X11R6/lib/mozilla/components/libimgjpeg.so-RP
/usr/X11R6/lib/mozilla/components/libimglib2.so-RP
/usr/X11R6/lib/mozilla/components/libimgpng.so-RPM
/usr/X11R6/lib/mozilla/components/libjar50.so-RPMD
/usr/X11R6/lib/mozilla/components/libjsdom.so-RPMD
/usr/X11R6/lib/mozilla/components/libjsloader.so-R
/usr/X11R6/lib/mozilla/components/liblwbrk.so-RPMD
/usr/X11R6/lib/mozilla/components/libnecko.so-RPMD
/usr/X11R6/lib/mozilla/components/libnkcache.so-RP
/usr/X11R6/lib/mozilla/components/libnsappshell.so
/usr/X11R6/lib/mozilla/components/libnslocale.so-R
/usr/X11R6/lib/mozilla/components/liboji.so-RPMDEL
/usr/X11R6/lib/mozilla/components/libpipboot.so-RP
/usr/X11R6/lib/mozilla/components/libpipnss.so-RPM
/usr/X11R6/lib/mozilla/components/libpref.so-RPMDE
/usr/X11R6/lib/mozilla/components/librdf.so-RPMDEL
/usr/X11R6/lib/mozilla/components/libshistory.so-R
/usr/X11R6/lib/mozilla/components/libstrres.so-RPM
/usr/X11R6/lib/mozilla/components/libtxmgr.so-RPMD
/usr/X11R6/lib/mozilla/components/libuconv.so-RPMD
/usr/X11R6/lib/mozilla/components/libucvlatin.so-R
/usr/X11R6/lib/mozilla/components/libunicharutil.s
/usr/X11R6/lib/mozilla/components/liburiloader.so-
/usr/X11R6/lib/mozilla/components/libwallet.so-RPM
/usr/X11R6/lib/mozilla/components/libwebbrwsr.so-R
/usr/X11R6/lib/mozilla/components/libwidget_gtk.so
/usr/X11R6/lib/mozilla/components/libxpconnect.so-

Wystarczy teraz sprawdzić czy to wszystko i moznaby zrobić z tego pakiet 
typu mozilla-common lub mozilla-components.
Obecny dualizm z mozillą i mozillą embeded jest IMHO conajmneij mało 
elegancki a obie wesje mozilli różnią sie na dobrą sprawę tylko tym, że 
jedna ma włączone wsparcie do LDAP, a druga nie. Jeżeli żaden z powyższych 
plików nie jest zależny od openldap pakiet mozilla-embeded ma już
policzony czas życia.

kloczek
-- 
-----------------------------------------------------------
*Ludzie nie mają problemów, tylko sobie sami je stwarzają*
-----------------------------------------------------------
Tomasz Kłoczko, sys adm @zie.pg.gda.pl|*e-mail: kloczek w rudy.mif.pg.gda.pl*



Więcej informacji o liście dyskusyjnej pld-devel-pl