From dpchrist at holgerdanske.com Fri Dec 7 18:14:47 2018 From: dpchrist at holgerdanske.com (David Christensen) Date: Fri, 7 Dec 2018 18:14:47 -0800 Subject: [sf-perl] Tools and work flows for developing collections of distributions Message-ID: <9a63d6e9-cf1c-13e3-135e-8d7ba352e35a@holgerdanske.com> 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 From dpchrist at holgerdanske.com Sat Dec 8 10:11:52 2018 From: dpchrist at holgerdanske.com (David Christensen) Date: Sat, 8 Dec 2018 10:11:52 -0800 Subject: [sf-perl] Tools and work flows for developing collections of distributions In-Reply-To: <20181208063712.23qh6egmz5ikcgtw@deprecation.local> References: <9a63d6e9-cf1c-13e3-135e-8d7ba352e35a@holgerdanske.com> <20181208063712.23qh6egmz5ikcgtw@deprecation.local> Message-ID: <7b6a4f08-2ea6-9dae-d2fc-840af3cc8628@holgerdanske.com> > David Christensen 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