Hi Charles,
On Aug 1, 2007, at 11:10 AM, Charles Bacon wrote:
This is interesting. This is the second time we've had someone
install XML::Parser into a fink copy of perl while we were using
the system copy of perl to run our jobmanager scripts.
Adam - what user account is running your container?
globus
How is the container being started?
Well, this was just a test, so I started the container manually by
globus$ $GLOBUS_LOCATION/start-stop start
How are the fink perl modules being added to your environment?
In the .profile for both the globus account and my own account I do
". /sw/bin/init.sh" That shell script modifies PERL5LIB to include
/sw/lib/perl5:/sw/lib/perl5/darwin
My suspicion is that the fink stuff is triggering off of something
like .bash_login, but that the container is being started by a non-
login shell so the INC stuff is missing. So when you run the
postinstall scripts after adding XML::Parser to fink, even the
system perl can find it because of some kind of PERL5LIB
environment variable that fink has set for you. But then when you
launch the container, that environment variable is lost.
Sounds about right to me (.profile is only sourced by login shells).
I tried adding the call to /sw/bin/init.sh to the globus
user's .bashrc and restarting the container, but it didn't seem to
make a difference.
You should be able to add a symlink from $GLOBUS_LOCATION/lib/perl
to the place where XML::Parser can be found. Alternatively,
install XML::Parser into /System/Library/Perl.
/Library/Perl/5.8.6 kocolosk$ sudo ln -s /sw/lib/perl5/5.8.6/darwin-
thread-multi-2level .
did the trick. Thanks. I tried to steer clear of changing anything
in /System; I think Apple explicitly says they're free to overwrite
anything in that directory at their leisure. Thanks again for your
help,
Adam
Martin - we should see if the setup script can cache the INC being
used when XML::Parser is being found, and re-use that when running
the jobmanager scripts that require it.
Charles
On Aug 1, 2007, at 4:56 PM, Adam Kocoloski wrote:
Yep, that helped. It's a missing XML::Parser problem. Here's the
error string:
Script stderr:
Can't locate XML/Parser.pm in @INC (@INC contains: /System/
Library/Perl/5.8.6/darwin-thread-multi-2level /System/Library/
Perl/5.8.6 /Library/Perl/5.8.6/darwin-thread-multi-2level /
Library/Perl/5.8.6 /Library/Perl /Network/Library/Perl/5.8.6/
darwin-thread-multi-2level /Network/Library/Perl/5.8.6 /Network/
Library/Perl /System/Library/Perl/Extras/5.8.6/darwin-thread-
multi-2level /System/Library/Perl/Extras/5.8.6 /Library/Perl/
5.8.1 . /usr/local/globus-4.0.5//lib/perl) at /usr/local/
globus-4.0.5//lib/perl/Globus/GRAM/ExtensionsHandler.pm line
4.BEGIN failed--compilation aborted at /usr/local/globus-4.0.5//
lib/perl/Globus/GRAM/ExtensionsHandler.pm line 4.Compilation
failed in require at /usr/local/globus-4.0.5//lib/perl/Globus/
GRAM/JobManager.pm line 8.BEGIN failed--compilation aborted at /
usr/local/globus-4.0.5//lib/perl/Globus/GRAM/JobManager.pm line
8.Compilation failed in require at /usr/local/globus-4.0.5//lib/
perl/Globus/GRAM/JobManager/fork.pm line 5.BEGIN failed--
compilation aborted at /usr/local/globus-4.0.5//lib/perl/Globus/
GRAM/JobManager/fork.pm line 5.Compilation failed in require at
(eval 1) line 3.
Sure enough, I did have to install XML::Parser via Fink after
bumping into an error during "make install". If I add
push(@INC, '/sw/lib/perl5/5.8.6/darwin-thread-multi-2level');
to the BEGIN of the job-manager-script things appear to work just
fine. I guess my final question is "What's the right way to
customize @INC?" Regards,
Adam
On Aug 1, 2007, at 10:29 AM, [EMAIL PROTECTED] wrote:
Hi Adam,
Please try another thing for me:
Add the following warn statement to
$GLOBUS_LOCATION/libexec/globus-job-manager-script.pl
and check what the commandline output of a simple globusrun-ws
job is.
I hope you get a "Script stderr ..." with some more information.
Please send it then.
...
eval "require $manager_class";
if($@)
{
my $error_string = $@;
warn $error_string;
...
Thanks, Martin
Hi Martin,
On Aug 1, 2007, at 9:14 AM, [EMAIL PROTECTED] wrote:
Adam,
I think the problem in your case is the line
eval "require $manager_class";
If require fails you'll enter the following if block and because
you did not specify a logfile the condition
if (defined($job_description) && defined($job_description-
>logfile()))
fails. This is fine but the failing require is not fine.
Please do the following for me:
1. Add a system debug statement before the eval statement
system("echo $manager_class > /tmp/JOB_MANAGER_CLASS");
eval "require $manager_class";
What's the content of /tmp/JOB_MANAGER_CLASS after a job
submission?
Globus::GRAM::JobManager::fork
2. What are the permissions of
$GLOBUS_LOCATION/lib/perl/Globus/GRAM/JobManager/*.pm
-rw-r--r-- 1 globus globus 13597 Jul 31 12:13 /usr/local/
globus-4.0.5/
lib/perl/Globus/GRAM/JobManager/fork.pm
3. Write the following job description to a file "job.xml":
<job>
<executable>/bin/true</executable>
<extensions>
<logfile>/tmp/GT_SUBMISSION_PERL_LOG</logfile>
</extensions>
</job>
and submit it using "globusrun-ws -submit -f job.xml"
What's the content of /tmp/GT_SUBMISSION_PERL_LOG?
true lives in /usr/bin on Mac OS X, so I changed the path and
submitted. The job failed and no logfile was generated. Regards,
Adam