ślady po buildrze w qt i inne rzeczy związane z kde (włos na głowie się jerzy)

Tomasz Kłoczko kloczek w rudy.mif.pg.gda.pl
Pią, 11 Paź 2002, 22:14:02 CEST


Tak mna próbę próbuję patrzeć co wyrabiają aplikacje KDE i szczerze mówiac 
szczena opada :- ]

Możliwie wszedzie trzeba pousuuwać linkowanie z -rpath bo to tylko 
niepotzrebnie wydłuża start aplikacji .. to primo.

Dalej .. wyjściu z "strace -e trace=file kword" znalazłem cos takiego:

open("/home/users/builder/rpm/BUILD/qt-x11-free-3.0.5/lib/i686/mmx/libGL.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/home/users/builder/rpm/BUILD/qt-x11-free-3.0.5/lib/i686/mmx", 0xbfffe2f4) = -1 ENOENT (No such file or directory)
open("/home/users/builder/rpm/BUILD/qt-x11-free-3.0.5/lib/i686/libGL.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/home/users/builder/rpm/BUILD/qt-x11-free-3.0.5/lib/i686", 0xbfffe2f4) = -1 ENOENT (No such file or directory)
open("/home/users/builder/rpm/BUILD/qt-x11-free-3.0.5/lib/mmx/libGL.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/home/users/builder/rpm/BUILD/qt-x11-free-3.0.5/lib/mmx", 0xbfffe2f4) = -1 ENOENT (No such file or directory)
open("/home/users/builder/rpm/BUILD/qt-x11-free-3.0.5/lib/libGL.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/home/users/builder/rpm/BUILD/qt-x11-free-3.0.5/lib", 0xbfffe2f4) = -1 ENOENT (No such file or directory)

mówiąc inaczje .. gdyby pal^Wludzie z TrollTecha używali libtoola to nie 
byłoby takich kwiatków :>
Mówiąc inczej jeszcze jeden ślad używania -rpath i przyjamniej to wartoby
wydłubać.

Dalej ..

lstat("/usr/X11R6/share/locale", {st_mode=S_IFDIR|0755, st_size=2048, ...}) = 0
access("/home/users/kloczek/.kde/share/locale/C/LC_MESSAGES/kword.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/X11R6/share/locale/C/LC_MESSAGES/kword.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/home/users/kloczek/.kde/share/locale/pl_PL/LC_MESSAGES/kword.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/X11R6/share/locale/pl_PL/LC_MESSAGES/kword.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/home/users/kloczek/.kde/share/locale/en_US/LC_MESSAGES/kword.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/X11R6/share/locale/en_US/LC_MESSAGES/kword.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/home/users/kloczek/.kde/share/locale/en_US/LC_MESSAGES/kdelibs.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/X11R6/share/locale/en_US/LC_MESSAGES/kdelibs.mo", R_OK) = -1 ENOENT (No such file or directory)
stat("/home/users/kloczek/.kde/share/config/kwordrc", {st_mode=S_IFREG|0600, st_size=1108, ...}) = 0
stat("/usr/X11R6/share/config/kwordrc", 0xbffff110) = -1 ENOENT (No such file or directory)
open("/home/users/kloczek/.kde/share/config/kwordrc", O_RDONLY) = 13
access("/home/users/kloczek/.kde/share/locale/C/LC_MESSAGES/kword.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/X11R6/share/locale/C/LC_MESSAGES/kword.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/home/users/kloczek/.kde/share/locale/pl_PL/LC_MESSAGES/kword.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/X11R6/share/locale/pl_PL/LC_MESSAGES/kword.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/home/users/kloczek/.kde/share/locale/en_US/LC_MESSAGES/kword.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/X11R6/share/locale/en_US/LC_MESSAGES/kword.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/home/users/kloczek/.kde/share/locale/en_US/LC_MESSAGES/kdelibs.mo", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/X11R6/share/locale/en_US/LC_MESSAGES/kdelibs.mo", R_OK) = -1 ENOENT (No such file or directory)

Oczywiście ..
$ ls -l /usr/X11R6/share/locale/pl/LC_MESSAGES/kword.mo
-rw-r--r--    1 root     root        31059 09-07 18:44 /usr/X11R6/share/locale/pl/LC_MESSAGES/kword.mo

Wygląda to na jakiś kolejny palantyzm związany zapewne z nieużywaniem 
wsparcia do gettext z glibc :> .. co oczywiście skutkuje tym, że mając 
poprawnie ustawione LOCALE oczywiście wszelkie aplikacje mam bez polskich 
tłumaczeń. A już po kiego grzyba pliki są szukane najpierw w 
~/.kde/share/locale to juz wogóle nie mam pojęcia .. zapewne dlatego, że 
jakiś kolejny developer-palant nie miał pojęcia o tym do czego służy zmienna
środowiska $NLS_PATH :>
Nie wspomnę już o tym że spokojnie od razu możnaby robić zamiast 
wuykonywać access() -> open() możnaby poprostu po bożemy open() (tak jak 
to robi wsparcie glinbcowe do NSL).

Bardzo ciekawe jest także to, że dowolna aplikacja kde próbuje zrobić
lstat() po wszystkim co znajdzie w %{_pixmapsdir} co też zajmuje parę do
parunastu sekund. Zaraz po tym wykonywane jest jeszcze:

access("/usr/X11R6/share/pixmaps/anjuta/index.desktop", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/X11R6/share/pixmaps/br/index.desktop", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/X11R6/share/pixmaps/cards/index.desktop", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/X11R6/share/pixmaps/cs/index.desktop", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/X11R6/share/pixmaps/da/index.desktop", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/X11R6/share/pixmaps/de/index.desktop", R_OK) = -1 ENOENT (No such file or directory)
[..]

czyli próba szukania index.desktop w każdym podkatalogu %{_pixmapsdir} 
(znowu: po kiego grzyba ?)

Kwiatków jest więcej ale nie maja one już zapewne tak dużego (na oko)  
udziału w czasie uruchamiania aplikacji. Zapewne poprawienie powyższego
dałoby tak z dwukrotne przyśpiesznie uruchamiania i okazałoby się, że cała
zabawa z prelinking nie jest w sumie potrzebna.
Np. jest tu też coś taiego:

access("/bin/kdeinit", F_OK)            = -1 ENOENT (No such file or directory)
access("/usr/bin/kdeinit", F_OK)        = -1 ENOENT (No such file or directory)
access("/usr/bin/X11/kdeinit", F_OK)    = 0 access("/usr/bin/X11/kdeinit", X_OK)    = 0
lstat("/usr/bin/X11/kdeinit", {st_mode=S_IFREG|0755, st_size=37372, ...}) = 0

jakby na postawie prefixu instalacji nie można było od razu sięgnąć 
najpierw do /usr/X11R6/bin/kdeinit a potem ewentualnie pod resztę ścieżek.

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