[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: DefineInGroup'd classes not really being defined?
From: |
mark |
Subject: |
Re: DefineInGroup'd classes not really being defined? |
Date: |
Wed, 14 May 2003 06:30:11 +0200 (MEST) |
Applied patch
On 13 May, Andrew Stribblehill wrote:
> Quoting Chip Seraphine <address@hidden> (2003-05-12 18:43:26 BST):
>> 2.06, solaris/intel:
>>
>> Mark pointed me at the DefineInGroup command, but I can't get it to
>> work. -d2 shows that the code for it in edittools.c does in fact fire
>> and it tries to add the appropriate classname (string) to the heap (via
>> AddClassToHeap(currentitem)), but subsequent actions that require that
>> class do not see the class. Running cfagent in a debugger confirms what
>> the d2 output.
>>
>> Basically, the edittools stuff seems to be Doing The Right Thing but the
>> class is not defined for purposes of subsequent actions. The *really*
>> wierd thing is that the CFALLCLASSES environment variable appears to
>> have the DefineInGroup'd class set properly in it.
>>
>> Specifically, this cfagent.conf file:
>>
>> control:
>>
>> Inform = ( on )
>> actionsequence = ( editfiles shellcommands )
>>
>> editfiles:
>> { /tmp/foo
>> BeginGroupIfNoSuchLine "nomatching"
>> Append "appended line $(date)"
>> DefineInGroup "foo2"
>> EndGroup
>> DefineClasses "foo1"
>> }
>>
>> shellcommands:
>> "/usr/bin/logger -p local1.info running a test"
>> foo1::
>> "/usr/bin/logger -p local1.notice foo1 $(date)"
>> foo2::
>> "/usr/bin/logger -p local1.notice foo2 $(date)"
>
> Curiouser and curiouser (to quote Alice). When I replace the
> shellcommands chunk with
>
> alerts:
> foo1:: "foo1 defined"
> foo2:: "foo2 defined"
>
> it works fine.
>
> Ah, the foo2 class isn't counted as installable when the shell
> command gets parsed. Verified that AddInstallable = ( foo2 ) makes it
> work.
>
> The following patch Works For Me(tm):
>
> diff -ruN cfengine-2.0.6-old/src/install.c cfengine-2.0.6/src/install.c
> --- cfengine-2.0.6-old/src/install.c 2003-04-07 18:38:31.000000000 +0100
> +++ cfengine-2.0.6/src/install.c 2003-05-13 12:26:02.000000000 +0100
> @@ -2735,6 +2735,7 @@
> {
> yyerror("DefineInGroup outside a group");
> }
> + AddInstallable(new->data);
> break;
> case SetLine:
> if (FOREACHLEVEL > 0)
> @@ -2760,7 +2761,7 @@
> case DefineClasses:
> if (EDITGROUPLEVEL > 0 || FOREACHLEVEL > 0)
> {
> - yyerror("Class definitions inside conditionals or loops are not
> allowed");
> + yyerror("Class definitions inside conditionals or loops are not
> allowed. Did you mean DefineInGroup?");
> }
> AddInstallable(new->data);
> break;
>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Work: +47 22453272 Email: address@hidden
Fax : +47 22453205 WWW : http://www.iu.hio.no/~mark
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~