[sf-perl] Tools and work flows for developing collections of distributions
David Christensen
dpchrist at holgerdanske.com
Sat Dec 8 10:11:52 PST 2018
> David Christensen <dpchrist at holgerdanske.com> wrote:
>> makemaker:
>>
>> I use h2xs, ExtUtils::MakeMaker, and make(1) on Unix-like platforms
>> for developing Perl modules and collecting them together into
>> distributions.
>>
>>
>> I now have several distributions and would like to develop and test
>> them together (preferably, without installation).
>>
>>
>> How do people on this list develop and test multiple dependent Perl
>> module distributions?
>>
>>
>> TIA,
>>
>> David
>>
>>
>> p.s. I have posted similar threads to the module-authors and makemaker
>> lists, but haven't found a satisfactory solution:
>>
>>
https://www.nntp.perl.org/group/perl.module-authors/2018/11/msg10999.html
>>
>> https://www.nntp.perl.org/group/perl.makemaker/2018/12/msg3414.html
On 12/7/18 10:37 PM, Brad Lhotsky wrote:
> I've been using Dist::Zilla for my distributions and it makes things
> *so* much
> nicer.
>
> Here's David Golden's explanation why:
> https://xdg.me/blog/why-im-using-distzilla/
Thank you for replying. :-)
I evaluated Dist::Zilla several years ago. At the time, the complexity
didn't seem to be worth the effort. Perhaps, now it is.
> I still write out my dist.ini's, I should convert this workflow into a
> bundle,
> but I'm too lazy. Here's a sample:
>
> https://github.com/reyjrar/es-utils/blob/master/dist.ini
>
> If you were to clone that, you could:
>
> $ cpanm Dist::Zilla
> $ dzil authordeps --missing |cpanm
> $ dzil listdeps --missing |cpanm
>
> Then you could develop, and then `dzil test` to run the test suite, `dzil
> xtest` would run the author tests.
>
> Dist::Zilla + Pod::Weaver and it's taking care of:
> * Pointing META resources at GitHub
> * Automatically compiling and inserting into POD the Contributors
> * Dependencies
> * Managing the release versioning via git tags so all I need to do to
> release is `dzil release`
> * Generating a Changelog from the repository history
> * Gives me shorthand for POD with things like =method / =attr and
> collects/formats the POD
>
> And in this instance, it's pulling some of my POD out and injecting it into
> the repository so people on GitHub can view some of the documentation:
>
> https://github.com/reyjrar/es-utils/blob/master/CopyIndexes.mkdn
> https://github.com/reyjrar/es-utils/blob/master/Maintenance.mkdn
> https://github.com/reyjrar/es-utils/blob/master/Searching.mkdn
>
> All of that Markdown comes from the POD in the distribution and is
> automatically updated anytime I build/install/release.
Is es-utils available on CPAN?
> If Dist::Zilla is "too big," you can check out
> https://metacpan.org/pod/Minilla
The POD states:
"Minilla has a bold assumption and convention like the followings..."
"Your module is maintained with Git and git ls-files matches with
what you will release"
I would prefer a workflow model whereby the version control system (VCS)
is orthogonal -- e.g. I can use any VCS, including several at the same time.
If the concept of a tool is VCS integration, I would prefer that the
tool do so through VCS plug-in's (and support CVS).
> That's distributions, but if you wanna a mock your own CPAN for your
> distributions, there's Pinto.
>
> https://perlmaven.com/pinto-tutorial
I've tried at least one local, private CPAN repository work-around. The
fact that yet another has been created tells me that the root cause
problem(s) have not been completely identified nor addressed.
> Of course, there's a dzil plugin for indexing to your pinto install:
>
> https://metacpan.org/pod/Dist::Zilla::Plugin::Pinto::Add
>
> Now, for testing distributions separately, I've been using/testing Carton:
>
> https://metacpan.org/pod/Carton
A work-around for another fundamental problem (dependency hell).
> There's a write-up about using these tools together for micro-services
> deployment:
>
> https://engineering.semantics3.com/a-perl-toolchain-for-building-micro-services-at-scale-8851626a4b1b
It's interesting to read about a commercial Perl shop work flow. But,
there are at least two deal breakers for me:
1. Commercial services from GitHub.
2. Where is the code/ what is the license for "sem3 build"?
David
More information about the SanFrancisco-pm
mailing list