Re: Re: Root 5.20 won't build static on Windows

From: Tom Roberts <tjrob_at_fnal.gov>
Date: Tue, 31 Mar 2009 12:13:26 -0500


It's not a question of "stupid", it's a question of user friendliness, user experience, and user expectations. My users are not the same as Root users -- Root users must know how to program in C++ to do anything, which implies considerable computer experience; my users don't need that, and most of them don't know C++ at all.

To you, to me, and to C++ programmers in general, installing Root is trivial -- after all, we do that sort of thing quite frequently. Even installing multiple versions side-by-side is easy. But my users are physicists, many are not so computer savvy, and such things are rather unusual to them. For instance, very few of my users use Cygwin on Windows or even have a C++ compiler installed; supporting Windows more than tripled my user base. (This is also why I supply the HistoRoot program to permit users to easily generate plots without programming Root in C++, and why it must run as a macro.)

Bottom line: Root is great! -- it has tremendous capabilities and is so flexible that I can provide a GUI program for my users to use without needing to know C++. But it is not good at mixing library versions, so I include the Root libraries my program uses in my distribution. This makes G4beamline independent of whichever version of Root users might have installed (even none). Note that a number of them are still using Root 5.12 (the version that was current back when I first implemented Root support in G4beamline).

Tom Roberts

Rene Brun wrote:

> Tom,
> 
> We have 12000 distributions of the source tar file per month. Are your 
> users more stupid than the average?  ::)
> 
> Rene Brun
> 
> Tom Roberts wrote:

>> I forgot to mention two ironies:
>> 1) C:/root/bin/root starts up just fine without any libfreetype.a, and
>> opens a GUI macro just fine (with lots of fonts that look good and are
>> probably true type fonts).
>> 2) I don't need any fonts at all -- the only classes I use are TFile
>> and TNtuple. Is there some workaround I can use to get static
>> libraries for those classes? While it said it was "Making bin/roota",
>> it was really building libpcre.a, which is needed by libRoot.a (which
>> was built OK).
>>
>> It seems to me that a greatly-reduced library containing only TFile,
>> TTree, and TNtuple (+ their required dependencies) would be useful for
>> users like me who only do Root I/O in a separate program. The DLLs add
>> ~50 MB to my distribution (no, I cannot expect my users to install the
>> correct version of Root themselves).
>>
>>
>> Tom Roberts
>>
>>
>> Tom Roberts wrote:
>>> This is Windows Xp with Cygwin, VC++ express edition 9.0. I need to
>>> build it from source, because I need the static library.
>>>
>>> Root 5.20 built and runs successfully for me, but "make static" fails:
>>>
>>> Making bin/roota...
>>> build/win/ld.sh -nologo -ignore:4049,4075,4217,4221 -incremental:no
>>> -o bin/roota
>>> main/src/rmain.o cint/reflex/src/G__Reflex.o
>>> core/base/src/G__Base1.o core/base
>>> /src/G__Base2.o core/base/src/G__Base3.o core/clib/src/G__Clib.o
>>> core/cont/src/G
>>> __Cont.o core/meta/src/G__Meta.o core/meta/src/G__TCint.o
>>> core/metautils/src/G__
>>> MetaUtils.o core/rint/src/G__Rint.o core/thread/src/G__Thread.o
>>> core/winnt/src/G
>>> __WinNT.o geom/geom/src/G__Geom1.o geom/geom/src/G__Geom2.o
>>> geom/geombuilder/src
>>> /G__GeomBuilder.o geom/geompainter/src/G__GeomPainter.o
>>> graf2d/gpad/src/G__GPad.
>>> o graf2d/graf/src/G__Graf1.o graf2d/graf/src/G__Graf2.o
>>> graf2d/postscript/src/G_
>>> _PostScript.o graf2d/win32gdk/src/G__Win32gdk.o
>>> graf3d/g3d/src/G__G3D.o gui/fitp
>>> anel/src/G__FitPanel.o gui/ged/src/G__Ged.o gui/gui/src/G__Gui1.o
>>> gui/gui/src/G_
>>> _Gui2.o gui/gui/src/G__Gui3.o gui/guibuilder/src/G__GuiBld.o
>>> gui/guihtml/src/G__
>>> GuiHtml.o gui/sessionviewer/src/G__SessionViewer.o
>>> hist/hist/src/G__Hist.o hist/
>>> histpainter/src/G__HistPainter.o hist/spectrum/src/G__Spectrum.o
>>> hist/spectrumpa
>>> inter/src/G__Spectrum2Painter.o html/src/G__Html.o io/io/src/G__IO.o
>>> io/sql/src/
>>> G__SQL.o io/xml/src/G__XML.o math/foam/src/G__Foam.o
>>> math/fumili/src/G__Fumili.o
>>> math/genvector/src/G__GenVector.o
>>> math/genvector/src/G__GenVector32.o math/math
>>> core/src/G__Math.o math/mathcore/src/G__MathCore.o
>>> math/mathcore/src/G__MathFit.
>>> o math/matrix/src/G__Matrix.o math/minuit/src/G__Minuit.o
>>> math/mlp/src/G__MLP.o
>>> math/physics/src/G__Physics.o math/smatrix/src/G__Smatrix.o
>>> math/smatrix/src/G__
>>> Smatrix32.o math/splot/src/G__SPlot.o montecarlo/eg/src/G__EG.o
>>> montecarlo/vmc/s
>>> rc/G__VMC.o net/net/src/G__Net.o proof/proof/src/G__Proof.o
>>> proof/proofplayer/sr
>>> c/G__ProofDraw.o proof/proofplayer/src/G__ProofPlayer.o
>>> tmva/src/G__TMVA.o tree/
>>> tree/src/G__Tree.o tree/treeplayer/src/G__TreePlayer.o
>>> tree/treeviewer/src/G__Tr
>>> eeViewer.o lib/libRoot.a advapi32.lib lib/libfreetype.a lib/libpcre.a
>>> LINK : fatal error LNK1181: cannot open input file 'lib/libfreetype.a'
>>> make: *** [static] Error 157
>>>
>>> This looks to be related to the ttf (true type fonts) feature, which
>>> is crazy on Windows (the home of true type fonts)....
>>>
>>> Suggestions?
>>>
>>>
>>> Tom Roberts
>>>
>>

> Received on Tue Mar 31 2009 - 19:13:31 CEST

This archive was generated by hypermail 2.2.0 : Tue Mar 31 2009 - 23:50:02 CEST