On 12/01/2011 09:16 AM, Reuti wrote: > Hi, > > Am 01.12.2011 um 14:31 schrieb Prentice Bisbal: > >>> <snip> >>> I finally had some time to dig around on my systems, and here's what I >> found. Some of this will be obvious to experienced RHEL admins/users, >> but I'm just trying to be complete, and provide a full explanation for >> future googlers: >> >> 1 ./etc/bashrc or /etc/profile will source the files in /etc/profile.d, >> which includes modules.sh >> >> 2. /etc/profile.d/modules.sh will call /usr/share/Modules/init/$shell or >> /usr/share/Modules/init/sh: >> >> $ more modules.sh >> shell=`/bin/basename \`/bin/ps -p $$ -ocomm=\`` >> if [ -f /usr/share/Modules/init/$shell ] >> then >> . /usr/share/Modules/init/$shell >> else >> . /usr/share/Modules/init/sh >> fi >> >> Since my shell is bash, /usr/share/Modules/init/bash is called. >> >> 3. Amongst other things, /usr/share/Modules/init/bash defines the >> function module() and then exports it in the first two lines of code: >> >> module() { eval `/usr/bin/modulecmd bash $*`; } >> export -f module >> >> As you can see, there is a closing bracet, which is missing from the SGE >> environment. Looking at the output of the 'env' command, I can confirm >> that the full definition of module (from opening brace to closing brace) >> makes it to my normal interactive, non-SGE environment. It looks like >> this in the output of env: >> >> module=() { eval `/usr/bin/modulecmd bash $*` >> } >> >> Notice, however, that the semicolon in the original definition is now a >> new-line command. Which makes sense, but it must be tripping SGE due to >> the known bug with multi-line environment variables in SGE 6.2u5, which >> is what I'm using, as Reuti pointed out. >> >> It looks like I could just remove the environment modules packages from >> my systems, but I do plan on using them in the near future, so I need to >> fix this. I didn't have modules installed when running RHEL 5, so that >> explains why this error just popped up after the upgrade to RHEL 6. Will >> upgrading to an SGE 6.2 update greater than 5 fix my problem? Is an >> update after u5 even available now, post-Oracle? > is this really only a multi line problem? I mean: then output of env shows > something like: > > foobar=() { echo yes > } > > but even if you make one line out of it (with an additional ";") it can't be > defined this way AFAICS: > > $ foobar() { echo yes; } > $ export -f foobar > > Putting all in one line throws an error, especially with an = in the way. > > == > > The workaround could be: define it as usual, but in a starter method. > > #!/bin/sh > foobar() { echo yes; } > export -f foobar > exec "$@" > > For cosmetic reasons I would then even suggest to remove all foobar()= > definitions from the SGE created environment file. > > -- Reuti
I don't want to go redefining the module function unless I absolutely have to, since it's defined in a file managed by my distro, and may get overwritten by an update, and this seems to be an SGE error. I just ran ran a test job, but did 'unset module' before submitting it, and as expected the module went away. On the gridscheduler list, Rayson suggested that I just download the latest trunk of gridscheduler, compile qsub from that source, and use that to replace the qsub from 6.2u5. I'm going to give that a try. I'll report my results later. Hopefully before the end of the day. -- Prentice _______________________________________________ users mailing list users@gridengine.org https://gridengine.org/mailman/listinfo/users