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
