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?

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