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

Reply via email to