This is the mail archive of the cygwin-apps@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: package driven postinstall scripts.


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

Attachment: signature.asc
Description: This is a digitally signed message part


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]