This is the mail archive of the 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.


Replies inline below.

On Sun, 16 Mar 2003, Robert Collins wrote:

        what do you think of the attached patch.

It's a halfway house between your embedded ordering and the package
ordering I'm proposing.

This patch changes setups behaviour on only one way:
package included post-install scripts will run before hand placed
scripts. (i.e. Pierre's security testing script).

It doesn't (yet) add dependencies to the the script ordering, but that
is truely trivial given an ordered iterator for the package db.

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.

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

As for the "Note script files" bit, you could add that too, it won't hurt.

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

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

BTW: What was the test case that prompted a need for ordered postinstall

I'm not sure right now, but I think running before attempting to execute any programs in /bin was one of them...

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

2003-03-15 Robert Collins <rbtcollins at hotmail dot com>

         * Introduce Installer class.
         (init_dialog): Rename to Installer::initDialog.
         (progress): Rename to Installer::progress.
         (standard_dirs): Rename to Installer::StandardDirs.
         (uninstall_one): Rename to Installer::uninstallOne.
         (replace_one): Rename to Installer::replaceOne.
         (log_ror_failure): Rename to Installer::replaceOnRebootFailed.
         (log_ror_success): Rename to Installer::replaceOnRebootSucceeded.
         (install_one_source): Rename to Installer::installOneSource.
         Note script files as they are installed.
         * (packageversion::addScript): Implement.
         (packageversion::scripts): Implement.
         * package_version.h (packageversion::addScript): Record the presence of a script.
         * script.h (Script): New class to track scripts.
         * (do_postinstall): Iterate through the package listed scripts before searching for scripts.
         * (String::substr): Second argument needed to be signed.
         * String++.h (String::substr): Second argument needed to be signed.

-- |\ _,,,---,,_ pechtcha at cs dot nyu dot edu ZZZzz /,`.-'`' -. ;-;;,_ igor at watson dot ibm dot com |,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski '---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow!

Oh, boy, virtual memory! Now I'm gonna make myself a really *big* RAMdisk!
 -- /usr/games/fortune

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