Kde-windows Digest, Vol 30, Issue 30

Ralf Habacker ralf.habacker at freenet.de
Mon Mar 31 12:20:22 CEST 2008


Jaroslaw Staniek schrieb:
> Ralf Habacker said the following, On 2008-03-29 18:58:
>
>   
>>> Do I need to install any Qt related service or add any registry keys 
>>> to carry the kde base folder to somewhere else?
>>>       
>
>   
>> no, we are trying hard to avoid such dependencies. You should run 
>> kbuildsycoca4 on the new machine.
>>     
>
> Ah Ralf: I've recently read kbuildsycoca.cpp code a bit (again) and there are 
> magic stamps like one for language, another for creation time
>
>     // Write KDEDIRS
>     (*m_str) << KGlobal::dirs()->kfsstnd_prefixes();
>     (*m_str) << newTimestamp;
>     (*m_str) << KGlobal::locale()->language();
>     (*m_str) << KGlobal::dirs()->calcResourceHash("services", "update_ksycoca",
>                                                   KStandardDirs::Recursive );
>
> So any idea why kbuildsycoca could not automatically re-run when we move our 
> binaries from machine to machine (when e.g. drive letter changes)?
>   

let us take first the possible cases (assuming there are computer A and B):

1. installation is moved to computer B the first time -> ksycoca 
database is not present -> will be created

2. installation will be moved back to A mounted under the same drive 
letter as before -> kbuildsycoca will update database on kded start

3. installation will be replugged in to A mounted under a different 
drive letter as before -> kbuildsycoca will only update database on kded 
start

4. installation will be moved again to B mounted under the same drive 
letter as before -> kbuildsycoca will only update database on kded start

5. installation will be moved back to A and mounted under a different 
drive letter as before -> kbuildsycoca will only update database on kded 
start

6. installation will be moved again to B mounted under a different drive 
letter as before -> kbuildsycoca will only update database on kded start

-> The important question in case 3, 5. and 6. is: Will kbuildsycoca 
detect a changed drive letter ?

As far as I can see in the kbuildsycoca code this case isn't catched - 
the only cases which are catched are

1. changes in configuration files
2. language changes
3. the presence of a file share/kde4/services/update_ksycoca in the kde 
install or home dir

Fortunally in the database there is the result stored of 
KGlobal::dirs()->kfsstnd_prefixes() stored which is KDEDIRS.

Appended is a patch which checks if the used home and install 
directories has changed and triggers a complete recreated of the 
database.  Can anyone check this patch ?

Ralf




-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: kbuildsycoca-path-change-update.patch
Url: http://mail.kde.org/pipermail/kde-windows/attachments/20080331/d77ce03b/attachment.ksh 


More information about the Kde-windows mailing list