>>>>> On Tue, 18 Mar 2008 17:56:14 +1100, Adam Kennedy <[EMAIL PROTECTED]> said:
> configure_requires MUST be static, and can NEVER be programmatic. > That's why it exists in the first place. It seems we must split the discussion into two or three. I'll revisit the topic if configure_requires can be dependent on a feature once we have gone one step further. So let's please address now the really urgent issue of an imho blatant spec bug. Revised patch follows. Index: META-spec.pod =================================================================== --- META-spec.pod (Revision 11071) +++ META-spec.pod (Arbeitskopie) @@ -259,13 +259,13 @@ Example: optional_features: - - foo: + foo: description: Provides the ability to blah. requires: Data::Dumper: 0 File::Find: 1.03 -I<(Spec 1.1) [optional] {map} A YAML sequence of names for optional features +I<(Spec 1.1) [optional] {map} A YAML mapping of names for optional features which are made available when its requirements are met. For each feature a description is provided along with any of L<"requires">, L<"build_requires">, and L<"conflicts">, which have the same meaning in I'm sure this spec bug is resulting from the fact that nobody can parse YAML as well as Data::Dumper output. So let me illustrate how the patch affects the data structure for the following case: Watch this YAML as in the current spec: optional_features: - foo: description: Provides the ability to foo requires: Data::Dumper: 0 File::Find: 1.03 - bar: description: Provides the ability to bar requires: Data::Dumper: 0 File::Find: 1.03 Data::Dumper of this (imho broken) strucutre: $VAR1 = { 'optional_features' => [ { 'foo' => { 'requires' => { 'File::Find' => '1.03', 'Data::Dumper' => '0' }, 'description' => 'Provides the ability to foo' } }, { 'bar' => { 'requires' => { 'File::Find' => '1.03', 'Data::Dumper' => '0' }, 'description' => 'Provides the ability to bar' } } ] }; And now my proposed change in YAML: optional_features: foo: description: Provides the ability to foo requires: Data::Dumper: 0 File::Find: 1.03 bar: description: Provides the ability to bar requires: Data::Dumper: 0 File::Find: 1.03 And its DD counterpart: $VAR1 = { 'optional_features' => { 'bar' => { 'requires' => { 'File::Find' => '1.03', 'Data::Dumper' => '0' }, 'description' => 'Provides the ability to bar' }, 'foo' => { 'requires' => { 'File::Find' => '1.03', 'Data::Dumper' => '0' }, 'description' => 'Provides the ability to foo' } } }; I hope this is obvious enough for everybody to agree. Thanks, -- andreas