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