Re: optional_features

[email protected] ((Andreas J. Koenig))
Newsgroups perl.module.build
Message-ID <[email protected]>
>>>>> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.