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
> >>
> >
>