You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@karaf.apache.org by Bernd <ec...@zusammenkunft.net> on 2020/07/09 10:53:00 UTC

KARAF_SCRIPT conditionally set?

Hello,

The Karaf scripts have a mechanism to set KARAF_SCRIPT and then delegate
common config settings to setenv. The mechanism has however two quirks,
first of all if a script already sees a KARAF_SRIPT value it will not reset
it, and secondly it will use the PROGNAME of the script.

In default Karaf installation this seems to be not an issue, since the
condition on KARAF_SCRIPT in setenv is only a comment. However we do use
this mechanism to set settings for the main application server start and
for all other commands).

We check for KARAF_SCRIPT=start or KARAFAF_SCRIPT=karaf. However if rename
start to start2 or if I call it from another script which also sets
KARAF_SCRIPT in both cases the value passed to setenv is not "start" or
"karaf" and therefore it will pick the wrong settings.

I wonder if it would better to set the KARAF_SCRIPT settings
unconditionally in start and karaf. Not using PROGNAME would be another
option, nut sure if it is good or bad that a renamed script uses different
settings...?

A more general comment, a lot of environemnt variables used internal in the
scripts might be inherited from the current shell, that is somewhat a
support problem in our experience. Did you had a discussion on that,
already?

start:
https://github.com/apache/karaf/blob/25b1a00ab6b2330a469c244c4abc1389aaad5313/assemblies/features/base/src/main/filtered-resources/resources/bin/start#L71
if [ "x${KARAF_SCRIPT}" = "x" ]; then
KARAF_SCRIPT="${PROGNAME}"
export KARAF_SCRIPT
fi
if [ -f "${DIRNAME}/setenv" ]; then
. "${DIRNAME}/setenv"
fi

Re: KARAF_SCRIPT conditionally set?

Posted by Bernd <ec...@zusammenkunft.net>.
Oh and BTW, the PROGNAME is not used in the Windows (.bat) case, it uses
hardcoded start.bat/karaf.bat names instead:

https://github.com/apache/karaf/blob/25b1a00ab6b2330a469c244c4abc1389aaad5313/assemblies/features/base/src/main/filtered-resources/resources/bin/start.bat#L29

> set PROGNAME=%~nx0%
> ...
> rem Sourcing environment settings for karaf similar to tomcats setenv
> if "%KARAF_SCRIPT%" == "" (
> SET KARAF_SCRIPT="start.bat"
> )
> if exist "%DIRNAME%setenv.bat" (
> call "%DIRNAME%setenv.bat"
> )


Gruss
Bernd

Re: KARAF_SCRIPT conditionally set?

Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
Ah, ok I understand now.

Yes, I think it makes sense. I don’t remember why we did this way ;)

Thanks
Regards
JB

> Le 10 juil. 2020 à 11:22, Bernd Eckenfels <ec...@zusammenkunft.net> a écrit :
> 
> Hello JB,
> 
> I am proposing to set KARAF_SCRIPT to the name of the script without first checking if it was already set. This way it is always "start" or "karaf" independend if it has been set before.
> 
> I don't see a condition where you would want to inherit a different script name when initializing the start script.
> 
> wheter to use PROGNAME instead of the literal is up for discussion, I would go with the literal. It should be aligned with the .bat file however, in the moment they differ (and I am not sure why)
> 
> Gruss
> Bernd
> --
> http://bernd.eckenfels.net
> ________________________________
> Von: Jean-Baptiste Onofre <jb...@nanthrax.net>
> Gesendet: Friday, July 10, 2020 6:39:32 AM
> An: dev@karaf.apache.org <de...@karaf.apache.org>
> Betreff: Re: KARAF_SCRIPT conditionally set?
> 
> Hi Bernd,
> 
> I’m not sure to see exactly the issue.
> 
> Content of KARAF_SCRIPT is passed to setenv right ?
> 
> Basically, you are proposing to use setenv before checking KARAF_SCRIPT, correct ?
> 
> Regards
> JB
> 
>> Le 9 juil. 2020 à 12:53, Bernd <ec...@zusammenkunft.net> a écrit :
>> 
>> Hello,
>> 
>> The Karaf scripts have a mechanism to set KARAF_SCRIPT and then delegate
>> common config settings to setenv. The mechanism has however two quirks,
>> first of all if a script already sees a KARAF_SRIPT value it will not reset
>> it, and secondly it will use the PROGNAME of the script.
>> 
>> In default Karaf installation this seems to be not an issue, since the
>> condition on KARAF_SCRIPT in setenv is only a comment. However we do use
>> this mechanism to set settings for the main application server start and
>> for all other commands).
>> 
>> We check for KARAF_SCRIPT=start or KARAFAF_SCRIPT=karaf. However if rename
>> start to start2 or if I call it from another script which also sets
>> KARAF_SCRIPT in both cases the value passed to setenv is not "start" or
>> "karaf" and therefore it will pick the wrong settings.
>> 
>> I wonder if it would better to set the KARAF_SCRIPT settings
>> unconditionally in start and karaf. Not using PROGNAME would be another
>> option, nut sure if it is good or bad that a renamed script uses different
>> settings...?
>> 
>> A more general comment, a lot of environemnt variables used internal in the
>> scripts might be inherited from the current shell, that is somewhat a
>> support problem in our experience. Did you had a discussion on that,
>> already?
>> 
>> start:
>> https://github.com/apache/karaf/blob/25b1a00ab6b2330a469c244c4abc1389aaad5313/assemblies/features/base/src/main/filtered-resources/resources/bin/start#L71
>> if [ "x${KARAF_SCRIPT}" = "x" ]; then
>> KARAF_SCRIPT="${PROGNAME}"
>> export KARAF_SCRIPT
>> fi
>> if [ -f "${DIRNAME}/setenv" ]; then
>> . "${DIRNAME}/setenv"
>> fi
> 


Re: KARAF_SCRIPT conditionally set?

Posted by Bernd Eckenfels <ec...@zusammenkunft.net>.
Hello JB,

I am proposing to set KARAF_SCRIPT to the name of the script without first checking if it was already set. This way it is always "start" or "karaf" independend if it has been set before.

I don't see a condition where you would want to inherit a different script name when initializing the start script.

wheter to use PROGNAME instead of the literal is up for discussion, I would go with the literal. It should be aligned with the .bat file however, in the moment they differ (and I am not sure why)

Gruss
Bernd
--
http://bernd.eckenfels.net
________________________________
Von: Jean-Baptiste Onofre <jb...@nanthrax.net>
Gesendet: Friday, July 10, 2020 6:39:32 AM
An: dev@karaf.apache.org <de...@karaf.apache.org>
Betreff: Re: KARAF_SCRIPT conditionally set?

Hi Bernd,

I’m not sure to see exactly the issue.

Content of KARAF_SCRIPT is passed to setenv right ?

Basically, you are proposing to use setenv before checking KARAF_SCRIPT, correct ?

Regards
JB

> Le 9 juil. 2020 à 12:53, Bernd <ec...@zusammenkunft.net> a écrit :
>
> Hello,
>
> The Karaf scripts have a mechanism to set KARAF_SCRIPT and then delegate
> common config settings to setenv. The mechanism has however two quirks,
> first of all if a script already sees a KARAF_SRIPT value it will not reset
> it, and secondly it will use the PROGNAME of the script.
>
> In default Karaf installation this seems to be not an issue, since the
> condition on KARAF_SCRIPT in setenv is only a comment. However we do use
> this mechanism to set settings for the main application server start and
> for all other commands).
>
> We check for KARAF_SCRIPT=start or KARAFAF_SCRIPT=karaf. However if rename
> start to start2 or if I call it from another script which also sets
> KARAF_SCRIPT in both cases the value passed to setenv is not "start" or
> "karaf" and therefore it will pick the wrong settings.
>
> I wonder if it would better to set the KARAF_SCRIPT settings
> unconditionally in start and karaf. Not using PROGNAME would be another
> option, nut sure if it is good or bad that a renamed script uses different
> settings...?
>
> A more general comment, a lot of environemnt variables used internal in the
> scripts might be inherited from the current shell, that is somewhat a
> support problem in our experience. Did you had a discussion on that,
> already?
>
> start:
> https://github.com/apache/karaf/blob/25b1a00ab6b2330a469c244c4abc1389aaad5313/assemblies/features/base/src/main/filtered-resources/resources/bin/start#L71
> if [ "x${KARAF_SCRIPT}" = "x" ]; then
> KARAF_SCRIPT="${PROGNAME}"
> export KARAF_SCRIPT
> fi
> if [ -f "${DIRNAME}/setenv" ]; then
> . "${DIRNAME}/setenv"
> fi


Re: KARAF_SCRIPT conditionally set?

Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
Hi Bernd,

I’m not sure to see exactly the issue.

Content of KARAF_SCRIPT is passed to setenv right ?

Basically, you are proposing to use setenv before checking KARAF_SCRIPT, correct ?

Regards
JB

> Le 9 juil. 2020 à 12:53, Bernd <ec...@zusammenkunft.net> a écrit :
> 
> Hello,
> 
> The Karaf scripts have a mechanism to set KARAF_SCRIPT and then delegate
> common config settings to setenv. The mechanism has however two quirks,
> first of all if a script already sees a KARAF_SRIPT value it will not reset
> it, and secondly it will use the PROGNAME of the script.
> 
> In default Karaf installation this seems to be not an issue, since the
> condition on KARAF_SCRIPT in setenv is only a comment. However we do use
> this mechanism to set settings for the main application server start and
> for all other commands).
> 
> We check for KARAF_SCRIPT=start or KARAFAF_SCRIPT=karaf. However if rename
> start to start2 or if I call it from another script which also sets
> KARAF_SCRIPT in both cases the value passed to setenv is not "start" or
> "karaf" and therefore it will pick the wrong settings.
> 
> I wonder if it would better to set the KARAF_SCRIPT settings
> unconditionally in start and karaf. Not using PROGNAME would be another
> option, nut sure if it is good or bad that a renamed script uses different
> settings...?
> 
> A more general comment, a lot of environemnt variables used internal in the
> scripts might be inherited from the current shell, that is somewhat a
> support problem in our experience. Did you had a discussion on that,
> already?
> 
> start:
> https://github.com/apache/karaf/blob/25b1a00ab6b2330a469c244c4abc1389aaad5313/assemblies/features/base/src/main/filtered-resources/resources/bin/start#L71
> if [ "x${KARAF_SCRIPT}" = "x" ]; then
> KARAF_SCRIPT="${PROGNAME}"
> export KARAF_SCRIPT
> fi
> if [ -f "${DIRNAME}/setenv" ]; then
> . "${DIRNAME}/setenv"
> fi