** We need some reply from somebody who knows the internals of Inline
configuration **
Background: In order to fix a Inline bug in the decision whether to
recompile a module or not,
we need to include the relevant configuration keys into the MD5 hash
sum, not just the code.
I don't have a lot of experience with the various Inline modules (except
Inline::C which I like a lot),
hence I don't know where all the configuration information is stored in
the Inline object.
I also don't know which configuration options should be included in the
checksum and
which should be left out.
Making some experiments with the current version 0.44, I believe the
following is true:
* the relevant information can be found in $o->{CONFIG}
* the values in this hash are either strings/numbers or arrays of
strings/numbers
* all configuration options except FORCE_BUILD affect the compilation,
=> any change of them should trigger a recompilation.
* Inline::C (and most likely other extensions) use the same location
$o->{CONFIG}.
My bugfix is based on these assumptions.
My results of my few experiments are compatible with these assumptions
and the
assumptions seem sensible for the Inline implementations. However, I
don't know
for sure and I could easily have missed an important point.
For an authoritative answer, I need help from a Inline expert!
I would be more than happy to adjust my little function according to the
information
that I receive.
Best regards,
Yaakov
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};
... compute Digest::MD5 checksum of the keys and values in %$config;
... add source code from $o->{API}{code}); # include the source code
}
Yaakov
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
This is exactly what I guess.
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.
Yaakov