Hello Fons,
Don't you think one has to add some extra methods to TApplication / TSystem to get the name of those directories from one single place to eliminate such sort of the problem in future?
Something like:
http://root.cern.ch/root/htmldoc/TApplication.html#TApplication:Applicat
ionName
const char *TApplication::ApplicationBinRoot() const const char *TApplication::ApplicationFontRoot() const
etc
Thank you, Valeri
Best Regards
Valeri Fine
> -----Original Message-----
> From: owner-roottalk_at_pcroot.cern.ch
[mailto:owner-roottalk_at_pcroot.cern.ch]
> On Behalf Of Fons Rademakers
> Sent: Monday, October 30, 2006 9:28 AM
> To: Roland Kuhn
> Cc: Christian Holm Christensen; ROOT Talk; Debian Science Mailing List
> Subject: Re: [ROOT] New release of Debian ROOT packages - Development
> Snapshot
>
> There is some ROOTSYS badness in TGQt which has to be fixed. I'll also
> take
> care of the test program problems using the attached patches.
>
> Cheers, Fons.
>
>
> Roland Kuhn wrote:
> > Hi Christian!
> >
> > On 30 Oct 2006, at 12:20, Christian Holm Christensen wrote:
> >
> >>>> Try unsetting the ROOTSYS environment variable (and
LD_LIBRARY_PATH
> >>>> for
> >>>> that matter). These variables are _not_ needed.
> >>>>
> >>> Without the Qt plugin it gave no errors, but with it I got
> >>
> >> So, if you unset ROOTSYS, it works? Is that correctly understood?
> >>
> > Sorry for not being crystal clear: without Qt I did not observe any
> > error messages or problems when running with unset ROOTSYS.
> >
> >>> rkuhn_at_rk:~$ root
> >>> Error in <TUnixSystem::ExpandFileName>: input:
$ROOTSYS/bin/root.exe,
> >>> output: $ROOTSYS/bin/root.exe
> >>> Xlib: extension "XInputExtension" missing on display
> "localhost:10.0".
> >>
> >> I guess this has to do with the remote X server set-up. It's
probably
> >> harmless.
> >>
> > I figured.
> >
> >>> Failed to get list of devices\
> >>
> >> Does the pointer and keyboard work?
> >>
> > Yes.
> >
> >>> ** $Id: TGQt.cxx,v 1.33 2006/10/04 16:08:48 antcheva Exp $
> this=0xb12a70
> >>> The font "symbol.ttf" was not installed yet
> >>> Substitute it with "Arial"
> >>> Make sure your local "~/.fonts.conf" or "/etc/fonts/fonts.conf"
file
> >>> points to "$ROOOTSYS/fonts" directory to get the proper support
for
> >>> ROOT TLatex class
> >>> Error in <TUnixSystem::ExpandFileName>: input:
$ROOTSYS/cint/include/
> >> ... <bla bla bla>
> >>
> >> All these warnings has to do with some bugs in the Qt code. The
> problem
> >> is, that the Qt code does not take into account that one might
install
> >> ROOT without the use of the ROOTSYS environment variable (sigh!).
I'll
> >> open a bug report on savannah.cern.ch and add a fix.
> >>
> > Okay, thanks.
> >
> >>> To check e.g. library loading I tried
'gSystem.Load("libPhysics.so")'
> >>> and got again two Errors with qt and none without. The library
seems
> >>> to work, though.
> >>
> >> That's because the Qt backend adds wrong stuff to the library path.
> >>
> > Yup.
> >
> >>> I'm doing some stress tests now.
> >>
> >> Great. As far as I can tell, they all work, right?
> >>
> > Yes.
> >
> >>> I've not noticed any failures (stressGraphics seems to require the
> >>> creation of a file which I cannot write as non-root,
> >>
> >> Probably since you're executing in a directory where you have no
write
> >> access. I'd suggest copying the `test' directory somewhere else
(as a
> >> normal user) and compile and run it there.
> >>
> > Well, it complains that $ROOTSYS/tutorials/hsimple.root does not
exist,
> > which is not a location I'd have write access for. Something like
below
> > might help:
> >
> > --- /usr/share/doc/root/test/stressGraphics.cxx 2006-09-12
> > 13:24:40.000000000 +0000
> > +++ stressGraphics.cxx 2006-10-30 13:13:49.000000000 +0000
> > @@ -143,10 +143,21 @@
> >
> > // Check if $ROOTSYS/tutorials/hsimple.root exists
> > gErrorIgnoreLevel = 9999;
> > + if (verbose) printf("searching hsimple.root\n");
> > gFile = new TFile("$ROOTSYS/tutorials/hsimple.root");
> > if (gFile->IsZombie()) {
> > - printf("File $ROOTSYS/tutorials/hsimple.root does not exist.
Run
> > tutorial hsimple.C first\n");
> > - return;
> > + if (verbose) printf(" not found in $ROOTSYS/tutorials\n");
> > + delete gFile;
> > + gFile = new TFile("hsimple.root");
> > + if (gFile->IsZombie()) {
> > + if (verbose) printf(" not found in current directory\n");
> > + printf("File hsimple.root does not exist. Run tutorial
> > hsimple.C first\n");
> > + return;
> > + } else {
> > + if (verbose) printf(" found in current directory\n");
> > + }
> > + } else {
> > + if (verbose) printf(" found in $ROOTSYS/tutorials\n");
> > }
> > gErrorIgnoreLevel = 0;
> >
> > =====
> >
> > Side note: the options parsing of stressGraphics.cxx is a bit weird,
> right?
> >
> >>> stressHepix
> >>> seems to want to call only the other stress tests, which fails
> >>> because I don't have '.' in my PATH, and I shouldn't be forced
to).
> >>
> >> No you shouldn't. This is a mistake in the stressHepix program to
> >> assume that.
> >>
> >> Having `.' in ones path is very _very_ bad and is frowned upon by
any
> >> serious administrator. Suppose you have `.' in your PATH, and you
cd
> >> to some other users directory. There you execute `ls'. Now, what
you
> >> don't know, is that the other user has put a malicious version of
`ls'
> >> in her directory, say something that forks and runs some bad stuff
in
> >> the background, while executing `/bin/ls' in the foreground.
> >>
> > Yep, that's why I said I shouldn't be forced to ;-)
> >
> >> Someone please correct the function `runTest' in `stressHepix.cxx'
to
> >> read
> >>
> >> void runTest(const char *atest, int estimate) {
> >> printf("Running : %s, (takes %d RT seconds on the ref
> >> machine)\n",atest,estimate);
> >> gSystem->Exec(Form("./%s >>stressHepix.log",atest));
> >> }
> >>
> > Looks reasonable. But it might be even better to use the dirname of
> > argv[0], unless that's the empty string. The following Works For
Me(tm)
> > and also fixes a linker problem with libEvent.so (had to set
> > LD_LIBRARY_PATH before):
> >
> > diff -ur /usr/share/doc/root/test/Makefile test/Makefile
> > --- /usr/share/doc/root/test/Makefile 2006-09-30
18:17:14.000000000
> +0000
> > +++ test/Makefile 2006-10-30 12:58:35.000000000 +0000
> > @@ -17,7 +17,7 @@
> > ifeq ($(PLATFORM),win32)
> > EVENTLIB = libEvent.lib
> > else
> > -EVENTLIB = $(EVENTSO)
> > +EVENTLIB = $(shell pwd)/$(EVENTSO)
> > endif
> >
> > MAINEVENTO = MainEvent.$(ObjSuf)
> > diff -ur /usr/share/doc/root/test/stressHepix.cxx
test/stressHepix.cxx
> > --- /usr/share/doc/root/test/stressHepix.cxx 2006-09-15
> > 10:05:30.000000000 +0000
> > +++ test/stressHepix.cxx 2006-10-30 12:47:33.000000000 +0000
> > @@ -71,7 +71,14 @@
> >
> > void runTest(const char *atest, int estimate) {
> > printf("Running : %s, (takes %d RT seconds on the ref
> > machine)\n",atest,estimate);
> > - gSystem->Exec(Form("%s >>stressHepix.log",atest));
> > + TString cmdname(gROOT->GetApplication()->Argv(0));
> > + TString prefix(".");
> > + Ssiz_t offset;
> > + if ((offset = cmdname.Last('/')) != kNPOS) {
> > + cmdname.Resize(offset);
> > + prefix = cmdname;
> > + }
> > + gSystem->Exec(Form("%s/%s
>>stressHepix.log",prefix.Data(),atest));> >
> > }
> >
> > int main(int argc, char **argv)
> > =====
This archive was generated by hypermail 2.2.0 : Mon Jan 01 2007 - 16:32:01 MET