uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marshall Schor <...@schor.com>
Subject Re: [jira] Commented: (UIMA-1647) Scripts fail to call runUimaClass.sh
Date Tue, 03 Nov 2009 16:57:43 GMT
Jira is down, so I'm just replying here for now.

I found the problem.  First I reproduced this on a local Ubuntu version
with 2 tiny scripts, and sure enough, no parameters were passed. 

I read the Ubuntu man page for sh and it says that parameters are passed
(it is mistaken).

I tried turning on some debugging in the scripts using shopts command
and *surprise* - found it was "unknown".  A little more hunting verified
that the shell being run was not the one documented by Ubuntu as sh, but
rather the dash shell.  You can see this on Ubuntu by doing typing at
the command prompt ls -l /bin/sh.  I looked at the man pages for that,
and found that the . command doesn't do parameters.  So it is operating
as designed.

There is an interesting link in /bin on Ubuntu:  /bin/sh.distrib ->
bash.  So Ubuntu is changing this explicitly from the norm, I think.

A poor fix is to replace (on Ubuntu) the #!/bin/sh with #!/bin/bash
which then makes everything work.

A better fix (I think) is to follow Burn's suggestion and delete the "."
altogether, and *export* any variables that we want the inner scripts to
"see".

This has potentially a slight backwards compatibility issue:  if
previous *user-written* scripts used the "." approach, without exporting
variables, to include our scripts, these would need to be updated.  But
I don't think that's common practice.

So - my plan is to remove the ".", and export any variables we want
inner routines to see.

-Marshall

Jörn Kottmann (JIRA) wrote:
>     [ https://issues.apache.org/jira/browse/UIMA-1647?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12773070#action_12773070
] 
>
> Jörn Kottmann commented on UIMA-1647:
> -------------------------------------
>
> Ok I updated and retried:
>
> joern@karkand:~/uima test/apache-uima$ bin/cpeGui.sh 
> Usage: specify -Dorg.apache.uima.jarpath=XXXX, where
>   XXXX is a string of file paths to directories or jar files, separated using the proper
path separator character.
>   For directories, all of the JARs found in these directories will be added to the classpath.
>   If the directory has no Jars, then it is put in the class path directly.
>   Normal "parent-first" delegation is done.
>   The first argument is taken to be the name of the class whose "main" method will be
called and passed the rest of the arguments.
>  Set -DUimaBootstrapSuppressClassPathDisplay to suppress the display of the resulting
classpath
>
> Somehow it fails to pass the parameter to runUimaClass.sh, but I have no idea why. It
works after removing the . or replacing it with sh. I did the test with Ubuntu 9.10.
>
>   
>> Scripts fail to call runUimaClass.sh 
>> -------------------------------------
>>
>>                 Key: UIMA-1647
>>                 URL: https://issues.apache.org/jira/browse/UIMA-1647
>>             Project: UIMA
>>          Issue Type: Bug
>>          Components: Async Scaleout
>>    Affects Versions: 2.3AS
>>         Environment: Ubuntu Server 8.10, Java 1.6
>>            Reporter: Jörn Kottmann
>>            Assignee: Jörn Kottmann
>>            Priority: Blocker
>>             Fix For: 2.3, 2.3AS
>>
>>
>> Executing deployAsyncService.sh fails with the following error message:
>> .: 28: runUimaClass.sh: not found 
>> deployAsyncService.sh calls runUimaClass.sh with ". runUimaClass.sh ...",
>> in an older version this script called setUimaClassPath.sh, but that was 
>> done with the absolute path:
>> . "$UIMA_HOME/bin/setUimaClassPath.sh"
>> I suggest that we change all our .sh scripts to use the absolute path like
>> it was done before for at least the deployAsyncService.sh script.
>>     
>
>   

Mime
View raw message