Perl-Toolchain-Gang/module-build-tiny

The big dependency reorganization

Leont opened this issue · 1 comments

Currently Module::Build::Tiny is having three non-core dependencies (all released by myself). When I wrote Module::Build::Tiny, this organization made sense to me, now it increasingly doesn't anymore. I want to reorganize them, specially before I do proceed with Perl-Toolchain-Gang/Module-Build#25. I'd like to do this in one go, to minimize pain for packagers.

  • ExtUtils::Config
    This abstracts away having an overridable configuration (e.g. --config arguments in Build.PL); it was originally taken out of Module::Build. Various other pieces of next-generation toolchaining that I wrote are also made EU::C aware (ExtUtils::Builder{,::Plan}, ExtUtils::HasCompiler, Devel::FindPerl, Dist::Build, ...) though most don't have a hard dependency on it.
  • ExtUtils::InstallPaths
    This determines the install locations based on the system configuration (using ExtUtils::Config) and various arguments. This is quite essential to the core function of any install tool, and really no one wants to reimplement this.
  • ExtUtils::Helpers
    This is a somewhat random bag of utility functions that have only one thing in common: you'll need pretty much all of them when writing an install tool. It's pl2bat functionality really should be deduplicated (it's the third copy, after pl2bat.pl and Module::Build; with some divergence), and split_like_shell is the only part of Helpers that I've used for non-installtool purposes.

What I want to do is (in order of surely a good idea to maybe):

  • Create a EU::PL2Bat module
    This should be the back-end for all of pl2bat, Module::Build and ExtUtils::Helpers. This would enter core.
  • Merge EU::C an EU::IP in one dist.
    I suspect it's going to be really uncommon to want to create a EU::C object outside of an install tool, and in any installtool (other than MM which does its own thing) you'd be using it anyway.
  • Create a ExtUtils::ShellLike
    This will contain a split_like_shell and probably detildefy. It may contain more relevant functionality later
  • Possibly deprecate ExtUtils::Helpers?
    Once all of this is done, the remains of ExtUtils::Helpers are small (and random) enough that it might not make sense to keep existing as a separate module. Question is, what should be done with it? With ExtUtils-InstallPaths (they're generally all used together)? Merged into Module-Build-Tiny (only current user)? Remain as an independent distribution?

Feedback is most welcome (@ether, @ribasushi, @dagolden,@haarg, @shadowcat-mst).

I think Helpers can move into MBT itself.