[sf-perl] ANNOUNCE: Dist::MultiMaker - maker for multiple libraries

Shlomi Fish shlomif at shlomifish.org
Wed May 15 02:47:06 PDT 2019


Hi David,

On Mon, 13 May 2019 13:11:37 -0700
David Christensen <dpchrist at holgerdanske.com> wrote:

> On 5/13/19 1:33 AM, Shlomi Fish wrote:
> > Hi David,  
> 
> Hi Shlomi.  Thank you for taking the time to look at my distribution.
> 
> 
> > On Sat, 11 May 2019 23:28:28 -0700
> > David Christensen <dpchrist at holgerdanske.com> wrote:
> >   
> >> hello, world!
> >>
> >> I have created a new Perl 5 library (distribution):
> >>
> >>       http://holgerdanske.com/pub/dpchrist/perl5/Dist-MultiMaker/
> >>
> >>
> >> Please review and comment.  
> > 
> > 1. It is good that the .html file does not require JS to be read.  
> 
> Agreed.
> 
> 
> > 2. This seems quite useful.  
> 
> I hope so -- I've been going around in circles for years trying to find 
> a light weight solution for building inter-dependent functions, modules, 
> and/or distributions.  The idea for this distribution grew out of a 
> solution Joe Brenner showed me (he has a massive PERL5LIB set by a 
> script that crawls his development tree).
> 
> 
> > 3. Does it accept "perl Makefile.PL" arguments?  
> 
> Yes -- arguments received by 'perl Makefile.PL' are passed through to 
> the recursive 'perl Makefile.PL' invocations.  At this point, the only 
> argument I am aware of is 'verbose' (per 'perldoc ExtUtils::MakeMaker):
> 

nice.

> 2019-05-13 12:51:41 dpchrist at tinkywinky 
> ~/src/perl5/Dist-MultiMaker/example/Lib/MultiMaker/AB
> $ 
> PERL5LIB=/home/dpchrist/perl5/lib/perl5:/home/dpchrist/src/perl5/Dist-MultiMaker/lib 
> && perl Makefile.PL verbose
> Reading file 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/Lib/MultiMaker/AB/.MultiMaker.opt'
> Reading file 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/Lib/MultiMaker/AB/.MultiMaker.PERL5LIB'
> Reading file 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/Lib/MultiMaker/AB/MANIFEST'
> Processing line '../../../A/Makefile.PL'
> Writing file 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/A/.MultiMaker.opt'
>    ABSTRACT_FROM => q[lib/Dist/MultiMaker/Example/A.pm]
>    AUTHOR => [q[David Paul Christensen <dpchrist at holgerdanske.com>]]
>    BUILD_REQUIRES => {  }
>    CONFIGURE_REQUIRES => {  }
>    INSTALL_BASE => q[/home/dpchrist/perl5]
>    LICENSE => q[perl]
>    NAME => q[Dist::MultiMaker::Example::A]
>    PREREQ_PM => {  }
>    TEST_REQUIRES => {  }
>    VERSION_FROM => q[lib/Dist/MultiMaker/Example/A.pm]
> Using PERL=/usr/bin/perl
> Generating a Unix-style Makefile
> Writing Makefile for Dist::MultiMaker::Example::A
> Writing MYMETA.yml and MYMETA.json
> Skip blib/lib/Dist/MultiMaker/Example/A.pm (unchanged)
> Manifying 1 pod document
> Reading file 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/Lib/MultiMaker/AB/MANIFEST'
> Processing line '../../../B/Makefile.PL'
> Writing file 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/B/.MultiMaker.opt'
>    ABSTRACT_FROM => q[lib/Dist/MultiMaker/Example/B.pm]
>    AUTHOR => [q[David Paul Christensen <dpchrist at holgerdanske.com>]]
>    BUILD_REQUIRES => {  }
>    CONFIGURE_REQUIRES => {  }
>    INSTALL_BASE => q[/home/dpchrist/perl5]
>    LICENSE => q[perl]
>    NAME => q[Dist::MultiMaker::Example::B]
>    PREREQ_PM => { Dist::MultiMaker::Example::A=>q[0] }
>    TEST_REQUIRES => {  }
>    VERSION_FROM => q[lib/Dist/MultiMaker/Example/B.pm]
> Using PERL=/usr/bin/perl
> Generating a Unix-style Makefile
> Writing Makefile for Dist::MultiMaker::Example::B
> Writing MYMETA.yml and MYMETA.json
> Skip blib/lib/Dist/MultiMaker/Example/B.pm (unchanged)
> Manifying 1 pod document
> Writing file 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/Lib/MultiMaker/AB/.MultiMaker.PERL5LIB'
> Writing file 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/Lib/MultiMaker/AB/Makefile'
> 
> 
> Similarly, arguments to 'make' are passed through:
> 
> 2019-05-13 12:51:49 dpchrist at tinkywinky 
> ~/src/perl5/Dist-MultiMaker/example/Lib/MultiMaker/AB
> $ make
> PERL5LIB=${PERL5LIB}:`cat .MultiMaker.PERL5LIB` && \
> for d in /home/dpchrist/src/perl5/Dist-MultiMaker/example/A 
> /home/dpchrist/src/perl5/Dist-MultiMaker/example/B ; do \
>      make -C $d all ; \
> done
> make[1]: Entering directory 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/A'
> Manifying 1 pod document
> make[1]: Leaving directory 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/A'
> make[1]: Entering directory 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/B'
> Manifying 1 pod document
> make[1]: Leaving directory 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/B'
> 
> 2019-05-13 13:08:59 dpchrist at tinkywinky 
> ~/src/perl5/Dist-MultiMaker/example/Lib/MultiMaker/AB
> $ make test TEST_VERBOSE=1
> PERL5LIB=${PERL5LIB}:`cat .MultiMaker.PERL5LIB` && \
> for d in /home/dpchrist/src/perl5/Dist-MultiMaker/example/A 
> /home/dpchrist/src/perl5/Dist-MultiMaker/example/B ; do \
>      make -C $d test ; \
> done
> make[1]: Entering directory 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/A'
> PERL_DL_NONLAZY=1 PERL_USE_UNSAFE_INC=1 "/usr/bin/perl" 
> "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef 
> *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t
> t/Dist-MultiMaker-Example-A.t ..
> 1..2
> ok 1 - use Dist::MultiMaker::Example::A;
> example_a called from main t/Dist-MultiMaker-Example-A.t 5
> ok 2
> ok
> All tests successful.
> Files=1, Tests=2,  0 wallclock secs ( 0.03 usr  0.01 sys +  0.03 cusr 
> 0.00 csys =  0.07 CPU)
> Result: PASS
> make[1]: Leaving directory 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/A'
> make[1]: Entering directory 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/B'
> PERL_DL_NONLAZY=1 PERL_USE_UNSAFE_INC=1 "/usr/bin/perl" 
> "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef 
> *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t
> t/Dist-MultiMaker-Example-B.t ..
> 1..2
> ok 1 - use Dist::MultiMaker::Example::B;
> example_b called from main t/Dist-MultiMaker-Example-B.t 5
> example_a called from Dist::MultiMaker::Example::B 
> /home/dpchrist/src/perl5/Dist-MultiMaker/example/B/blib/lib/Dist/MultiMaker/Example/B.pm 
> 19
> ok 2
> ok
> All tests successful.
> Files=1, Tests=2,  0 wallclock secs ( 0.03 usr  0.01 sys +  0.02 cusr 
> 0.00 csys =  0.06 CPU)
> Result: PASS
> make[1]: Leaving directory 
> '/home/dpchrist/src/perl5/Dist-MultiMaker/example/B'
> 
> 
> > 4. It reminds me of the symlinks' DSL I defined for
> > https://github.com/shlomif/shlomif-computer-settings/blob/master/shlomif-settings/setup-all/setup-all.pl
> >  
> 
> DSL?
> 

See https://en.wikipedia.org/wiki/Domain-specific_language

> 
> Could you please describe the concept of the script and/or show an 
> example of its use?
> 

See https://github.com/shlomif/shlomif-computer-settings/ - you can try running
the "wget https://shlom.in/setup && perl setup" procedure in a new user and/or
a new VM. It sets up a bunch of symlinks in ~ pointing to the configuration
resources.

For example:
https://github.com/shlomif/shlomif-computer-settings/blob/master/shlomif-settings/git/setup.symlinks.manifest.txt
.

> 
> David
> _______________________________________________
> SanFrancisco-pm mailing list
> SanFrancisco-pm at pm.org
> https://mail.pm.org/mailman/listinfo/sanfrancisco-pm



-- 
-----------------------------------------------------------------
Shlomi Fish       http://www.shlomifish.org/
http://www.shlomifish.org/open-source/resources/tech-tips/

Chuck’s idea of a short walk is to the Andromeda Galaxy and back.
    — http://www.shlomifish.org/humour/bits/facts/Chuck-Norris/

Please reply to list if it's a mailing list post - http://shlom.in/reply .


More information about the SanFrancisco-pm mailing list