Re: more META.*.yml files

[email protected] (Eric Wilhelm)
Newsgroups perl.module.build
Message-ID <[email protected]>
# from Shlomi Fish
# on Monday 04 August 2008 04:14:

>> But a patch demonstrating what you want would probably be more
>> convincing, in that we could much better understand what it is you
>> want.
>
>I think I can accomplish that using a sub-class, so that will be my
> first lead. I'll also do it TDD-style, so you can understand what I
> mean using the tests.

Just write some code that does what you want to do.  I recommend that it 
is neither a patch nor a subclass.

  #META.in.yml
  add_to_cleanup:
    - Math-Vec-*
    - META.yml
  create_makefile_pl: passthrough
  dist_version_from: lib/Math/Vec.pm
  license: perl
  module_name: Math::Vec
  test_requires:
    Test::More: 0


  # Build.PL
  ...
  use YAML;
  my $builder = $build_class->new(
    %{YAML::LoadFile('META.in.yml')},
  );

Done?  Of course there's the hang-up that not all build parameters turn 
into META.yml, so it would be nice to have some parallels between them 
instead of needing to put a meta_merge in your META.in.yml.

There is the problem of now needing configure_requires => YAML, but you 
might as well since patching Module::Build::YAML to support Load() 
would just mean adding a configure_requires for a newer M::B.

The point is to minimize the barrier to installation without being 
totally bored as an author, so maybe just have a Build.PL.in template 
and a tool to instantiate the Build.PL.

  $template =~ s/^\s*# PARAMETERS GO HERE.*$/$params_string/m;

Obviously, not all dependencies can be static - thus the Build.PL and 
the dynamic_config flag.  But your tool could certainly just conjure a 
stock Build.PL boilerplate if it doesn't find a Build.PL.in file.

We've also talked about a META.local.yml file as a way for the installer 
toolchain to have a more uniform handling of dynamic_config => 1.

In theory, I could set dynamic_config => 0 in my META.yml and quit 
shipping a Build.PL file, right?  Ah well, one can dream.

By the way, saying "because I want to" is a terrible answer to "why?". 
Perhaps you hove some reason like being able to automate module 
publishing, simplifying input data, or eliminating troubles with stale 
templates.  I've probably had 2-3 episodes of hacking together some 
shell and perl translations to my Build.PL files (of which there are 
60+ in my checkouts dir atm.)

--Eric
-- 
Minimum wage help gives you minimum service.
--David Schomer
---------------------------------------------------
    http://scratchcomputing.com
---------------------------------------------------
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.