** 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

Reply via email to