[PATCH] Run postinstall scripts in a thread with progress bars - take 3
Robert Collins
rbcollins@cygwin.com
Mon Mar 24 23:03:00 GMT 2003
On Tue, 2003-03-25 at 09:48, Igor Pechtchanski wrote:
> On 21 Mar 2003, Robert Collins wrote:
> Rob,
>
> I wanted (and still want) to keep the two bar progress on this. The
> second bar would show progress through packages, and the first - progress
> through the scripts *in the current package*.
Ok. I don't really see the end-user benefit, but don't object either.
> > Alteratively/also you could extract the script running and screen
> > updating code to a new method.
> > Rob
>
> Done. I've also done some restructuring of the Script class and enabled
> the "#if 0"'d code from the previous patch, now that the progress bars
> exist.
>
> I've attached the next iteration. Should apply cleanly to HEAD.
> Igor
> ==============================================================================
> ChangeLog:
> 2003-03-24 Igor Pechtchanski <pechtcha@cs.nyu.edu>
>
> * threebar.h (WM_APP_START_POSTINSTALL): New message.
> (WM_APP_POSTINSTALL_THREAD_COMPLETE): New message.
> * threebar.cc (ThreeBarProgressPage::OnMessageApp):
> Add handling for WM_APP_START_POSTINSTALL and
> WM_APP_POSTINSTALL_THREAD_COMPLETE.
> * install.cc (do_install_thread): Set next_dialog to
> IDD_S_POSTINSTALL.
> * desktop.cc (DesktopSetupPage::OnFinish): Move the
> do_postinstall call to ThreeBarProgressPage::OnMessageApp.
> * script.h (Script::fullName): New member function.
> (Script::run): New member function.
> * script.cc (Script::fullName): Implement.
> (Script::run): Implement.
> (run): Enable "#if 0"'d code.
> * postinstall.cc (Progress): New extern variable.
> (RunFindVisitor::visitFile): Add script to vector
> instead of running.
> (RunFindVisitor::_scripts): New member variable.
> (run_package_scripts): New static function.
> (do_postinstall_thread): Rename do_postinstall to. Add
> Progress bar and text setting. Add package count.
> (do_postinstall_reflector): New static function.
> (do_postinstall): Rename to do_postinstall_thread.
> Create a thread instead.
etc_postinstall should be:
1) a static public const member of Script.
2) called ETCPostinstall. (Leading capital for statics).
3) reused in RunFindVisitor.
run_package_scripts cries our for a helper class IMO.
i.e. ScriptRunner with
a) constructor
b) destructor
c) run(std::vector<Script> const &) method.
d) operator () (Script const &aScript) method.
this:
for (std::vector<Script>::iterator script = scripts.begin();
+ script != scripts.end();
+ ++script)
then becomes
*this = for_each (scripts.begin(), scripts.end(), *this);
This is looking very good, and nearly ready to apply.
Cheers,
Rob
--
GPG key available at: <http://users.bigpond.net.au/robertc/keys.txt>.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://cygwin.com/pipermail/cygwin-apps/attachments/20030324/cda41259/attachment.sig>
More information about the Cygwin-apps
mailing list