Laszlo (Laca) Peter wrote:
> What about if you pkgrm SUNWfirefox-apoc-adapter and then later
> you pkgadd it again.  Don't you need to trigger the registration
> process again?
>
>   
Yes, we need to touch ".autoreg" again. I've explained the details to Brian.

thanks,
Dave.
> Laca
>
> On Tue, 2007-03-20 at 13:13 +0800, brian.lu wrote:
>   
>> Dave,
>>
>> This operation is only needed when SUNWfirefox-apoc-adapter is removed.  
>> So I think it should be put in postremove.
>>
>> Brian
>>
>> Dave Lin wrote:
>>     
>>> Adding postinstall script in SUNWfirefox-apoc-adapter to touch 
>>> ".autoreg" as well,  in order to trigger the registration if users 
>>> want to install apoc adapter back.
>>> One thing I'm not sure that if we need to let postrun to execute the 
>>> logic that in postinstall and postremove?
>>>
>>> Dave.
>>> Dave Lin wrote:
>>>       
>>>> Hi All,
>>>>
>>>> To fully fix this bug, we need to make change both in code file 
>>>> nsXPComInit.cpp(part 1) and spec file SUNWfirefox.spec(part 2).
>>>>
>>>> Here comes the patch for SUNWfirefox.spec. The patch works like this,
>>>> the file  ".autoreg" will be delivered in SUNWfirefox, 
>>>> SUNWfirefox-apoc-adapter's postremove script will touch .autoreg 
>>>> right after apoc removal,  then when Firefox starts up next time, it 
>>>> will detect this file is newer than "components/compreg.dat" and call 
>>>> the registration program to update component registration information.
>>>>
>>>> Dave.
>>>> Brian Lu wrote:
>>>>         
>>>>> Fix the bug CR 6521792: Firefox cannot start,after removing apoc 
>>>>> adapter,with user account setup when apoc adapter installed
>>>>> ------------------------------------------------------------------------ 
>>>>>
>>>>>
>>>>> --- mozilla/xpcom/build/nsXPComInit.cpp.old    2006-08-05 
>>>>> 01:50:52.000000000 +0800
>>>>> +++ mozilla/xpcom/build/nsXPComInit.cpp    2007-03-09 
>>>>> 11:05:45.166807000 +0800
>>>>> @@ -262,6 +262,7 @@
>>>>>  // compreg.dat file.  If the .autoreg file is newer, we autoregister.
>>>>>  static PRBool CheckUpdateFile()
>>>>>  {
>>>>> +    PRBool ret;
>>>>>      nsresult rv;
>>>>>      nsCOMPtr<nsIFile> file;
>>>>>      rv = 
>>>>> nsDirectoryService::gService->Get(NS_XPCOM_CURRENT_PROCESS_DIR, @@ 
>>>>> -297,8 +298,13 @@
>>>>>      PRInt64 compregModTime, autoregModTime;
>>>>>      compregFile->GetLastModifiedTime(&compregModTime);
>>>>>      file->GetLastModifiedTime(&autoregModTime);
>>>>> -
>>>>> -    return LL_CMP(autoregModTime, >, compregModTime);
>>>>> + +    ret = LL_CMP(autoregModTime, >, compregModTime);
>>>>> +    if (ret)
>>>>> +    {
>>>>> +      compregFile->Remove(PR_FALSE);
>>>>> +    }
>>>>> +    return ret;
>>>>>  }
>>>>>  
>>>>>  
>>>>> @@ -622,6 +628,7 @@
>>>>>          for (int i = 0; i < components_length; i++)
>>>>>              RegisterGenericFactory(registrar, &components[i]);
>>>>>      }
>>>>> +    CheckUpdateFile();
>>>>>      rv = 
>>>>> nsComponentManagerImpl::gComponentManager->ReadPersistentRegistry();
>>>>>  #ifdef DEBUG         if (NS_FAILED(rv)) {
>>>>> @@ -629,7 +636,7 @@
>>>>>      }
>>>>>  #endif
>>>>>  
>>>>> -    if ( NS_FAILED(rv) || CheckUpdateFile()) {
>>>>> +    if ( NS_FAILED(rv)) {
>>>>>          // if we find no persistent registry, we will try to 
>>>>> autoregister
>>>>>          // the default components directory.
>>>>>          
>>>>> nsComponentManagerImpl::gComponentManager->AutoRegister(nsnull);
>>>>>   
>>>>>           
>>>> ------------------------------------------------------------------------
>>>>
>>>> Index: SUNWfirefox.spec
>>>> ===================================================================
>>>> --- SUNWfirefox.spec    (revision 10869)
>>>> +++ SUNWfirefox.spec    (working copy)
>>>> @@ -122,6 +122,15 @@
>>>>  find firefox ! -type d | grep -v "libmozapoc.so" | \
>>>>    sed -e 's#{#\\{#g' -e 's#}#\\}#g' -e 's#^.*$#%{_libdir}/&#' \
>>>>      >  %{_builddir}/%name-%version/%{name}.list
>>>> +
>>>> +# deliver file .autoreg for triggerring Firefox auto-re-registration
>>>> +# right after apoc adapter removal(see bug CR#CR6521792)
>>>> +# The postremove script will touch .autoreg after 
>>>> SUNWfirefox-apoc-adapter
>>>> +# uninstallation, then Firefox will detect this change and 
>>>> re-register +# the components
>>>> +#
>>>> +touch $RPM_BUILD_ROOT%{_libdir}/firefox/.autoreg
>>>> +
>>>>  %endif
>>>>  
>>>>  rm -rf $RPM_BUILD_ROOT%{_mandir}
>>>> @@ -148,10 +157,16 @@
>>>>    echo '/usr/bin/update-desktop-database'
>>>>  ) | $BASEDIR/lib/postrun -b -u -c JDS
>>>>  
>>>> -#####################################
>>>> -##      Package Files Section      ##
>>>> -#####################################
>>>> +%if %with_apoc_adapter
>>>> +%postun apoc-adapter
>>>> +PKGCOND=/usr/bin/pkgcond
>>>> +test -x $PKGCOND || exit 0
>>>> +if $PKGCOND is_path_writable $BASEDIR/lib/firefox; then
>>>> +  touch $BASEDIR/lib/firefox/.autoreg
>>>> +fi
>>>> +%endif
>>>>  
>>>> +
>>>>  %if %with_apoc_adapter
>>>>  %files -f SUNWfirefox.list
>>>>  %else
>>>> @@ -164,7 +179,7 @@
>>>>  %dir %attr (0755, root, bin) %{_libdir}
>>>>  
>>>>  %if %with_apoc_adapter
>>>> -#%{_libdir}/firefox
>>>> +%ghost %{_libdir}/firefox/.autoreg
>>>>  %else
>>>>  %{_libdir}/firefox
>>>>  %endif
>>>>   
>>>>         
>
>   


Reply via email to