Hi all,
I have implemented a bug fix and would appreciate your advice on how to
include it correctly into the official version.
The new Inline.pm file can be downloaded here:
http://yaakovnet.net/Inline-0.45.pm
...
sub md5_checksum {
my $o=shift; my $config=$o->{CONFIG};
require Digest::MD5;
my $md5=Digest::MD5->new;
for my $key (sort keys %$config) { # include all config options
next if $key eq "FORCE_BUILD"; # ... but skip FORCE_BUILD
my $value=$config->{$key};
if(ref($value) eq "ARRAY") { # some values are arrays
$md5->add("*$key: [EMAIL PROTECTED]");
}
elsif(ref($value)) { # this should not happen
$md5->add("*$key: ??\0"); # this is not perfect but works
}
else { # most values are strings
$md5->add("*$key=$value\0");
}
}
$md5->add("code: ".$o->{API}{code}); # include the source code
return $md5->hexdigest;
};
My understanding is that this will affect all Inline modules, right?.
Are the keys in %config only the options that Inline.pm knows about or
do they include all config keys? For example, if I set DEBUG => 1
while using Inline::Java and later remove it, will that trigger a
rebuild?
Patrick
Some comments:
* I include all options from $o->{CONFIG} except FORCE_BUILD.
* Most options are strings: they are included directly in the checksum.
* Some options are arrays: they are expanded.
* If an option has another reference type, the option name is included,
but the value is ignored.
* If an option has the value undef, a warning will appear with -w.
Somebody who knows all the configuration options of Inline might comment
on whether this is "the right thing":
* Maybe some config options are in different places.
* Maybe some optional config options are stored as hash tables.
* Maybe some config options should be excluded from the checksum.
In any of the cases, I will be happy to adjust the code accordingly.
Best regards,
Yaakov Belch
# from Eric Wilhelm
# on 01/03/2007 07:26 PM
> I think you're correct that all (well, mostly all) of the config options
> should be checksummed somehow. Is the .inl file ever checksummed? If
> so, just adding LIBS there would do the trick. If not, I would be
> inclined to simply serialize most the config into the MD5 call.
>
> The one exception might be FORCE_BUILD (and maybe a few others.) Adding
> FORCE_BUILD to the config should force a build anyway, but removing it
> should not.
>
> --Eric
--
=====================
Patrick LeBoutillier
Laval, Québec, Canada