Re: [ROOT] Cygwin setup to install ROOT in Windows

From: Christian Holm Christensen (cholm@hehi03.nbi.dk)
Date: Tue May 22 2001 - 21:48:11 MEST


Hi Valeri and Fons and others, 

On Tue, 22 May 2001 14:35:24 +0000
Fons Rademakers <Fons.Rademakers@cern.ch> wrote
concerning ": Re: [ROOT] Cygwin setup to install ROOT in Windows":
> Hi Christian,
> 
>   on Windows only the installation using MS Visual C++ is supported
> for the time being (./configure win32). The build process needs
> cygwin, 

I knew that!

> but for running the executable you don't need cygwin. Building using
> gcc under cygwin is currently not supported (should be ./configure
> win32gcc). 

I was just hoping (more or less optimistic - I know) that someone had
had a go at it. 

> This build would need cygwin also  to run the executable. If you are
> willing to make this port we are  happy to support it.

Uh, sorry, no time at the moment, and to be honest, I'm not really a
big fan of Micros**t OSs (if that concept really applies :-).   

On Tue, 22 May 2001 12:57:49 -0400
"Valeri Fine" <fine@bnl.gov> wrote
concerning ": Re: [ROOT] Cygwin setup to install ROOT in Windows":
> > Last time I tried to compile ROOT using Cygwin GCC, I got loads of
> > errors regarding missing functions (especially in the CINT code,
> > though it may not be Masa's problem) - one I can remember of the top
> > of my head was "unlink".  
> 
>      It is Makefile file problem 

Err, what do you mean?  What I did when I tried to compile ROOT using
Cygwin GCC was to take Makefile.linuxegcs and use that (following
Fons' suggestion back ages ago).  However, I soon saw errors like
"implicit declaration of unknown function ..." and later "unresolved
reference to ...".  

Now looking through the code then I basically saw no problem with
Makefile.linuxegcs under Cygwin, though I did have to change a few
preprocessor things in the CINT sources.  

I got as far as compling and linking cint and makecint - as far as I
remember - but  rootcint defently failed to link.  

Now I really don't believe that it's a Makefile problem.  Rather, it's
a source code problem, 'cause for a great many things, you want to use
the Unix source code, and for a tiny piece you'd like to use the Win32
source code (Win32 graphics rather than X same), but there was no
obvious way that could be achived by only setting preprossor flags in
the Makefile - source code changes is needed, probably both in CINT
and ROOT. 
 
>    Hmm. as far as I know Cygwin staff is compiled with "gcc"
>    and linked with gcc run-time library against of the special Cygwin DLL.
>    
>    All "UNIX-Windows" and "Windows - UNIX" mapping (this means all I/O) 
>    is provided by that DLL at run-time. The user code, including
>    Cygwin utilites commuinicate Windows via that  DLL. 

Hmm.  As far as I gather your answer is "no". Rather, it's a feature
of cygwin.dll an cygdrive is just an application exploiting that
feature.  I this correctly understood?  Damn, I was rather hoping that
the Cygnus people had used the idea of extented inode, like in
GNU/Hurd. 

>  As Fons has explained this  entails Cygwin must be present at
>  Run-time, this means ROOT team has to provide it somehow. 

According to the GPL, it's enough to provide a pointer, like 

  You need <a href="http://www.cygwin.com">Cygwin</a> installed on you
  machine. 

Bloody close to saying:

  You need a C++ compiler installed on your machine. 

or even, 

  You need an Operating System installed on your machine. 

See, really no problem in that :-) 

> According
>  http://www.cygwin.com/licensing.html this entails:
> 
>    ". . .  unless you modify the tools so that compiled executables
>    do not make use of the Cygwin library, your compiled programs will
>    also have to be free software distributed under the GPL with
>    source code available to all. "

Although it's on the Cygnus homepage, I believe this is a rather
strong reading of GPL, and not entirely correct either.  

This reading would also imply that ROOT can in fact not redistribute
h2root and g2root since they are (statically) linked against the
GPL'ed CERNLIB libraries.

What I think they got a bit cooked up, is the notion of "modified
work" and "work that uses the program".  The former must be
distributed under GPL (or as Cygwin allows it, any OpenSource License,
like say LGPL). The later, however is not restricted to be licensed as
OpenSource, since it's not a "modification" to the Program.  In
reference to GPL: The former falls under section 2, while the later
under section 3.  Section 3 only requires that you make source code of
the GPL'ed program avaliable (like above), not what license it should
carry. 

Having said all that, ROOT's License is bloody close to being
OpenSource.  If they would only take out the line 

  Additionally, the authors grant permission to modify this software
  and its documentation for any purpose, provided that such
  modifications are not distributed without the explicit consent of
  the authors and that existing copyright notices are retained in all
  copies. 

Suppose ROOT would exchange those lines with 

  Additionally, the authors grant permission to modify this software
  and its documentation for any purpose, provided that explicit notice
  in the modified work mark it as such.  Also, due notice of the
  authors must be present, but not misused for the promotion of the
  modified work. 

then I believe ROOT would classify as OpenSource.  An alternative is
the Library General Public License (LGPL) which is not as strict as
the above GPL, in regards to derived work.  A license like the one for
CINT is also considered as OpenSource. 

Having said that, I know that the ROOT Team is not really keen on
changing the license just yet, so patience ... 

>  "Native" basic ROOT is about 10 Mb of DLL's, Cygwin takes about 135 Mb.
>  and such ROOT will communicate the Windows system via extra Cygwin layer, so
>  it must be slower and takes extra resource.

As far as I know, Cygwin does not have a reputation of being slow, but
that may be because Windoze (zzz ZZZ) is slow in the first place :-) 

>  Another issue "Fortran compiler" and CERNLIB etc etc etc.

I guess that CERNLIB libraries on Windoze are statically linked, so
that should not really pose a problem.  The main obtacle for using a
Micros**t (Un)Visual C++ compiled library with Cygwin GCC, is really
the name mangling and export libraries, at least that's what I've let
my self be convinced of once. 

Yours, 

Christian  -----------------------------------------------------------
Holm Christensen                             Phone:  (+45) 35 35 96 91 
  Sankt Hansgade 23, 1. th.                  Office: (+45) 353  25 305 
  DK-2200 Copenhagen N                       Web:    www.nbi.dk/~cholm    
  Denmark                                    Email:       cholm@nbi.dk



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:46 MET