Practical method for automatic Cygwin install?

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

Practical method for automatic Cygwin install?

William J. Leslie
=         =         =         =         =         =         =         =     =
Note: I am rephrasing the question I asked last time (for which the
conversation drifted into GPL and licensing issues).

My program depends on cygwin DLLs, my installer must make sure these
dependencies are satisfied.  I've heard that installing private copies of
cygwin DLLs can lead to version mismatches. Instead of installing private
copies of the cygwin DLLs, my installer will install a complete (but minimal)
cygwin installation to c:\cygwin.

There are a few issues that I am not sure how to deal with:

1) How to determine whether or not cygwin is already installed? If so, what
is the prefix path (e.g. c:\cygwin)?

2) If cygwin is already installed, what optional packages are present? What
versions?

3) If cygwin is NOT installed, how do we install it, without setup.exe
prompts?  (I have a gut feeling that it's a bit more complicated than just
untarring packages.)

4) If cygwin is installed, but some optional packages need version upgrades,
how do we accomplish that?

Probably any developer who has tried to release software for the cygwin
environment has thought about this.  Users demand absolute automation of the
installer; I can't tell them to do stuff like:

"This package requires cygwin. Please go install Cygwin from www.cygwin.com,
and click Retry when you're finished."

Nope, that would not be acceptable; it MUST be automatic! But apparently Cygwin's setup utility cannot be automated, only GUI-based.  Surely there
are ways for installers like mine to install cygwin without having to worry
about the messy details.  Or maybe not.  Does anyone know?

Thank You
Will


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply | Threaded
Open this post in threaded view
|

RE: Practical method for automatic Cygwin install?

Gary R. Van Sickle
> From: William J. Leslie
> Sent: Tuesday, November 22, 2005 9:52 PM
> Subject: Practical method for automatic Cygwin install?
>
> =         =         =         =         =         =         =
>         =     =
> Note: I am rephrasing the question I asked last time (for
> which the conversation drifted into GPL and licensing issues).
>
> My program depends on cygwin DLLs, my installer must make
> sure these dependencies are satisfied.  I've heard that
> installing private copies of cygwin DLLs can lead to version
> mismatches. Instead of installing private copies of the
> cygwin DLLs, my installer will install a complete (but
> minimal) cygwin installation to c:\cygwin.
>
> There are a few issues that I am not sure how to deal with:
>
> 1) How to determine whether or not cygwin is already
> installed? If so, what is the prefix path (e.g. c:\cygwin)?
>

There's currently not a great way to do that.  Somebody just asked the same
question(s), see that thread.

> 2) If cygwin is already installed, what optional packages are
> present? What versions?
>

If I read another thread right, there may or may not be a way to do this in
the near future, assuming you've got #1.

> 3) If cygwin is NOT installed, how do we install it, without
> setup.exe prompts?  (I have a gut feeling that it's a bit
> more complicated than just untarring packages.)
>

I believe this can now be done with sufficiently-doctored setup.ini files.
I've never tried it myself.

> 4) If cygwin is installed, but some optional packages need
> version upgrades, how do we accomplish that?
>

Via the normal means, i.e. the Cygwin setup utility.

> Probably any developer who has tried to release software for
> the cygwin environment has thought about this.  Users demand
> absolute automation of the installer; I can't tell them to do
> stuff like:
>
> "This package requires cygwin. Please go install Cygwin from
> www.cygwin.com, and click Retry when you're finished."
>

When all is said and done, I rather suspect you're going to have to.

> Nope, that would not be acceptable; it MUST be automatic! But
> apparently Cygwin's setup utility cannot be automated, only
> GUI-based.  Surely there are ways for installers like mine to
> install cygwin without having to worry about the messy
> details.  Or maybe not.  Does anyone know?
>

I do.  There's no software that's ever been written that didn't have to
worry about "the messy details," and installing Cygwin and a bunch of
utilities in a manner which is not officially supported is probably at the
top of that list.  It sounds to me that what you really should do is release
your software as a Cygwin package, and then work on adding the functionality
you need to Cygwin's setup.exe.
 
> Thank You
> Will

--
Gary R. Van Sickle
 


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply | Threaded
Open this post in threaded view
|

Re: Practical method for automatic Cygwin install?

Christopher Faylor-2
In reply to this post by William J. Leslie
On Tue, Nov 22, 2005 at 09:51:56PM -0600, William J. Leslie wrote:

>Note: I am rephrasing the question I asked last time (for which the
>conversation drifted into GPL and licensing issues).
>
>My program depends on cygwin DLLs, my installer must make sure these
>dependencies are satisfied.  I've heard that installing private copies of
>cygwin DLLs can lead to version mismatches. Instead of installing private
>copies of the cygwin DLLs, my installer will install a complete (but minimal)
>cygwin installation to c:\cygwin.
>
>There are a few issues that I am not sure how to deal with:
>
>1) How to determine whether or not cygwin is already installed? If so, what
>is the prefix path (e.g. c:\cygwin)?

Right now, the only way to do it is to query the registry.  I think I'm
convinced that cygwin will always need to add something to the registry
so the concept of querying the registry to find out if cygwin is
installed should be useful for the foreseeable future, even if the
location to query might change (and what a hue and cry there will be if
it does change).

It is possible to copy the cygwin DLL to a system and just have it work,
though, so what I would do is:

0) Look at the current installer to see how it does things.

1) Try running "mount --version" to see if it is the cygwin version.  If it
succeeds and the word "cygwin" shows up in the output, then cygwin is installed.
This assumes that mount is in the path.

2) Look in the registry (in the currently used location) for the cygwin
root directory.  See if the bin directory under this location contains
cygwin1.dll.  If it succeeds, then cygwin is installed.

>2) If cygwin is already installed, what optional packages are present? What
>versions?

Use the same method as the current setup (and cygcheck) to determine
what packages are installed.

>3) If cygwin is NOT installed, how do we install it, without setup.exe
>prompts?  (I have a gut feeling that it's a bit more complicated than just
>untarring packages.)

It's not a lot more complicated than that.  You have to get dependencies
right and you have to deal with post install scripts.

>4) If cygwin is installed, but some optional packages need version upgrades,
>how do we accomplish that?

As Gary said in another message, it sounds like the best way to
accomplish what you want is to augment setup.exe and make sure that your
changes show up in the official version.  You contribute to setup.exe
via the cygwin-apps mailing list.  Maybe you might want to peruse the
archives of that mailing list to see how that happens.

cgf

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply | Threaded
Open this post in threaded view
|

Re: Practical method for automatic Cygwin install?

Igor Peshansky
On Wed, 23 Nov 2005, Christopher Faylor wrote:

> On Tue, Nov 22, 2005 at 09:51:56PM -0600, William J. Leslie wrote:
> >Note: I am rephrasing the question I asked last time (for which the
> >conversation drifted into GPL and licensing issues).
> >
> >My program depends on cygwin DLLs, my installer must make sure these
> >dependencies are satisfied.  I've heard that installing private copies of
> >cygwin DLLs can lead to version mismatches. Instead of installing private
> >copies of the cygwin DLLs, my installer will install a complete (but minimal)
> >cygwin installation to c:\cygwin.
> >
> >There are a few issues that I am not sure how to deal with:
> >
> >1) How to determine whether or not cygwin is already installed? If so, what
> >is the prefix path (e.g. c:\cygwin)?
>
> Right now, the only way to do it is to query the registry.  I think I'm
> convinced that cygwin will always need to add something to the registry
> so the concept of querying the registry to find out if cygwin is
> installed should be useful for the foreseeable future, even if the
> location to query might change (and what a hue and cry there will be if
> it does change).
>
> It is possible to copy the cygwin DLL to a system and just have it work,
> though, so what I would do is:
>
> 0) Look at the current installer to see how it does things.
>
> 1) Try running "mount --version" to see if it is the cygwin version.
> If it succeeds and the word "cygwin" shows up in the output, then cygwin
> is installed. This assumes that mount is in the path.
>
> 2) Look in the registry (in the currently used location) for the cygwin
> root directory.  See if the bin directory under this location contains
> cygwin1.dll.  If it succeeds, then cygwin is installed.

Or you could look at how setup.exe/cygcheck does it and help extract the
mount code into a library that could be linked into other apps.

> >2) If cygwin is already installed, what optional packages are present?
> >What versions?
>
> Use the same method as the current setup (and cygcheck) to determine
> what packages are installed.
>
> >3) If cygwin is NOT installed, how do we install it, without setup.exe
> >prompts?  (I have a gut feeling that it's a bit more complicated than
> >just untarring packages.)
>
> It's not a lot more complicated than that.  You have to get dependencies
> right and you have to deal with post install scripts.

And you have to make sure that whatever non-Cygwin application/library you
use to untar packages understands and can create Cygwin symlinks and hard
links (optional, copies would work just as well).

> >4) If cygwin is installed, but some optional packages need version
> >upgrades, how do we accomplish that?
>
> As Gary said in another message, it sounds like the best way to
> accomplish what you want is to augment setup.exe and make sure that your
> changes show up in the official version.  You contribute to setup.exe
> via the cygwin-apps mailing list.  Maybe you might want to peruse the
> archives of that mailing list to see how that happens.

Another thing that I don't recall mentioned in this thread is that
setup.exe has an unattended mode (which is not scriptable, but that could
be alleviated with custom setup.ini files).  The GUI will still pop up,
but user interaction isn't really necessary.
        Igor
--
                                http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_ [hidden email]
ZZZzz /,`.-'`'    -.  ;-;;,_ [hidden email]
     |,4-  ) )-,_. ,\ (  `'-' Igor Pechtchanski, Ph.D.
    '---''(_/--'  `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

If there's any real truth it's that the entire multidimensional infinity
of the Universe is almost certainly being run by a bunch of maniacs. /DA

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply | Threaded
Open this post in threaded view
|

Re: Practical method for automatic Cygwin install?

Brian Dessent
Igor Pechtchanski wrote:

> Or you could look at how setup.exe/cygcheck does it and help extract the
> mount code into a library that could be linked into other apps.

FWIW, this idea of creating a mingw "libcygpath" really appeals to me
and it's been an idea I've been meaning to look at for a while.  It
would be a library that knows how to read the mount table, and do basic
path conversions, without depending on cygwin1.dll.  Then cygpath and
setup.exe could both statically link to this library, and it would be
available to other users as well.

Brian

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply | Threaded
Open this post in threaded view
|

Re: Practical method for automatic Cygwin install?

Christopher Faylor-2
On Wed, Nov 23, 2005 at 01:30:37PM -0800, Brian Dessent wrote:

>Igor Pechtchanski wrote:
>>Or you could look at how setup.exe/cygcheck does it and help extract
>>the mount code into a library that could be linked into other apps.
>
>FWIW, this idea of creating a mingw "libcygpath" really appeals to me
>and it's been an idea I've been meaning to look at for a while.  It
>would be a library that knows how to read the mount table, and do basic
>path conversions, without depending on cygwin1.dll.  Then cygpath and
>setup.exe could both statically link to this library, and it would be
>available to other users as well.

FWIW, Robert Collins and I talked about doing this years ago but it just
suffered due to SHTDI.  I think that path.cc in the utils directory
should be a pretty good start towards a library for reading the mount
table.  It is what is used by strace.cc and cygcheck.cc.

cgf

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply | Threaded
Open this post in threaded view
|

mingw path/mount handling code (Was: Re: Practical method for automatic Cygwin install?)

Brian Dessent
Christopher Faylor wrote:

> >FWIW, this idea of creating a mingw "libcygpath" really appeals to me
> >and it's been an idea I've been meaning to look at for a while.  It
> >would be a library that knows how to read the mount table, and do basic
> >path conversions, without depending on cygwin1.dll.  Then cygpath and
> >setup.exe could both statically link to this library, and it would be
> >available to other users as well.
>
> FWIW, Robert Collins and I talked about doing this years ago but it just
> suffered due to SHTDI.  I think that path.cc in the utils directory
> should be a pretty good start towards a library for reading the mount
> table.  It is what is used by strace.cc and cygcheck.cc.

I've been thinking about this a little more.

The way I see it, in a perfect world, this library would be BSD/MIT
licensed, or at the very least LGPL, so that "foreign" programs by 3PPs
could use it unencumbered, so that they can function better with Cygwin.

However, winsup/utils/path.cc is under the Cygwin license.  I don't
suppose there is any chance of getting Redhet to relicense parts of the
utils directory?  It seems small enough that it could be reimplemented
without a lot of hassle, but it's still extra work.

Has this topic already been discussed, or do I need to do more due
diligence on this idea?  I am considering putting some time into this
but I think GPL is not the right way to go.  Would the approximate path
be a) create, test, and debug this free-standing libcygpath
(libcygmount?), b) submit patches to cygpath and setup to use this
library?

Brian

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply | Threaded
Open this post in threaded view
|

Re: mingw path/mount handling code (Was: Re: Practical method for automatic Cygwin install?)

Christopher Faylor-2
On Fri, Dec 09, 2005 at 07:48:24AM -0800, Brian Dessent wrote:

>Christopher Faylor wrote:
>
>> >FWIW, this idea of creating a mingw "libcygpath" really appeals to me
>> >and it's been an idea I've been meaning to look at for a while.  It
>> >would be a library that knows how to read the mount table, and do basic
>> >path conversions, without depending on cygwin1.dll.  Then cygpath and
>> >setup.exe could both statically link to this library, and it would be
>> >available to other users as well.
>>
>> FWIW, Robert Collins and I talked about doing this years ago but it just
>> suffered due to SHTDI.  I think that path.cc in the utils directory
>> should be a pretty good start towards a library for reading the mount
>> table.  It is what is used by strace.cc and cygcheck.cc.
>
>I've been thinking about this a little more.
>
>The way I see it, in a perfect world, this library would be BSD/MIT
>licensed, or at the very least LGPL, so that "foreign" programs by 3PPs
>could use it unencumbered, so that they can function better with Cygwin.
>
>However, winsup/utils/path.cc is under the Cygwin license.  I don't
>suppose there is any chance of getting Redhet to relicense parts of the
>utils directory?  It seems small enough that it could be reimplemented
>without a lot of hassle, but it's still extra work.

I think there is very small chance of that.  IIRC, some of that code is
straight out of the cygwin DLL itself.

I think that anyone who had studied the cygwin path handling code would
have a tough time proving that there was no "taintedness" if they tried
to produce a library under a different license.

cgf

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply | Threaded
Open this post in threaded view
|

Re: mingw path/mount handling code (Was: Re: Practical method for automatic Cygwin install?)

Brian Dessent
Christopher Faylor wrote:

> I think there is very small chance of that.  IIRC, some of that code is
> straight out of the cygwin DLL itself.
>
> I think that anyone who had studied the cygwin path handling code would
> have a tough time proving that there was no "taintedness" if they tried
> to produce a library under a different license.

Crud.  Well I suppose from a code reuse standpoint it would still make
sense to factor out that stuff so that setup and cygcheck (and anything
else GPL) can share it.  But without a relicensed version it still means
that 3PPs that want to gracefully distribute Cygwin stuff have to write
all the mount table stuff themselves (or run /bin/mount, which I guess
is the mantra anyway.)

Brian

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply | Threaded
Open this post in threaded view
|

Re: mingw path/mount handling code (Was: Re: Practical method for automatic Cygwin install?)

Christopher Faylor-2
On Fri, Dec 09, 2005 at 08:29:06AM -0800, Brian Dessent wrote:

>Christopher Faylor wrote:
>>I think there is very small chance of that.  IIRC, some of that code is
>>straight out of the cygwin DLL itself.
>>
>>I think that anyone who had studied the cygwin path handling code would
>>have a tough time proving that there was no "taintedness" if they tried
>>to produce a library under a different license.
>
>Crud.  Well I suppose from a code reuse standpoint it would still make
>sense to factor out that stuff so that setup and cygcheck (and anything
>else GPL) can share it.

Remember that cygcheck and strace are already sharing the code in
path.cc.  It's not clear to me what more needs to be done except
possibly handle symlinks.

>But without a relicensed version it still means that 3PPs that want to
>gracefully distribute Cygwin stuff have to write all the mount table
>stuff themselves (or run /bin/mount, which I guess is the mantra
>anyway.)

...or run cygpath.

FWIW, the basic problem with Red Hat these days is getting them to pay
any attention to cygwin at all.  The corporate VP in legal who used to
be at least somewhat responsive to my cygwin queries has moved on to
other concerns within the company and, from what I've heard, no one else
seems inclined to answer questions.  You know that cygwin runs on Windoze
(or is it Window$?) after all.

So, even if there was a chance that someone in Red Hat could make the
recommendation to release the path.cc source code under a "looser"
license, it is extremely unlikely that you could get an official
corporate response on the matter.

What fun.

cgf

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply | Threaded
Open this post in threaded view
|

Re: mingw path/mount handling code (Was: Re: Practical method for automatic Cygwin install?)

Corinna Vinschen-2
In reply to this post by Brian Dessent
On Dec  9 07:48, Brian Dessent wrote:
> The way I see it, in a perfect world, this library would be BSD/MIT
> licensed, or at the very least LGPL, so that "foreign" programs by 3PPs
> could use it unencumbered, so that they can function better with Cygwin.
>
> However, winsup/utils/path.cc is under the Cygwin license.  I don't
> suppose there is any chance of getting Redhet to relicense parts of the
> utils directory?

It's in the loop, sort of.  I'm working on getting the utils directory
relicensed for about 18 months now.  Progress is somewhat slow, though...


Corinna

--
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat, Inc.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/