Re: Odd failure in t/postconfigure/02-revision_no_DEVELOPING.t > 
> My hunch is that while Parrot's *version* number (found in top-level 
> file 'VERSION' and reported by Parrot::BuildUtils::parrot_version()) is 
> important for building Parrot, Parrot's repository *revision* numbers 
> are less important.  But *how much* less important, I cannot yet say. 
> FWIW, here are locations where these $current and $config are used 
> (setting aside my 4 test files above).
> 
> config/gen/revision.pm:30:    my $revision = $Parrot::Revision::current;
> t/distro/file_metadata.t:219:    unless ( $Parrot::Revision::current or 
> `svk ls .` ) {
> tools/build/revision_c.pl:46:    return ${Parrot::Revision::current};
> tools/build/revision_c.pl:51:    return ${Parrot::Revision::config};
> 

Further research into $Parrot::Revision::current and 
$Parrot::Revision::config:

1.  Relevant code from tools/build/revision_c.pl:

/* also in "parrot/embed.h" */
PARROT_API int Parrot_revision(void);
/* also in "parrot/misc.h" */
PARROT_API int Parrot_config_revision(void);

int Parrot_revision(void)
{
     return ${Parrot::Revision::current};
}

int Parrot_config_revision(void)
{
     return ${Parrot::Revision::config};
}


2.  [reconf] 501 $ ack --nohtml --nophp Parrot_revision
compilers/imcc/main.c
120:    rev = Parrot_revision();

include/parrot/embed.h
73:int Parrot_revision(void);

tools/build/revision_c.pl
40:PARROT_API int Parrot_revision(void);
44:int Parrot_revision(void)


3.  [reconf] 503 $ ack --nohtml --nophp Parrot_config_revision
compilers/imcc/main.c
124:    rev = Parrot_config_revision();

include/parrot/misc.h
190:PARROT_API int Parrot_config_revision(void);

tools/build/revision_c.pl
42:PARROT_API int Parrot_config_revision(void);
49:int Parrot_config_revision(void)


4.  Relevant code from config/gen/revision.pm:

     my $revision = $Parrot::Revision::current;

     $conf->data->set(
         revision    => $revision,
     );

     if ( $revision >= 1 ) {
         $self->set_result("r$revision");



Commentary:  Why, in items (2) and (3) above, $current should be used as 
the basis of the C variable in one case and $config should be used as 
the basis of a different C variable in the other case it not something 
apparent to me.

Whether Parrot::Revision needs to be as complex as it is is increasingly 
less obvious to me.  If you're working from the repository and have not 
yet configured, then what use in $config?  Conversely, if you're working 
from the repository and *have* configured, then do you have any further 
need for $current?  And if you're working from a release version, 
$current is entirely irrelevant because $config is all you've got and 
all you're going to get.

kid51

