Keep an older root version (binary for cygwin) up to date

ok, I asked this already in the Root Discussion. Related to the new TProfile3D class. But maybe here in Root Support this question is better placed.

When I want to use a new class with an older version of Root, say 4.04 on cygwin, what do I have to do?
I think just to add the TProfile3D.h to the /inc/ folder would not do the job. Also, there is no /src/ folder for my binary version, where I could place the source code into and run the make script.
Do I have to build Root again from the CVS repository when I want to keep myself up to date with new stuff, or is there a way just to modify the already existing code?

thanks,
Chris

Hi,

you’ll have to build from sources. That’s fine and not a big issue, as long as you use GCC 3.3.3, NOT GCC 3.4.4, due to a GCC problem on cygwin.

Cheers, Axel.

Hey Axel,

thanks for the quick reply. Nevertheless I have some additional questions. To set up the cygwin environment I have to modify my .bash_profile but I don’t quite understand the description on the webpage. It says that one has to add the following lines:

 export ROOTSYS='c:\home\rdm\root'   # must be in DOS format
 (change path!)

 export PATH=`cygpath -u $ROOTSYS`/bin:$PATH

“Also the path to the compilers must be provided. This depends on where you’ve installed the compilers. Assuming the defaults you can use:”

 export PATH=$PATH:/c/WINNT/system32:/c/WINNT:/c/Prog.........

I understand to set the ROOTSYS, but the second line is quite a hidden door to me. What is meant with the expression between the quotation marks? I also don’t know exactly where to find the folders of my compilers. I think I downloaded and installed the latest version of cygwin with all it’s packages and I hope that the gcc version you mentioned to me is include in there. Also the /cygwin/ folder is not under c:\ on my system but rather under c:\Programme\ (I’m using a German system)

I’m not sure if I just can download the complete .bash_profile and .bashrc because they look quite different to the ones running right now under my cygwin.

Thanks for every help,
Chris

Hi,
you’re looking at the build instructions for a native windows build, using MS Visual C - which is the recommended way to build ROOT under windows. If you’re willing to sacrifice a considerable amount of performance, if you’re not willing to pay for MSVC, or if you have code too posixy to ever work under windows you can use the cygwin-GCC build.

Now that we’re done with the disclaimer: check http://root.axel-naumann.de for cygwin/GCC build instructions. In principle all you need is

export ROOTSYS=/cygdrive/c/root // yes, posix path export PATH=$ROOTSYS/bin:$PATH cd $ROOTSYS ./configure win32gcc make make cintdlls make map
Cheers, Axel.

ok, I kind of understood what was written on the webpage concerning cygwin and cvs installation. I tried, it worked but somewhere in the “make” process there occured an error. Here the last lines out of the process. It seems there is no libGX11 in the lib folder, and there is none. I looked it up:

g++ -pipe -Wall -Woverloaded-virtual -D_DLL -Iinclude -I/usr/X11R6/include -I
. -o x11/src/G__X11.o -c x11/src/G__X11.cxx
build/unix/wingcc_ld.sh -shared -Wl,–export-all-symbols -Wl,-soname=libGX11.dll
-O2 -Wl,–enable-auto-import -Wl,–enable-runtime-pseudo-reloc -L/usr/X11R6/lib
-o lib/libGX11.dll x11/src/GX11Gui.o x11/src/Rotated.o x11/src/TGX11.o x11/src/
gifdecode.o x11/src/gifencode.o x11/src/gifquantize.o x11/src/G__X11.o -L/usr/X1
1R6/lib -lXpm.dll -L/usr/X11R6/lib -lX11 -Llib -lCore -lCint
x11/src/GX11Gui.o:GX11Gui.cxx:(.text+0x3d6b): undefined reference to `_XShapeCom
bineMask’
collect2: ld returned 1 exit status
make: *** [lib/libGX11.dll] Error 1
rm utils/src/RStl_tmp.cxx utils/src/rootcint_tmp.cxx

has somebody any suggestions?

thanks,
Chris

ah Axel, sorry I didn’t recognize your last post. I’ll follow your steps.

thanks, Chris

ok, the thing with the libGX11.dll - is that maybe because of the compiler problem you mentioned for gcc 3.4.4?

Hi,

no, gcc3.4.4 has nothing to do with it. Let me repeat, though, that building root with gcc3.4.4 will result in a mostly unusable build!

In config/Makefile.config, please change the line
XLIBS = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lXext -lX11
to
XLIBS = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lX11
(i.e. add -lXext in front of -lX11).

Thanks for reporting! This fix will also show up in CVS soon.

Cheers, Axel.

ok, after struggeling around with cygwin and spending the whole night with it I decided to install a linux distribution on my machine. I downloaded the most recent version of root via CVS and tried to install it. It didn’t work. A colleague told me that might have been happened because I used the newest developer version of root.

Is there a way to use an older, stable version, but with some new classes that just recently appeared in the CVS repository. Hack, I just need a stable version of ROOT with this new TProfile3D class!!!

thanks,
Chris

hi, I finally got ROOT to run under UBUNTU…

I checked out the source for v5-10-00 via CVS

cvs -d :pserver:cvs@root.cern.ch:/user/cvs checkout -r v5-10-00 root

followed by

./configure linuxdeb
make
make cintdlls
make install

After I tried a few things to ensure it’s working, I updated via

cvs -z3 update -d -P

again followed by

./configure linuxdeb
make
make cintdlls
make install

to get the newest update of the CVS repository. My aim was to get this new TProfile3D, but it’s not where it should be. It’s nowhere in my root folder. What did I do wrong? I really need this new class and would be highly appreciated when someone could finally help me with this issue…

thanks a lot,
Chris

Hi Chris,

cvs -z3 update -d -P does not remove the version requirement, you still have the v5-10-00 tag on all your files (“tags are sticky” in CVS speak). You’ll have to do cvs -z3 update -A -d -P

Cheers, Axel.

ok, this seems to update to newest cvs. but when running make the following error occurs

==> lib/libProofGui.so done
bin/rmkdepend -R -fnetx/src/TXNetFile.d -Y -w 1000 – -pipe -Wall -fPIC -Iinclude -pthread -Ixrootd/src/xrootd/src -D__cplusplus – netx/src/TXNetFile.cxx
g++ -O1 -pipe -Wall -fPIC -Iinclude -pthread -Ixrootd/src/xrootd/src -DUSEPCH -include precompile.h -o netx/src/TXNetFile.o -c netx/src/TXNetFile.cxx
netx/src/TXNetFile.cxx: In member function ‘virtual void TXNetFile::Init(Bool_t)’:
netx/src/TXNetFile.cxx:583: error: ‘class XrdClient’ has no member named ‘UseCache’
netx/src/TXNetFile.cxx:587: error: ‘class XrdClient’ has no member named ‘UseCache’
netx/src/TXNetFile.cxx: In member function ‘virtual TFile::EAsyncOpenStatus TXNetFile::GetAsyncOpenStatus()’:
netx/src/TXNetFile.cxx:619: error: ‘class XrdClient’ has no member named ‘IsOpen_inprogress’
make: *** [netx/src/TXNetFile.o] Error 1

what does that mean?

thanks,
Chris

and then there is another question…

assuming I already installed a stable root version on my system and I make the update via

cvs -z3 update -A -d -P

what scripts exactly do I have to run again after >>./configure linuxdeb

make
make cintdlls
make install

?

chris

ok, root is doing fine anyway so far on my mashine. The TProfile3D works pretty well as far as I can state.

thanks very much for your help :smiley: ,
best,
Chris