On Mon, 2003-03-17 at 06:16, Igor Pechtchanski wrote: > Rob, > > > > > Will I be causing grief for you by applying this patch? > > Not really, but let's bring your patch and mine closer, so that you could > reuse the good parts of mine (and I could avoid duplicating code). See > below.
Sure. > > The install.cc changes I plan to apply regardless, modulo the 'Note > > script files as they are installed' 2-liner. > > Why not create a proper Installer class? Move all static variables (e.g., > rebootneeded, package_bytes, etc) into the class? Make initDialog() a > constructor? Make replaceOnReboot{Succeeded|Failed}() private? I refactored from the top of the file down, making only safe changes, until I found what I needed to change to track script files. I've no objection to doing more refactoring, but no immediate reason to either. And time is always an issue. > As for the "Note script files" bit, you could add that too, it won't hurt. Done. > > If this goes in, then I can easily throw a package-ordered iterator at > > postinstall and solve the root problem. > > True. How about merging some functionality from my FileDesc class and > your Script class (at least the == operator)? That way, FileDesc can > simply inherit from Script, add the dependences and the "<" operator, and > that's it... I'll check this tonight. No basic objection, though the synthetic operator == may do the right thing at the moment I think. > Also, it might be nice to have a proper Script class... Can you, for > example, rename run_script() into Script::run()? And add a method > extracting the extension into the class? > BTW, do you have to have a vector of Script objects (as opposed to Script > pointers)? std::vector<Script> & package_version::scripts(); If we need virtual behaviour on Script that will have to become std::vector<Script *> & package_version::scripts(); > > BTW: What was the test case that prompted a need for ordered postinstall > > scripts? > > Rob > > I'm not sure right now, but I think running passwd-grp.sh before > attempting to execute any programs in /bin was one of them... Cool. > BTW, one other idea I had was a FilterVisitor class that would act as a > wrapper for some other Visitor and only call "visit" for files that don't > match a pattern... I thought of using it to filter out "*.done". It's > pretty orthogonal to the rest of my changes, though... It's a classic Decorator too. Nice one. Rob -- GPG key available at: <http://users.bigpond.net.au/robertc/keys.txt>.
signature.asc
Description: This is a digitally signed message part